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 v2: * Use a glob rather than a regex for selecting tests * Touched up the commit message in patch 3 to mention that the TAP output line is still included for skipped tests and already included the word "skip" to highlight the fact that the test was skipped. * Fixed a bug where -run="!rename" would run all tests instead of skipping the ones with 'rename' in the description 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 | 29 ++++++++++++++++--------- t/t0000-basic.sh | 41 ++++++++++++++++++++++-------------- t/t6006-rev-list-format.sh | 2 +- t/t6012-rev-list-simplify.sh | 2 +- t/test-lib.sh | 17 +++++++++------ 5 files changed, 56 insertions(+), 35 deletions(-) base-commit: d98273ba77e1ab9ec755576bc86c716a97bf59d7 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-878%2Fnewren%2Ftest-selection-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-878/newren/test-selection-v3 Pull-Request: https://github.com/git/git/pull/878 Range-diff vs v2: 1: 41e2528e83 ! 1: 9c8b6a1a94 test-lib: allow selecting tests by substring/regex with --run @@ Metadata Author: Elijah Newren <newren@xxxxxxxxx> ## Commit message ## - test-lib: allow selecting tests by substring/regex with --run + test-lib: allow selecting tests by substring/glob with --run Many of our test scripts have several "setup" tests. It's a lot easier to say @@ t/README: For an individual test suite --run could be used to specify that -Optional prefix of '!' means that the test or a range of tests -should be excluded from the run. +The argument for --run, <test-selector>, is a list of description -+substrings or regexes or individual test numbers or ranges with an ++substrings or globs or individual test numbers or ranges with an +optional negation prefix (of '!') that define what tests in a test +suite to include (or exclude, if negated) in the run. A range is two +numbers separated with a dash and matches a range of tests with both @@ t/README: test in the test suite except from 7 up to 11: +Sometimes there may be multiple tests with e.g. "setup" in their name +that are needed and rather than figuring out the number for all of them -+we can just use "setup" as a substring/regex to match against the test ++we can just use "setup" as a substring/glob to match against the test +description: + + $ sh ./t0050-filesystem.sh --run=setup,9-11 @@ t/test-lib.sh: match_test_selector_list () { - echo "error: $title: invalid non-numeric in test" \ - "selector: '$orig_selector'" >&2 - exit 1 -+ echo "$title" | grep -q "$selector" && return ++ case "$title" in *${selector}*) ++ include=$positive ++ ;; ++ esac + continue fi esac 2: 8f1a4420f4 = 2: 6479d73603 t6006, t6012: adjust tests to use 'setup' instead of synonyms 3: 85a4ca164a ! 3: 24f6febde6 test-lib: reduce verbosity of skipped tests @@ Commit message When using the --run flag to run just two or three tests from a test file which contains several dozen tests, having every skipped test print out dozens of lines of output for the test code for that skipped test - adds up to hundreds or thousands of lines of irrelevant output that make - it very hard to fish out the relevant results you were looking for. - Simplify the output for skipped tests down to just showing the one-line - descriptions. + (in addition to the TAP output line) adds up to hundreds or thousands of + lines of irrelevant output that make it very hard to fish out the + relevant results you were looking for. Simplify the output for skipped + tests to remove this extra output, leaving only the TAP output line + (i.e. the line reading "ok <number> # skip <test-description>", which + already mentions that the test was "skip"ped). Signed-off-by: Elijah Newren <newren@xxxxxxxxx> -- gitgitgadget