We do not want to have tests that need to be changed by completely unrelated patch series, just because abbreviations that used to be unique are being made non-unique by said patch series. I stumbled over this while investigating the test failures in dl/rebase-i-keep-base [https://dev.azure.com/gitgitgadget/git/_build/results?buildId=5482&view=ms.vss-test-web.build-test-results-tab] : the new --keep-base option makes the --keep abbreviation of --keep-empty in t5407 non-unique, which causes the test suite to fail. Changes since v1: * Fixed a typo ("expaneded") in the last commit message. * Added a regression test for the GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS handling. * Adjusted the code in test-lib.sh that makes sure that this variable is set: it is now consistent with the way we do similar things in that file already. Johannes Schindelin (8): tests (rebase): spell out the `--keep-empty` option tests (rebase): spell out the `--force-rebase` option t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match` t5531: avoid using an abbreviated option tests (push): do not abbreviate the `--follow-tags` option tests (status): spell out the `--find-renames` option in full tests (pack-objects): use the full, unabbreviated `--revs` option tests: disallow the use of abbreviated options (by default) parse-options.c | 9 ++++++ t/README | 4 +++ t/t0040-parse-options.sh | 14 +++++++- t/t3415-rebase-autosquash.sh | 2 +- t/t3430-rebase-merges.sh | 4 +-- t/t5317-pack-objects-filter-objects.sh | 44 +++++++++++++------------- t/t5407-post-rewrite-hook.sh | 4 +-- t/t5516-fetch-push.sh | 4 +-- t/t5531-deep-submodule-push.sh | 2 +- t/t7525-status-rename.sh | 8 ++--- t/t7810-grep.sh | 16 +++++----- t/test-lib.sh | 7 ++++ 12 files changed, 75 insertions(+), 43 deletions(-) base-commit: 041f5ea1cf987a4068ef5f39ba0a09be85952064 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-167%2Fdscho%2Fdisallow-abbreviated-options-in-tests-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-167/dscho/disallow-abbreviated-options-in-tests-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/167 Range-diff vs v1: 1: a1b4b74b91 = 1: a1b4b74b91 tests (rebase): spell out the `--keep-empty` option 2: 017ec9a0c7 = 2: 017ec9a0c7 tests (rebase): spell out the `--force-rebase` option 3: 7d8f6a2ee6 = 3: 7d8f6a2ee6 t7810: do not abbreviate `--no-exclude-standard` nor `--invert-match` 4: f45c435e4a = 4: f45c435e4a t5531: avoid using an abbreviated option 5: 7372059922 = 5: 7372059922 tests (push): do not abbreviate the `--follow-tags` option 6: 531450c00d = 6: 531450c00d tests (status): spell out the `--find-renames` option in full 7: a722a065d2 = 7: a722a065d2 tests (pack-objects): use the full, unabbreviated `--revs` option 8: 04c36b1de9 ! 8: a27d316855 tests: disallow the use of abbreviated options (by default) @@ -14,7 +14,7 @@ For example, if a future contribution added a new mode `git init --babyproofing` and a previously-introduced test case used the - fact that `git init --ba` expaneded to `git init --bare`, that future + fact that `git init --ba` expanded to `git init --bare`, that future contribution would now have to touch seemingly unrelated tests just to keep the test suite from failing. @@ -115,6 +115,18 @@ test-tool parse-options --no-ambig >output 2>output.err && test_must_be_empty output.err && test_cmp expect output +@@ + test-tool parse-options --expect="verbose: 0" -v -v -v --no-verbose + ' + ++test_expect_success 'GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS works' ' ++ env GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=false \ ++ test-tool parse-options --ye && ++ test_must_fail env GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=true \ ++ test-tool parse-options --ye ++' ++ + test_done diff --git a/t/test-lib.sh b/t/test-lib.sh --- a/t/test-lib.sh @@ -124,10 +136,11 @@ export PERL_PATH SHELL_PATH +# Disallow the use of abbreviated options in the test suite by default -+test -n "$GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS" || { ++if test -n "${GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS:+isset}" ++then + GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS=true + export GIT_TEST_DISALLOW_ABBREVIATED_OPTIONS -+} ++fi + ################################################################ # It appears that people try to run tests without building... -- gitgitgadget