[PATCH v2 0/8] Do not use abbreviated options in tests
- From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Apr 12, 2019, 09:37 UTC
- Message-ID
- <pull.167.v2.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.167.git.gitgitgadget@gmail.com>
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