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

[PATCH v2 06/10] t7006: add tests for how git tag paginates

From
MÅMartin Ågren <martin.agren@gmail.com>
Date
Jul 17, 2017, 20:10 UTC
Message-ID
<f4334503b677bbbeb19660e501ad2d7213428953.1500321658.git.martin.agren@gmail.com>
In-Reply-To
<cover.1500321657.git.martin.agren@gmail.com>

Using, e.g., `git -c pager.tag tag -a new-tag` results in errors such as "Vim: Warning: Output is not to a terminal" and a garbled terminal. A user who makes use of `git tag -a` and `git tag -l` will probably choose not to configure `pager.tag` or to set it to "no", so that `git tag -a` will actually work, at the cost of not getting the pager with `git tag -l`.

Since we're about to change how `git tag` respects `pager.tag`, add tests around this, including how the configuration is ignored if --no-pager or --paginate are used.

Construct tests with a few different subcommands. First, use -l. Second, use "no arguments" and --contains, since those imply -l. (There are more arguments which imply -l, but using these two should be enough.) Third, use -a as a representative for "not -l".

Make one of the tests demonstrate the behavior mentioned above, where `git tag -a` respects `pager.tag`. Actually, the tests use `git tag -am` so no editor is launched, but that is irrelevant, since we just want to see whether the pager is used or not.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
---
 t/t7006-pager.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh
index 20b4d83c2..e7430bc93 100755
--- a/t/t7006-pager.sh
+++ b/t/t7006-pager.sh
@@ -134,6 +134,74 @@ test_expect_success TTY 'configuration can enable pager (from subdir)' '
 	}
 '
 
+test_expect_success TTY 'git tag -l defaults to not paging' '
+	rm -f paginated.out &&
+	test_terminal git tag -l &&
+	! test -e paginated.out
+'
+
+test_expect_success TTY 'git tag -l respects pager.tag' '
+	rm -f paginated.out &&
+	test_terminal git -c pager.tag tag -l &&
+	test -e paginated.out
+'
+
+test_expect_success TTY 'git tag -l respects --no-pager' '
+	rm -f paginated.out &&
+	test_terminal git -c pager.tag --no-pager tag -l &&
+	! test -e paginated.out
+'
+
+test_expect_success TTY 'git tag with no args defaults to not paging' '
+	# no args implies -l so this should page like -l
+	rm -f paginated.out &&
+	test_terminal git tag &&
+	! test -e paginated.out
+'
+
+test_expect_success TTY 'git tag with no args respects pager.tag' '
+	# no args implies -l so this should page like -l
+	rm -f paginated.out &&
+	test_terminal git -c pager.tag tag &&
+	test -e paginated.out
+'
+
+test_expect_success TTY 'git tag --contains defaults to not paging' '
+	# --contains implies -l so this should page like -l
+	rm -f paginated.out &&
+	test_terminal git tag --contains &&
+	! test -e paginated.out
+'
+
+test_expect_success TTY 'git tag --contains respects pager.tag' '
+	# --contains implies -l so this should page like -l
+	rm -f paginated.out &&
+	test_terminal git -c pager.tag tag --contains &&
+	test -e paginated.out
+'
+
+test_expect_success TTY 'git tag -a defaults to not paging' '
+	test_when_finished "git tag -d newtag" &&
+	rm -f paginated.out &&
+	test_terminal git tag -am message newtag &&
+	! test -e paginated.out
+'
+
+test_expect_success TTY 'git tag -a respects pager.tag' '
+	test_when_finished "git tag -d newtag" &&
+	rm -f paginated.out &&
+	test_terminal git -c pager.tag tag -am message newtag &&
+	test -e paginated.out
+'
+
+test_expect_success TTY 'git tag -a respects --paginate' '
+	test_when_finished "git tag -d newtag" &&
+	rm -f paginated.out &&
+	test_terminal git -c pager.tag=false --paginate \
+		tag -am message newtag &&
+	test -e paginated.out
+'
+
 # A colored commit log will begin with an appropriate ANSI escape
 # for the first color; the text "commit" comes later.
 colorful() {
-- 
2.14.0.rc0
Previous: Junio C HamanoNext: Jeff King
Message 36 of 69 in “tag: more fine-grained pager-configuration”
  1. 0/7 tag: more fine-grained pager-configurationMartin Ågren, Jul 10, 2017
  2. 1/7 api-builtin.txt: document SUPPORT_SUPER_PREFIXMartin Ågren, Jul 10, 2017
  3. Brandon WilliamsJul 10, 2017
  4. Martin ÅgrenJul 11, 2017
  5. Brandon WilliamsJul 11, 2017
  6. 2/7 git.c: let builtins opt for handling `pager.foo` themselvesMartin Ågren, Jul 10, 2017
  7. Jeff KingJul 11, 2017
  8. Martin ÅgrenJul 11, 2017
  9. Jeff KingJul 11, 2017
  10. 3/7 git.c: provide setup_auto_pager()Martin Ågren, Jul 10, 2017
  11. Jeff KingJul 11, 2017
  12. Martin ÅgrenJul 11, 2017
  13. 4/7 t7006: add tests for how git tag paginatesMartin Ågren, Jul 10, 2017
  14. 6/7 tag: make git tag -l consider new config `pager.tag.list`Martin Ågren, Jul 10, 2017
  15. Jeff KingJul 11, 2017
  16. Martin ÅgrenJul 11, 2017
  17. 5/7 tag: handle `pager.tag`-configuration within the builtinMartin Ågren, Jul 10, 2017
  18. Jeff KingJul 11, 2017
  19. 7/7 tag: make git tag -l use pager by defaultMartin Ågren, Jul 10, 2017
  20. Jeff KingJul 11, 2017
  21. Junio C HamanoJul 10, 2017
  22. Jeff KingJul 11, 2017
  23. Junio C HamanoJul 11, 2017
  24. Martin ÅgrenJul 12, 2017
  25. Jeff KingJul 11, 2017
  26. Martin ÅgrenJul 11, 2017
  27. Jeff KingJul 11, 2017
  28. 00/10 tag: only respect `pager.tag` in list-modeMartin Ågren, Jul 17, 2017
  29. 01/10 builtin.h: take over documentation from api-builtin.txtMartin Ågren, Jul 17, 2017
  30. 02/10 builtin.h: format documentation-comment properlyMartin Ågren, Jul 17, 2017
  31. 03/10 builtin.h: document SUPPORT_SUPER_PREFIXMartin Ågren, Jul 17, 2017
  32. 04/10 git.c: let builtins opt for handling `pager.foo` themselvesMartin Ågren, Jul 17, 2017
  33. 05/10 git.c: provide setup_auto_pager()Martin Ågren, Jul 17, 2017
  34. Jeff KingJul 31, 2017
  35. Junio C HamanoJul 31, 2017
  36. 06/10 t7006: add tests for how git tag paginatesMartin Ågren, Jul 17, 2017
  37. Jeff KingJul 31, 2017
  38. Junio C HamanoJul 31, 2017
  39. Martin ÅgrenJul 31, 2017
  40. 07/10 tag: handle `pager.tag`-configuration within the builtinMartin Ågren, Jul 17, 2017
  41. 08/10 tag: respect `pager.tag` in list-mode onlyMartin Ågren, Jul 17, 2017
  42. Jeff KingJul 31, 2017
  43. 09/10 tag: change default of `pager.tag` to "on"Martin Ågren, Jul 17, 2017
  44. 10/10 git.c: ignore pager.* when launching builtin as dashed externalMartin Ågren, Jul 17, 2017
  45. Jeff KingJul 31, 2017
  46. Martin ÅgrenJul 31, 2017
  47. Junio C HamanoJul 18, 2017
  48. Junio C HamanoJul 20, 2017
  49. Martin ÅgrenJul 23, 2017
  50. Jeff KingJul 31, 2017
  51. Martin ÅgrenJul 31, 2017
  52. Jeff KingJul 31, 2017
  53. Junio C HamanoJul 31, 2017
  54. 0/7 tag: only respect `pager.tag` in list-modeMartin Ågren, Aug 2, 2017
  55. 1/7 builtin.h: take over documentation from api-builtin.txtMartin Ågren, Aug 2, 2017
  56. Junio C HamanoAug 3, 2017
  57. Martin ÅgrenAug 4, 2017
  58. Junio C HamanoAug 4, 2017
  59. Martin ÅgrenAug 4, 2017
  60. 2/7 git.c: let builtins opt for handling `pager.foo` themselvesMartin Ågren, Aug 2, 2017
  61. 3/7 git.c: provide setup_auto_pager()Martin Ågren, Aug 2, 2017
  62. 4/7 t7006: add tests for how git tag paginatesMartin Ågren, Aug 2, 2017
  63. 5/7 tag: respect `pager.tag` in list-mode onlyMartin Ågren, Aug 2, 2017
  64. 6/7 tag: change default of `pager.tag` to "on"Martin Ågren, Aug 2, 2017
  65. 7/7 git.c: ignore pager.* when launching builtin as dashed externalMartin Ågren, Aug 2, 2017
  66. Junio C HamanoAug 3, 2017
  67. Jeff KingAug 3, 2017
  68. Martin ÅgrenAug 4, 2017
  69. Jeff KingAug 4, 2017

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.