Merge branch 'gs/test-unset-xdg-cache-home'
authorJunio C Hamano <gitster@pobox.com>
Wed, 28 Feb 2018 21:37:56 +0000 (13:37 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 28 Feb 2018 21:37:56 +0000 (13:37 -0800)
Test update.

* gs/test-unset-xdg-cache-home:
test-lib.sh: unset XDG_CACHE_HOME

1  2 
t/test-lib.sh
diff --combined t/test-lib.sh
index 33f6ce26f69d442238c60619a5f70673d451a7fb,fa99a856e8349ddea94bb9499b333bdc669e6155..9535d2e0a936eb1b7a84686a9b702d3ca9fd680d
@@@ -36,19 -36,6 +36,19 @@@ the
  fi
  GIT_BUILD_DIR="$TEST_DIRECTORY"/..
  
 +# If we were built with ASAN, it may complain about leaks
 +# of program-lifetime variables. Disable it by default to lower
 +# the noise level. This needs to happen at the start of the script,
 +# before we even do our "did we build git yet" check (since we don't
 +# want that one to complain to stderr).
 +: ${ASAN_OPTIONS=detect_leaks=0:abort_on_error=1}
 +export ASAN_OPTIONS
 +
 +# If LSAN is in effect we _do_ want leak checking, but we still
 +# want to abort so that we notice the problems.
 +: ${LSAN_OPTIONS=abort_on_error=1}
 +export LSAN_OPTIONS
 +
  ################################################################
  # It appears that people try to run tests without building...
  "$GIT_BUILD_DIR/git" >/dev/null
@@@ -80,7 -67,7 +80,7 @@@ done,*
        # from any previous runs.
        >"$GIT_TEST_TEE_OUTPUT_FILE"
  
 -      (GIT_TEST_TEE_STARTED=done ${SHELL_PATH} "$0" "$@" 2>&1;
 +      (GIT_TEST_TEE_STARTED=done ${TEST_SHELL_PATH} "$0" "$@" 2>&1;
         echo $? >"$BASE.exit") | tee -a "$GIT_TEST_TEE_OUTPUT_FILE"
        test "$(cat "$BASE.exit")" = 0
        exit
@@@ -104,6 -91,7 +104,6 @@@ unset VISUAL EMAIL LANGUAGE COLUMNS $("
        my $ok = join("|", qw(
                TRACE
                DEBUG
 -              USE_LOOKUP
                TEST
                .*_TEST
                PROVE
        my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env);
        print join("\n", @vars);
  ')
+ unset XDG_CACHE_HOME
  unset XDG_CONFIG_HOME
  unset GITPERLLIB
  GIT_AUTHOR_EMAIL=author@example.com
@@@ -160,6 -149,9 +161,6 @@@ els
        }
  fi
  
 -: ${ASAN_OPTIONS=detect_leaks=0}
 -export ASAN_OPTIONS
 -
  # Protect ourselves from common misconfiguration to export
  # CDPATH into the environment
  unset CDPATH
@@@ -175,10 -167,9 +176,10 @@@ esa
  
  # Convenience
  #
 -# A regexp to match 5 and 40 hexdigits
 +# A regexp to match 5, 35 and 40 hexdigits
  _x05='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
 -_x40="$_x05$_x05$_x05$_x05$_x05$_x05$_x05$_x05"
 +_x35="$_x05$_x05$_x05$_x05$_x05$_x05$_x05"
 +_x40="$_x35$_x05"
  
  # Zero SHA-1
  _z40=0000000000000000000000000000000000000000
@@@ -194,7 -185,7 +195,7 @@@ LF=
  # when case-folding filenames
  u200c=$(printf '\342\200\214')
  
 -export _x05 _x40 _z40 LF u200c EMPTY_TREE EMPTY_BLOB
 +export _x05 _x35 _x40 _z40 LF u200c EMPTY_TREE EMPTY_BLOB
  
  # Each test should start with something like this, after copyright notices:
  #
@@@ -264,6 -255,7 +265,6 @@@ d
                shift ;;
        -x)
                trace=t
 -              verbose=t
                shift ;;
        --verbose-log)
                verbose_log=t
@@@ -278,11 -270,6 +279,11 @@@ the
        test -z "$valgrind" && valgrind=memcheck
        test -z "$verbose" && verbose_only="$valgrind_only"
  elif test -n "$valgrind"
 +then
 +      test -z "$verbose_log" && verbose=t
 +fi
 +
 +if test -n "$trace" && test -z "$verbose_log"
  then
        verbose=t
  fi
@@@ -590,9 -577,7 +591,9 @@@ maybe_setup_valgrind () 
  }
  
  want_trace () {
 -      test "$trace" = t && test "$verbose" = t
 +      test "$trace" = t && {
 +              test "$verbose" = t || test "$verbose_log" = t
 +      }
  }
  
  # This is a separate function because some tests use
@@@ -607,40 -592,26 +608,40 @@@ test_eval_inner_ () 
  }
  
  test_eval_ () {
 -      # We run this block with stderr redirected to avoid extra cruft
 -      # during a "-x" trace. Once in "set -x" mode, we cannot prevent
 +      # If "-x" tracing is in effect, then we want to avoid polluting stderr
 +      # with non-test commands. But once in "set -x" mode, we cannot prevent
        # the shell from printing the "set +x" to turn it off (nor the saving
        # of $? before that). But we can make sure that the output goes to
        # /dev/null.
        #
 -      # The test itself is run with stderr put back to &4 (so either to
 -      # /dev/null, or to the original stderr if --verbose was used).
 +      # There are a few subtleties here:
 +      #
 +      #   - we have to redirect descriptor 4 in addition to 2, to cover
 +      #     BASH_XTRACEFD
 +      #
 +      #   - the actual eval has to come before the redirection block (since
 +      #     it needs to see descriptor 4 to set up its stderr)
 +      #
 +      #   - likewise, any error message we print must be outside the block to
 +      #     access descriptor 4
 +      #
 +      #   - checking $? has to come immediately after the eval, but it must
 +      #     be _inside_ the block to avoid polluting the "set -x" output
 +      #
 +
 +      test_eval_inner_ "$@" </dev/null >&3 2>&4
        {
 -              test_eval_inner_ "$@" </dev/null >&3 2>&4
                test_eval_ret_=$?
                if want_trace
                then
                        set +x
 -                      if test "$test_eval_ret_" != 0
 -                      then
 -                              say_color error >&4 "error: last command exited with \$?=$test_eval_ret_"
 -                      fi
                fi
 -      } 2>/dev/null
 +      } 2>/dev/null 4>&2
 +
 +      if test "$test_eval_ret_" != 0 && want_trace
 +      then
 +              say_color error >&4 "error: last command exited with \$?=$test_eval_ret_"
 +      fi
        return $test_eval_ret_
  }
  
@@@ -655,9 -626,9 +656,9 @@@ test_run_ () 
                trace=
                # 117 is magic because it is unlikely to match the exit
                # code of other programs
 -              test_eval_ "(exit 117) && $1"
 -              if test "$?" != 117; then
 -                      error "bug in the test script: broken &&-chain: $1"
 +              if test "OK-117" != "$(test_eval_ "(exit 117) && $1${LF}${LF}echo OK-\$?" 3>&1)"
 +              then
 +                      error "bug in the test script: broken &&-chain or run-away HERE-DOC: $1"
                fi
                trace=$trace_tmp
        fi
@@@ -775,36 -746,26 +776,36 @@@ test_done () 
        fi
        case "$test_failure" in
        0)
 -              # Maybe print SKIP message
 -              if test -n "$skip_all" && test $test_count -gt 0
 -              then
 -                      error "Can't use skip_all after running some tests"
 -              fi
 -              test -z "$skip_all" || skip_all=" # SKIP $skip_all"
 -
                if test $test_external_has_tap -eq 0
                then
                        if test $test_remaining -gt 0
                        then
                                say_color pass "# passed all $msg"
                        fi
 -                      say "1..$test_count$skip_all"
 +
 +                      # Maybe print SKIP message
 +                      test -z "$skip_all" || skip_all="# SKIP $skip_all"
 +                      case "$test_count" in
 +                      0)
 +                              say "1..$test_count${skip_all:+ $skip_all}"
 +                              ;;
 +                      *)
 +                              test -z "$skip_all" ||
 +                              say_color warn "$skip_all"
 +                              say "1..$test_count"
 +                              ;;
 +                      esac
                fi
  
 -              test -d "$remove_trash" &&
 -              cd "$(dirname "$remove_trash")" &&
 -              rm -rf "$(basename "$remove_trash")"
 +              if test -z "$debug"
 +              then
 +                      test -d "$TRASH_DIRECTORY" ||
 +                      error "Tests passed but trash directory already removed before test cleanup; aborting"
  
 +                      cd "$TRASH_DIRECTORY/.." &&
 +                      rm -fr "$TRASH_DIRECTORY" ||
 +                      error "Tests passed but test cleanup failed; aborting"
 +              fi
                test_at_end_hook_
  
                exit 0 ;;
@@@ -939,7 -900,7 +940,7 @@@ the
        fi
  fi
  
 -GITPERLLIB="$GIT_BUILD_DIR"/perl/blib/lib:"$GIT_BUILD_DIR"/perl/blib/arch/auto/Git
 +GITPERLLIB="$GIT_BUILD_DIR"/perl/build/lib
  export GITPERLLIB
  test -d "$GIT_BUILD_DIR"/templates/blt || {
        error "You haven't built things yet, have you?"
@@@ -959,6 -920,7 +960,6 @@@ case "$TRASH_DIRECTORY" i
  /*) ;; # absolute path is good
   *) TRASH_DIRECTORY="$TEST_OUTPUT_DIRECTORY/$TRASH_DIRECTORY" ;;
  esac
 -test ! -z "$debug" || remove_trash=$TRASH_DIRECTORY
  rm -fr "$TRASH_DIRECTORY" || {
        GIT_EXIT_OK=t
        echo >&5 "FATAL: Cannot prepare test area"
@@@ -1016,6 -978,9 +1017,6 @@@ case $uname_s i
        find () {
                /usr/bin/find "$@"
        }
 -      sum () {
 -              md5sum "$@"
 -      }
        # git sees Windows-style pwd
        pwd () {
                builtin pwd -W
  
  ( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1
  test -z "$NO_PERL" && test_set_prereq PERL
 +test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
  test -z "$NO_PYTHON" && test_set_prereq PYTHON
 -test -n "$USE_LIBPCRE" && test_set_prereq LIBPCRE
 +test -n "$USE_LIBPCRE1$USE_LIBPCRE2" && test_set_prereq PCRE
 +test -n "$USE_LIBPCRE1" && test_set_prereq LIBPCRE1
 +test -n "$USE_LIBPCRE2" && test_set_prereq LIBPCRE2
  test -z "$NO_GETTEXT" && test_set_prereq GETTEXT
  
  # Can we rely on git's output in the C locale?
        test_set_prereq C_LOCALE_OUTPUT
  fi
  
 -# Use this instead of test_cmp to compare files that contain expected and
 -# actual output from git commands that can be translated.  When running
 -# under GETTEXT_POISON this pretends that the command produced expected
 -# results.
 -test_i18ncmp () {
 -      test -n "$GETTEXT_POISON" || test_cmp "$@"
 -}
 -
 -# Use this instead of "grep expected-string actual" to see if the
 -# output from a git command that can be translated either contains an
 -# expected string, or does not contain an unwanted one.  When running
 -# under GETTEXT_POISON this pretends that the command produced expected
 -# results.
 -test_i18ngrep () {
 -      if test -n "$GETTEXT_POISON"
 -      then
 -          : # pretend success
 -      elif test "x!" = "x$1"
 -      then
 -              shift
 -              ! grep "$@"
 -      else
 -              grep "$@"
 -      fi
 -}
 -
  test_lazy_prereq PIPE '
        # test whether the filesystem supports FIFOs
 -      case $(uname -s) in
 -      CYGWIN*|MINGW*)
 -              false
 -              ;;
 -      *)
 -              rm -f testfifo && mkfifo testfifo
 -              ;;
 -      esac
 +      test_have_prereq !MINGW,!CYGWIN &&
 +      rm -f testfifo && mkfifo testfifo
  '
  
  test_lazy_prereq SYMLINKS '
@@@ -1106,10 -1100,6 +1107,10 @@@ test_lazy_prereq EXPENSIVE 
        test -n "$GIT_TEST_LONG"
  '
  
 +test_lazy_prereq EXPENSIVE_ON_WINDOWS '
 +      test_have_prereq EXPENSIVE || test_have_prereq !MINGW,!CYGWIN
 +'
 +
  test_lazy_prereq USR_BIN_TIME '
        test -x /usr/bin/time
  '
@@@ -1165,19 -1155,7 +1166,19 @@@ run_with_limited_cmdline () 
        (ulimit -s 128 && "$@")
  }
  
 -test_lazy_prereq CMDLINE_LIMIT 'run_with_limited_cmdline true'
 +test_lazy_prereq CMDLINE_LIMIT '
 +      test_have_prereq !MINGW,!CYGWIN &&
 +      run_with_limited_cmdline true
 +'
 +
 +run_with_limited_stack () {
 +      (ulimit -s 128 && "$@")
 +}
 +
 +test_lazy_prereq ULIMIT_STACK_SIZE '
 +      test_have_prereq !MINGW,!CYGWIN &&
 +      run_with_limited_stack true
 +'
  
  build_option () {
        git version --build-options |
  test_lazy_prereq LONG_IS_64BIT '
        test 8 -le "$(build_option sizeof-long)"
  '
 +
 +test_lazy_prereq TIME_IS_64BIT 'test-date is64bit'
 +test_lazy_prereq TIME_T_IS_64BIT 'test-date time_t-is64bit'