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

Re*: [PATCH v3 0/5] Cleanup pass on special test setups

From
Junio C Hamano <gitster@pobox.com>
Date
Sep 20, 2018, 18:43 UTC
Message-ID
<xmqqtvmkyppc.fsf_-_@gitster-ct.c.googlers.com>
In-Reply-To
<20180918232916.57736-1-benpeart@microsoft.com>
Ben Peart <benpeart@microsoft.com> writes:
> This round has one code change based on feedback. Other changes are just
> rewording commit messages.

Thanks. I think the only remaining issue is what to do with the interaction between extra/additional error message that comes from the updates in 3/5 and the test framework selftest in t0000.

-- >8 --
Subject: t0000: do not get self-test disrupted by environment warnings

The test framework test-lib.sh itself would want to give warnings and hints, e.g. when it sees a deprecated environment variable is in use that we want to encourage users to migrate to another variable.

The self-test of test framework done in t0000 however do not expect to see these warnings and hints, so depending on the settings of environment variables, a running test may or may not produce these messages to the standard error output, breaking the expectations of self-test test framework does on itself. Here is what we see:

    $ TEST_GIT_INDEX_VERSION=4 sh t0000-basic.sh -i -v
    ...
    'err' is not empty, it contains:
    warning: TEST_GIT_INDEX_VERSION is now GIT_TEST_INDEX_VERSION
    hint: set GIT_TEST_INDEX_VERSION too during the transition period
    not ok 5 - pretend we have a fully passing test suite

The following quick attempt to work it around does not work, because some tests in t0000 do want to see expected errors from the test framework itself.

         t/t0000-basic.sh | 2 +-
         1 file changed, 1 insertion(+), 1 deletion(-)
        diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
        index 850f651e4e..88c6ed4696 100755
        --- a/t/t0000-basic.sh
        +++ b/t/t0000-basic.sh
        @@ -88,7 +88,7 @@ _run_sub_test_lib_test_common () {
                        '
                        # Point to the t/test-lib.sh, which isn't in ../ as usual
        -		. "\$TEST_DIRECTORY"/test-lib.sh
        +		. "\$TEST_DIRECTORY"/test-lib.sh >/dev/null 2>&1
                        EOF
                        cat >>"$name.sh" &&
                        chmod +x "$name.sh" &&
There are a few possible ways to work this around:
 * We could strip the warning: and hint: unconditionally from the
   error output before the error messages are checked in the
   self-test (helper functions check_sub_test_lib_test_err and
   check_sub_test_lib_test); the problem with this approach is that
   it will make it impossible to write self-tests to ensure that
   right warnings and hints are given.
 * We could force a sane environment settings before the test helper
   _run_sub_test_lib_test_common dot-sources test-lib.sh; the
   problem with this approach is that _run_sub_test_lib_test_common
   now needs to be aware of what pairs of environment variables are
   checked in test-lib.sh using check_var_migration helper.

The final patch I came up with is probably the solution that is least bad. Set a variable to tell test-lib.sh that we are running a self-test, so that various pieces in test-lib.sh can react to keep the output stable.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 t/t0000-basic.sh | 4 ++++
 t/test-lib.sh    | 8 ++++++++
 2 files changed, 12 insertions(+)
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 850f651e4e..52c02b7c7e 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -87,6 +87,10 @@ _run_sub_test_lib_test_common () {
 		passing metrics
 		'
 
+		# Tell the framework that we are self-testing to make sure
+		# it yields a stable result.
+		GIT_TEST_FRAMEWORK_SELFTEST=t &&
+
 		# Point to the t/test-lib.sh, which isn't in ../ as usual
 		. "\$TEST_DIRECTORY"/test-lib.sh
 		EOF
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 8ef86e05a3..364a11ea25 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -135,9 +135,17 @@ GIT_TRACE_BARE=1
 export GIT_TRACE_BARE
 
 check_var_migration () {
+	# the warnings and hints given from this helper depends
+	# on end-user settings, which will disrupt the self-test
+	# done on the test framework itself.
+	case "$GIT_TEST_FRAMEWORK_SELFTEST" in
+	t)	return ;;
+	esac
+
 	old_name=$1 new_name=$2
 	eval "old_isset=\${${old_name}:+isset}"
 	eval "new_isset=\${${new_name}:+isset}"
+
 	case "$old_isset,$new_isset" in
 	isset,)
 		echo >&2 "warning: $old_name is now $new_name"
Previous: Ben PeartNext: Ben Peart
Message 32 of 33 in “Cleanup pass on special test setups”
  1. 0/4 Cleanup pass on special test setupsBen Peart, Sep 14, 2018
  2. 1/4 correct typo/spelling error in t/READMEBen Peart, Sep 14, 2018
  3. 2/4 fsmonitor: update GIT_TEST_FSMONITOR supportBen Peart, Sep 14, 2018
  4. Junio C HamanoSep 14, 2018
  5. Junio C HamanoSep 14, 2018
  6. Junio C HamanoSep 14, 2018
  7. Ben PeartSep 14, 2018
  8. Junio C HamanoSep 14, 2018
  9. 0/5 Cleanup pass on special test setupsBen Peart, Sep 14, 2018
  10. 1/5 correct typo/spelling error in t/READMEBen Peart, Sep 14, 2018
  11. Jonathan NiederSep 14, 2018
  12. 2/5 preload-index: teach GIT_FORCE_PRELOAD_TEST to take a booleanBen Peart, Sep 14, 2018
  13. Jonathan NiederSep 14, 2018
  14. Junio C HamanoSep 14, 2018
  15. 3/5 fsmonitor: update GIT_TEST_FSMONITOR supportBen Peart, Sep 14, 2018
  16. 4/5 read-cache: update TEST_GIT_INDEX_VERSION supportBen Peart, Sep 14, 2018
  17. Junio C HamanoSep 14, 2018
  18. Junio C HamanoSep 14, 2018
  19. 5/5 preload-index: update GIT_FORCE_PRELOAD_TEST supportBen Peart, Sep 14, 2018
  20. 3/4 read-cache: update TEST_GIT_INDEX_VERSION supportBen Peart, Sep 14, 2018
  21. 4/4 preload-index: update GIT_FORCE_PRELOAD_TEST supportBen Peart, Sep 14, 2018
  22. 0/5 Cleanup pass on special test setupsBen Peart, Sep 18, 2018
  23. 1/5 t/README: correct spelling of "uncommon"Ben Peart, Sep 18, 2018
  24. 2/5 preload-index: use git_env_bool() not getenv() for customizationBen Peart, Sep 18, 2018
  25. 3/5 fsmonitor: update GIT_TEST_FSMONITOR supportBen Peart, Sep 18, 2018
  26. SZEDER GáborSep 28, 2018
  27. Ben PeartSep 28, 2018
  28. Ben PeartSep 28, 2018
  29. Junio C HamanoSep 28, 2018
  30. 4/5 read-cache: update TEST_GIT_INDEX_VERSION supportBen Peart, Sep 18, 2018
  31. 5/5 preload-index: update GIT_FORCE_PRELOAD_TEST supportBen Peart, Sep 18, 2018
  32. Re*: [PATCH v3 0/5] Cleanup pass on special test setupsJunio C Hamano, Sep 20, 2018
  33. Ben PeartSep 25, 2018

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.