@@ -117,13 +117,40 @@ void test_revwalk_hidecb__hide_none_cb(void)
117117 git_revwalk_free (walk );
118118}
119119
120- void test_revwalk_hidecb__add_hide_cb_multiple_times (void )
120+ void test_revwalk_hidecb__unset_cb_before_walk (void )
121121{
122122 git_revwalk * walk ;
123+ git_oid id ;
124+ int i , error ;
125+
126+ cl_git_pass (git_revwalk_new (& walk , _repo ));
127+ cl_git_pass (git_revwalk_add_hide_cb (walk , hide_every_commit_cb , NULL ));
128+ cl_git_pass (git_revwalk_add_hide_cb (walk , NULL , NULL ));
129+ cl_git_pass (git_revwalk_push (walk , & _head_id ));
130+
131+ /* It should return all 6 commits */
132+ i = 0 ;
133+ while ((error = git_revwalk_next (& id , walk )) == 0 )
134+ i ++ ;
135+
136+ cl_assert_equal_i (i , 6 );
137+ cl_assert_equal_i (error , GIT_ITEROVER );
138+
139+ git_revwalk_free (walk );
140+ }
141+
142+ void test_revwalk_hidecb__change_cb_before_walk (void )
143+ {
144+ git_revwalk * walk ;
145+ git_oid id ;
123146
124147 cl_git_pass (git_revwalk_new (& walk , _repo ));
148+ cl_git_pass (git_revwalk_add_hide_cb (walk , hide_none_cb , NULL ));
125149 cl_git_pass (git_revwalk_add_hide_cb (walk , hide_every_commit_cb , NULL ));
126- cl_git_fail (git_revwalk_add_hide_cb (walk , hide_every_commit_cb , NULL ));
150+ cl_git_pass (git_revwalk_push (walk , & _head_id ));
151+
152+ /* First call to git_revwalk_next should return GIT_ITEROVER */
153+ cl_assert_equal_i (GIT_ITEROVER , git_revwalk_next (& id , walk ));
127154
128155 git_revwalk_free (walk );
129156}
0 commit comments