From b4ef67d5ebc55943073d7baacd91f46c20d9ccf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 1 Feb 2014 15:11:00 +0100 Subject: revwalk: add a failing test for pushing "tags" This shows that pusing a whole namespace can be problematic. --- tests/revwalk/basic.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tests') diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 6d55aed54..4621ab8ff 100644 --- a/tests/revwalk/basic.c +++ b/tests/revwalk/basic.c @@ -252,3 +252,13 @@ void test_revwalk_basic__push_range(void) cl_git_pass(git_revwalk_push_range(_walk, "9fd738e~2..9fd738e")); cl_git_pass(test_walk_only(_walk, commit_sorting_segment, 1)); } + +void test_revwalk_basic__push_mixed(void) +{ + revwalk_basic_setup_walk(NULL); + + git_revwalk_reset(_walk); + git_revwalk_sorting(_walk, 0); + cl_git_pass(git_revwalk_push_glob(_walk, "tags")); + cl_git_pass(test_walk_only(_walk, commit_sorting_segment, 1)); +} -- cgit v1.2.3 From d465e4e980333b3e7437801fc375b595fb3adf1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 1 Feb 2014 15:19:13 +0100 Subject: revwalk: ignore wrong object type in glob pushes Pushing a whole namespace can cause us to attempt to push non-committish objects. Catch this situation and special-case it for ignoring this. --- tests/revwalk/basic.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 4621ab8ff..4d6522c1c 100644 --- a/tests/revwalk/basic.c +++ b/tests/revwalk/basic.c @@ -255,10 +255,19 @@ void test_revwalk_basic__push_range(void) void test_revwalk_basic__push_mixed(void) { + git_oid oid; + int i = 0; + revwalk_basic_setup_walk(NULL); git_revwalk_reset(_walk); git_revwalk_sorting(_walk, 0); cl_git_pass(git_revwalk_push_glob(_walk, "tags")); - cl_git_pass(test_walk_only(_walk, commit_sorting_segment, 1)); + + while (git_revwalk_next(&oid, _walk) == 0) { + i++; + } + + /* git rev-list --count --glob=tags #=> 9 */ + cl_assert_equal_i(9, i); } -- cgit v1.2.3 From d18209eef9a7fbbccb495b6e5450d14a76623847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 1 Feb 2014 16:27:42 +0100 Subject: revwalk: add a test for pushing all references This used to be broken, let's make sure we don't break this use-case. --- tests/revwalk/basic.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests') diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 4d6522c1c..9fe8a350b 100644 --- a/tests/revwalk/basic.c +++ b/tests/revwalk/basic.c @@ -271,3 +271,22 @@ void test_revwalk_basic__push_mixed(void) /* git rev-list --count --glob=tags #=> 9 */ cl_assert_equal_i(9, i); } + +void test_revwalk_basic__push_all(void) +{ + git_oid oid; + int i = 0; + + revwalk_basic_setup_walk(NULL); + + git_revwalk_reset(_walk); + git_revwalk_sorting(_walk, 0); + cl_git_pass(git_revwalk_push_glob(_walk, "*")); + + while (git_revwalk_next(&oid, _walk) == 0) { + i++; + } + + /* git rev-list --count --all #=> 15 */ + cl_assert_equal_i(15, i); +} -- cgit v1.2.3