Merge branch 'ab/wildmatch-tests'
authorJunio C Hamano <gitster@pobox.com>
Thu, 15 Feb 2018 22:55:44 +0000 (14:55 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 15 Feb 2018 22:55:44 +0000 (14:55 -0800)
More tests for wildmatch functions.

* ab/wildmatch-tests:
wildmatch test: mark test as EXPENSIVE_ON_WINDOWS
test-lib: add an EXPENSIVE_ON_WINDOWS prerequisite
wildmatch test: create & test files on disk in addition to in-memory
wildmatch test: perform all tests under all wildmatch() modes
wildmatch test: use test_must_fail, not ! for test-wildmatch
wildmatch test: remove dead fnmatch() test code
wildmatch test: use a paranoia pattern from nul_match()
wildmatch test: don't try to vertically align our output
wildmatch test: use more standard shell style
wildmatch test: indent with tabs, not spaces

1  2 
t/test-lib.sh
diff --combined t/test-lib.sh
index 9af19055b307e2c8306efbd41a89338ee408b838,b87a09fec725e3f498160d4152503efca5d29057..452dec10e586117d7beddaa41b0004d6378b824a
@@@ -80,7 -80,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
@@@ -175,10 -175,9 +175,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 -193,7 +194,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 -263,7 +264,6 @@@ d
                shift ;;
        -x)
                trace=t
 -              verbose=t
                shift ;;
        --verbose-log)
                verbose_log=t
@@@ -282,11 -282,6 +282,11 @@@ the
        test -z "$verbose_log" && verbose=t
  fi
  
 +if test -n "$trace" && test -z "$verbose_log"
 +then
 +      verbose=t
 +fi
 +
  if test -n "$color"
  then
        # Save the color control sequences now rather than run tput
@@@ -590,9 -585,7 +590,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 -600,26 +607,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_
  }
  
@@@ -939,7 -918,7 +939,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?"
@@@ -1048,8 -1027,6 +1048,8 @@@ test -z "$NO_PERL" && test_set_prereq P
  test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
  test -z "$NO_PYTHON" && test_set_prereq PYTHON
  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?
@@@ -1132,6 -1109,10 +1132,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
  '