diff options
author | Russell Belfer <rb@github.com> | 2014-03-12 11:21:55 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2014-03-12 11:21:55 -0700 |
commit | 5302a88538c870028f2623b099c66c800f5cfe68 (patch) | |
tree | 473517cf5e447c8cc25e5e2430ac6d640bafb910 /tests/revwalk/basic.c | |
parent | 9af14886a94ca4d08c7af1ba84b21cba40fce34c (diff) | |
download | libgit2-5302a88538c870028f2623b099c66c800f5cfe68.tar.gz |
Fix pqueue sort boundary condition bug
If the pqueue comparison fn returned just 0 or 1 (think "a<b")
then the sort order of returned items could be wrong because there
was a "< 0" that really needed to be "<= 0". Yikes!!!
Diffstat (limited to 'tests/revwalk/basic.c')
-rw-r--r-- | tests/revwalk/basic.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 9fe8a350b..7e08c1840 100644 --- a/tests/revwalk/basic.c +++ b/tests/revwalk/basic.c @@ -290,3 +290,62 @@ void test_revwalk_basic__push_all(void) /* git rev-list --count --all #=> 15 */ cl_assert_equal_i(15, i); } + +/* +* $ git rev-list br2 master e908 +* a65fedf39aefe402d3bb6e24df4d4f5fe4547750 +* e90810b8df3e80c413d903f631643c716887138d +* 6dcf9bf7541ee10456529833502442f385010c3d +* a4a7dce85cf63874e984719f4fdd239f5145052f +* be3563ae3f795b2b4353bcce3a527ad0a4f7f644 +* c47800c7266a2be04c571c04d5a6614691ea99bd +* 9fd738e8f7967c078dceed8190330fc8648ee56a +* 4a202b346bb0fb0db7eff3cffeb3c70babbd2045 +* 5b5b025afb0b4c913b4c338a42934a3863bf3644 +* 8496071c1b46c854b31185ea97743be6a8774479 +*/ + +void test_revwalk_basic__mimic_git_rev_list(void) +{ + git_oid oid; + + revwalk_basic_setup_walk(NULL); + git_revwalk_sorting(_walk, GIT_SORT_TIME); + + cl_git_pass(git_revwalk_push_ref(_walk, "refs/heads/br2")); + cl_git_pass(git_revwalk_push_ref(_walk, "refs/heads/master")); + cl_git_pass(git_oid_fromstr(&oid, "e90810b8df3e80c413d903f631643c716887138d")); + cl_git_pass(git_revwalk_push(_walk, &oid)); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "a65fedf39aefe402d3bb6e24df4d4f5fe4547750")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "e90810b8df3e80c413d903f631643c716887138d")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "6dcf9bf7541ee10456529833502442f385010c3d")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "a4a7dce85cf63874e984719f4fdd239f5145052f")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "be3563ae3f795b2b4353bcce3a527ad0a4f7f644")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "c47800c7266a2be04c571c04d5a6614691ea99bd")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "9fd738e8f7967c078dceed8190330fc8648ee56a")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "4a202b346bb0fb0db7eff3cffeb3c70babbd2045")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "5b5b025afb0b4c913b4c338a42934a3863bf3644")); + + cl_git_pass(git_revwalk_next(&oid, _walk)); + cl_assert(!git_oid_streq(&oid, "8496071c1b46c854b31185ea97743be6a8774479")); + + cl_git_fail_with(git_revwalk_next(&oid, _walk), GIT_ITEROVER); +} |