git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/7] t5520: implement tests for no merge candidates cases

From
Paul Tan <pyokagan@gmail.com>
Date
May 2, 2015, 15:37 UTC
Message-ID
<1430581035-29464-3-git-send-email-pyokagan@gmail.com>
In-Reply-To
<1430581035-29464-1-git-send-email-pyokagan@gmail.com>

Commit a8c9bef4 fully established the current advices given by git-pull for the different cases where git-fetch will not have anything marked for merge:

1. We're not on a branch, so there is no branch
   configuration.
2. We're on a branch, but there is no configuration for
   this branch.
3. We fetched from the configured remote, but the
   configured branch to merge didn't get fetched (either
   it doesn't exist, or wasn't part of the fetch refspec).
4. We fetched from the non-default remote, but didn't
   specify a branch to merge. We can't use the configured
   one because it applies to the default remote.
5. We fetched from a specified remote, and a refspec was
   given, but it ended up not fetching anything.

Implement tests for the above 5 cases to ensure that the correct code paths are triggered for each of these cases.

Signed-off-by: Paul Tan <pyokagan@gmail.com>
---

I'm having trouble hitting the 1st case without resorting to the hack below. A detached HEAD will always have no remote configured, and the code flow would make it such that case (4) is hit in the detached HEAD case instead of case (1).

 t/t5520-pull.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
index 01ae1bf..635ec02 100755
--- a/t/t5520-pull.sh
+++ b/t/t5520-pull.sh
@@ -122,6 +122,58 @@ test_expect_success 'the default remote . should not break explicit pull' '
 	test `cat file` = modified
 '
 
+test_expect_success 'fail if not on a branch' '
+	cp .git/config .git/config.bak &&
+	test_when_finished "cp .git/config.bak .git/config" &&
+	git remote add test_remote . &&
+	git checkout HEAD^{} &&
+	test_when_finished "git checkout -f copy" &&
+	cat >>.git/config <<-\EOF &&
+	[branch ""]
+	remote = test_remote
+	EOF
+	test_must_fail git pull test_remote 2>out &&
+	test_i18ngrep "You are not currently on a branch" out
+'
+
+test_expect_success 'fail if no configuration for current branch' '
+	git remote add test_remote . &&
+	test_when_finished "git remote remove test_remote" &&
+	git checkout -b test copy &&
+	test_when_finished "git checkout -f copy && git branch -D test" &&
+	test_config branch.test.remote test_remote &&
+	test_must_fail git pull 2>out &&
+	test_i18ngrep "There is no tracking information" out
+'
+
+test_expect_success 'fail if upstream branch does not exist' "
+	git checkout -b test copy &&
+	test_when_finished 'git checkout -f copy && git branch -D test' &&
+	test_config branch.test.remote . &&
+	test_config branch.test.merge refs/heads/nonexisting &&
+	test_must_fail git pull 2>out &&
+	test_i18ngrep \"Your configuration specifies to merge with the ref 'nonexisting'\" out
+"
+
+test_expect_success 'fail if no branches specified with non-default remote' '
+	git clone --bare . test_repo &&
+	test_when_finished "rm -rf test_repo" &&
+	git remote add test_remote test_repo &&
+	test_when_finished "git remote remove test_remote" &&
+	git checkout -b test master &&
+	test_when_finished "git checkout -f master && git branch -D test" &&
+	test_config branch.test.remote . &&
+	test_must_fail git pull test_remote 2>out &&
+	test_i18ngrep "you must specify a branch on the command line" out
+'
+
+test_expect_success 'fail if wildcard spec does not match any refs' "
+	git checkout -b test copy &&
+	test_when_finished 'git checkout -f copy && git branch -D test' &&
+	test_must_fail git pull . 'refs/nonexisting1/*:refs/nonexisting2/*' 2>out &&
+	test_i18ngrep 'There are no candidates for merging' out
+"
+
 test_expect_success '--rebase' '
 	git branch to-rebase &&
 	echo modified again > file &&
-- 
2.1.4
Previous: Paul TanNext: Matthieu Moy
Message 3 of 21 in “Improve git-pull test coverage”
  1. 0/7 Improve git-pull test coveragePaul Tan, May 2, 2015
  2. 1/7 t5520: test pulling multiple branches into an empty repositoryPaul Tan, May 2, 2015
  3. 2/7 t5520: implement tests for no merge candidates casesPaul Tan, May 2, 2015
  4. Matthieu MoyMay 4, 2015
  5. Paul TanMay 6, 2015
  6. Paul TanMay 6, 2015
  7. 3/7 t5520: test for failure if index has unresolved entriesPaul Tan, May 2, 2015
  8. Matthieu MoyMay 4, 2015
  9. 4/7 t5520: test work tree fast-forward when fetch updates headPaul Tan, May 2, 2015
  10. Eric SunshineMay 3, 2015
  11. Paul TanMay 3, 2015
  12. 5/7 t5520: test --rebase with multiple branchesPaul Tan, May 2, 2015
  13. Stefan BellerMay 4, 2015
  14. Junio C HamanoMay 4, 2015
  15. Paul TanMay 5, 2015
  16. 6/7 t5520: test --rebase failure on unborn branch with indexPaul Tan, May 2, 2015
  17. 7/7 t5521: test --dry-run does not make any changesPaul Tan, May 2, 2015
  18. Matthieu MoyMay 4, 2015
  19. Junio C HamanoMay 4, 2015
  20. Paul TanMay 5, 2015
  21. Paul TanMay 6, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.