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

[PATCH v5 0/3] Make test selection easier by specifying description substrings instead of just numeric counters

From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
Date
Oct 16, 2020, 22:50 UTC
Message-ID
<pull.878.v5.git.git.1602888652.gitgitgadget@gmail.com>
In-Reply-To
<pull.878.v4.git.git.1602876532.gitgitgadget@gmail.com>
This patch series enables me to change
 ./t9999-my-test.sh --run=1-3,5,17,19
into
 ./t9999-my-test.sh --run=setup,rename,symlink

and have it pick out tests with "setup", "rename", or "symlink" in their description and run those. Saves me a lot of time, especially since numbers for tests aren't readily accessible. The easiest way for me to get the numbers corresponding to the tests I want to run, is to run all the tests and look at the output to match up the descriptions with their numbers -- thus defeating the point of selecting just a subset of the tests to run in the first place.

Changes since v4:
 * Changed to only split tests on commas
Elijah Newren (3):
  test-lib: allow selecting tests by substring/glob with --run
  t6006, t6012: adjust tests to use 'setup' instead of synonyms
  test-lib: reduce verbosity of skipped tests
 t/README                     | 48 ++++++++++++++++++++------------
 t/t0000-basic.sh             | 53 +++++++++++++++++++++---------------
 t/t6006-rev-list-format.sh   |  2 +-
 t/t6012-rev-list-simplify.sh |  2 +-
 t/test-lib.sh                | 19 +++++++------
 5 files changed, 75 insertions(+), 49 deletions(-)
base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-878%2Fnewren%2Ftest-selection-v5
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-878/newren/test-selection-v5
Pull-Request: https://github.com/git/git/pull/878
Range-diff vs v4:
 1:  8f5d4ad318 ! 1:  389c2c171a test-lib: allow selecting tests by substring/glob with --run
     @@ t/README: For an individual test suite --run could be used to specify that
      +ends been included.  You may omit the first or the second number to
      +mean "from the first test" or "up to the very last test" respectively.
      +
     -+The argument to --run is split on commas and whitespace into separate
     -+strings, numbers, and ranges, and picks all tests that match any of
     -+the individual selection criteria.  If the substring of the
     -+description text that you want to match includes a comma or space, use
     -+the glob character '?' instead.  For example --run='unnecessary?update
     -+timing' would match on all tests that match either the glob
     -+*unnecessary?update* or the glob *timing*.
     ++The argument to --run is split on commas into separate strings,
     ++numbers, and ranges, and picks all tests that match any of the
     ++individual selection criteria.  If the substring of the description
     ++text that you want to match includes a comma, use the glob character
     ++'?' instead.  For example --run='rebase,merge?cherry-pick' would match
     ++on all tests that match either the glob *rebase* or the glob
     ++*merge?cherry-pick*.
       
       If --run starts with an unprefixed number or range the initial
       set of tests to run is empty. If the first item starts with '!'
     +@@ t/README: all the tests are added to the initial set.  After initial set is
     + determined every test number or range is added or excluded from
     + the set one by one, from left to right.
     + 
     +-Individual numbers or ranges could be separated either by a space
     +-or a comma.
     +-
     + For example, to run only tests up to a specific test (21), one
     + could do this:
     + 
     +@@ t/README: or this:
     + Common case is to run several setup tests (1, 2, 3) and then a
     + specific test (21) that relies on that setup:
     + 
     +-    $ sh ./t9200-git-cvsexport-commit.sh --run='1 2 3 21'
     ++    $ sh ./t9200-git-cvsexport-commit.sh --run='1,2,3,21'
     + 
     + or:
     + 
     +@@ t/README: or:
     + 
     + or:
     + 
     +-    $ sh ./t9200-git-cvsexport-commit.sh --run='-3 21'
     ++    $ sh ./t9200-git-cvsexport-commit.sh --run='-3,21'
     + 
     + As noted above, the test set is built by going through the items
     + from left to right, so this:
     + 
     +-    $ sh ./t9200-git-cvsexport-commit.sh --run='1-4 !3'
     ++    $ sh ./t9200-git-cvsexport-commit.sh --run='1-4,!3'
     + 
     + will run tests 1, 2, and 4.  Items that come later have higher
     + precedence.  It means that this:
     + 
     +-    $ sh ./t9200-git-cvsexport-commit.sh --run='!3 1-4'
     ++    $ sh ./t9200-git-cvsexport-commit.sh --run='!3,1-4'
     + 
     + would just run tests from 1 to 4, including 3.
     + 
      @@ t/README: test in the test suite except from 7 up to 11:
       
           $ sh ./t9200-git-cvsexport-commit.sh --run='!7-11'
     @@ t/README: test in the test suite except from 7 up to 11:
       "setup" test, so you cannot _arbitrarily_ disable one test and
      
       ## t/t0000-basic.sh ##
     +@@ t/t0000-basic.sh: test_expect_success 'GIT_SKIP_TESTS does not skip unmatched suite' "
     + 
     + test_expect_success '--run basic' "
     + 	run_sub_test_lib_test run-basic \
     +-		'--run basic' --run='1 3 5' <<-\\EOF &&
     ++		'--run basic' --run='1,3,5' <<-\\EOF &&
     + 	for i in 1 2 3 4 5 6
     + 	do
     + 		test_expect_success \"passing test #\$i\" 'true'
     +@@ t/t0000-basic.sh: test_expect_success '--run with a range' "
     + 
     + test_expect_success '--run with two ranges' "
     + 	run_sub_test_lib_test run-two-ranges \
     +-		'--run with two ranges' --run='1-2 5-6' <<-\\EOF &&
     ++		'--run with two ranges' --run='1-2,5-6' <<-\\EOF &&
     + 	for i in 1 2 3 4 5 6
     + 	do
     + 		test_expect_success \"passing test #\$i\" 'true'
     +@@ t/t0000-basic.sh: test_expect_success '--run with basic negation' "
     + 
     + test_expect_success '--run with two negations' "
     + 	run_sub_test_lib_test run-two-neg \
     +-		'--run with two negations' --run='"'!3 !6'"' <<-\\EOF &&
     ++		'--run with two negations' --run='"'!3,!6'"' <<-\\EOF &&
     + 	for i in 1 2 3 4 5 6
     + 	do
     + 		test_expect_success \"passing test #\$i\" 'true'
     +@@ t/t0000-basic.sh: test_expect_success '--run with two negations' "
     + 
     + test_expect_success '--run a range and negation' "
     + 	run_sub_test_lib_test run-range-and-neg \
     +-		'--run a range and negation' --run='"'-4 !2'"' <<-\\EOF &&
     ++		'--run a range and negation' --run='"'-4,!2'"' <<-\\EOF &&
     + 	for i in 1 2 3 4 5 6
     + 	do
     + 		test_expect_success \"passing test #\$i\" 'true'
     +@@ t/t0000-basic.sh: test_expect_success '--run range negation' "
     + test_expect_success '--run include, exclude and include' "
     + 	run_sub_test_lib_test run-inc-neg-inc \
     + 		'--run include, exclude and include' \
     +-		--run='"'1-5 !1-3 2'"' <<-\\EOF &&
     ++		--run='"'1-5,!1-3,2'"' <<-\\EOF &&
     + 	for i in 1 2 3 4 5 6
     + 	do
     + 		test_expect_success \"passing test #\$i\" 'true'
     +@@ t/t0000-basic.sh: test_expect_success '--run include, exclude and include, comma separated' "
     + test_expect_success '--run exclude and include' "
     + 	run_sub_test_lib_test run-neg-inc \
     + 		'--run exclude and include' \
     +-		--run='"'!3- 5'"' <<-\\EOF &&
     ++		--run='"'!3-,5'"' <<-\\EOF &&
     + 	for i in 1 2 3 4 5 6
     + 	do
     + 		test_expect_success \"passing test #\$i\" 'true'
      @@ t/t0000-basic.sh: test_expect_success '--run empty selectors' "
       	EOF
       "
     @@ t/test-lib.sh: match_pattern_list () {
       	title="$1"
       	shift
       	arg="$1"
     +@@ t/test-lib.sh: match_test_selector_list () {
     + 
     + 	# Both commas and whitespace are accepted as separators.
     + 	OLDIFS=$IFS
     +-	IFS=' 	,'
     ++	IFS=','
     + 	set -- $1
     + 	IFS=$OLDIFS
     + 
      @@ t/test-lib.sh: match_test_selector_list () {
       			*-*)
       				if expr "z${selector%%-*}" : "z[0-9]*[^0-9]" >/dev/null
 2:  bbae029cc8 = 2:  7c7a3d9a34 t6006, t6012: adjust tests to use 'setup' instead of synonyms
 3:  0e1a1125f7 = 3:  01494bc0ba test-lib: reduce verbosity of skipped tests
-- 
gitgitgadget
Previous: Elijah NewrenNext: Elijah Newren via GitGitGadget
Message 62 of 71 in “Make test selection easier by specifying description substrings instead of just numeric counters”
  1. 0/3 Make test selection easier by specifying description substrings instead of just numeric countersElijah Newren via GitGitGadget, Oct 12, 2020
  2. 1/3 test-lib: allow selecting tests by substring/regex with --runElijah Newren via GitGitGadget, Oct 12, 2020
  3. Taylor BlauOct 13, 2020
  4. Elijah NewrenOct 13, 2020
  5. Taylor BlauOct 13, 2020
  6. Elijah NewrenOct 13, 2020
  7. 3/3 test-lib: reduce verbosity of skipped testsElijah Newren via GitGitGadget, Oct 12, 2020
  8. Taylor BlauOct 13, 2020
  9. Elijah NewrenOct 13, 2020
  10. Junio C HamanoOct 13, 2020
  11. 2/3 t6006, t6012: adjust tests to use 'setup' instead of synonymsElijah Newren via GitGitGadget, Oct 12, 2020
  12. Phillip WoodOct 13, 2020
  13. Johannes SchindelinOct 15, 2020
  14. Phillip WoodOct 15, 2020
  15. 0/3 Make test selection easier by specifying description substrings instead of just numeric countersElijah Newren via GitGitGadget, Oct 13, 2020
  16. 1/3 test-lib: allow selecting tests by substring/regex with --runElijah Newren via GitGitGadget, Oct 13, 2020
  17. Jeff KingOct 14, 2020
  18. Junio C HamanoOct 14, 2020
  19. Jeff KingOct 14, 2020
  20. Junio C HamanoOct 14, 2020
  21. Elijah NewrenOct 14, 2020
  22. Jeff KingOct 14, 2020
  23. Junio C HamanoOct 15, 2020
  24. Junio C HamanoOct 15, 2020
  25. Elijah NewrenOct 14, 2020
  26. Junio C HamanoOct 14, 2020
  27. Elijah NewrenOct 14, 2020
  28. Junio C HamanoOct 15, 2020
  29. Jeff KingOct 14, 2020
  30. Elijah NewrenOct 14, 2020
  31. Junio C HamanoOct 15, 2020
  32. Jeff KingOct 15, 2020
  33. Junio C HamanoOct 15, 2020
  34. Jeff KingOct 16, 2020
  35. Junio C HamanoOct 16, 2020
  36. Junio C HamanoOct 16, 2020
  37. Jeff KingOct 16, 2020
  38. Junio C HamanoOct 16, 2020
  39. 2/3 t6006, t6012: adjust tests to use 'setup' instead of synonymsElijah Newren via GitGitGadget, Oct 13, 2020
  40. 3/3 test-lib: reduce verbosity of skipped testsElijah Newren via GitGitGadget, Oct 13, 2020
  41. Jeff KingOct 14, 2020
  42. Elijah NewrenOct 14, 2020
  43. Jeff KingOct 14, 2020
  44. Elijah NewrenOct 14, 2020
  45. Taylor BlauOct 13, 2020
  46. 0/3 Make test selection easier by specifying description substrings instead of just numeric countersElijah Newren via GitGitGadget, Oct 14, 2020
  47. 2/3 t6006, t6012: adjust tests to use 'setup' instead of synonymsElijah Newren via GitGitGadget, Oct 14, 2020
  48. 3/3 test-lib: reduce verbosity of skipped testsElijah Newren via GitGitGadget, Oct 14, 2020
  49. 1/3 test-lib: allow selecting tests by substring/glob with --runElijah Newren via GitGitGadget, Oct 14, 2020
  50. Phillip WoodOct 16, 2020
  51. Elijah NewrenOct 16, 2020
  52. Phillip WoodOct 16, 2020
  53. Junio C HamanoOct 16, 2020
  54. Jeff KingOct 16, 2020
  55. Jeff KingOct 15, 2020
  56. 0/3 Make test selection easier by specifying description substrings instead of just numeric countersElijah Newren via GitGitGadget, Oct 16, 2020
  57. 1/3 test-lib: allow selecting tests by substring/glob with --runElijah Newren via GitGitGadget, Oct 16, 2020
  58. 3/3 test-lib: reduce verbosity of skipped testsElijah Newren via GitGitGadget, Oct 16, 2020
  59. 2/3 t6006, t6012: adjust tests to use 'setup' instead of synonymsElijah Newren via GitGitGadget, Oct 16, 2020
  60. Junio C HamanoOct 16, 2020
  61. Elijah NewrenOct 16, 2020
  62. 0/3 Make test selection easier by specifying description substrings instead of just numeric countersElijah Newren via GitGitGadget, Oct 16, 2020
  63. 2/3 t6006, t6012: adjust tests to use 'setup' instead of synonymsElijah Newren via GitGitGadget, Oct 16, 2020
  64. 3/3 test-lib: reduce verbosity of skipped testsElijah Newren via GitGitGadget, Oct 16, 2020
  65. 1/3 test-lib: allow selecting tests by substring/glob with --runElijah Newren via GitGitGadget, Oct 16, 2020
  66. Andrei RybakOct 16, 2020
  67. Elijah NewrenOct 17, 2020
  68. 0/3 Make test selection easier by specifying description substrings instead of just numeric countersElijah Newren via GitGitGadget, Oct 18, 2020
  69. 1/3 test-lib: allow selecting tests by substring/glob with --runElijah Newren via GitGitGadget, Oct 18, 2020
  70. 2/3 t6006, t6012: adjust tests to use 'setup' instead of synonymsElijah Newren via GitGitGadget, Oct 18, 2020
  71. 3/3 test-lib: reduce verbosity of skipped testsElijah Newren via GitGitGadget, Oct 18, 2020

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.