]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'js/drop-mingw-test-cmp'
authorJunio C Hamano <gitster@pobox.com>
Sun, 8 Jan 2023 04:25:19 +0000 (13:25 +0900)
committerJunio C Hamano <gitster@pobox.com>
Sun, 8 Jan 2023 04:25:19 +0000 (13:25 +0900)
Use `git diff --no-index` as a test_cmp on Windows.

We'd probably need to revisit "do we really want to, and have to,
lose CRLF vs LF?" later, at which time we may be able to further
clean this up by replacing "git diff --no-index" with "diff -u".

* js/drop-mingw-test-cmp:
  tests(mingw): avoid very slow `mingw_test_cmp`

t/test-lib-functions.sh
t/test-lib.sh

index f036c4d300393e69f9cb99b895985e27b87595af..54e74d5301ddb539ae687baa8fc5478efe4d24b1 100644 (file)
@@ -1450,72 +1450,6 @@ test_skip_or_die () {
        error "$2"
 }
 
-# The following mingw_* functions obey POSIX shell syntax, but are actually
-# bash scripts, and are meant to be used only with bash on Windows.
-
-# A test_cmp function that treats LF and CRLF equal and avoids to fork
-# diff when possible.
-mingw_test_cmp () {
-       # Read text into shell variables and compare them. If the results
-       # are different, use regular diff to report the difference.
-       local test_cmp_a= test_cmp_b=
-
-       # When text came from stdin (one argument is '-') we must feed it
-       # to diff.
-       local stdin_for_diff=
-
-       # Since it is difficult to detect the difference between an
-       # empty input file and a failure to read the files, we go straight
-       # to diff if one of the inputs is empty.
-       if test -s "$1" && test -s "$2"
-       then
-               # regular case: both files non-empty
-               mingw_read_file_strip_cr_ test_cmp_a <"$1"
-               mingw_read_file_strip_cr_ test_cmp_b <"$2"
-       elif test -s "$1" && test "$2" = -
-       then
-               # read 2nd file from stdin
-               mingw_read_file_strip_cr_ test_cmp_a <"$1"
-               mingw_read_file_strip_cr_ test_cmp_b
-               stdin_for_diff='<<<"$test_cmp_b"'
-       elif test "$1" = - && test -s "$2"
-       then
-               # read 1st file from stdin
-               mingw_read_file_strip_cr_ test_cmp_a
-               mingw_read_file_strip_cr_ test_cmp_b <"$2"
-               stdin_for_diff='<<<"$test_cmp_a"'
-       fi
-       test -n "$test_cmp_a" &&
-       test -n "$test_cmp_b" &&
-       test "$test_cmp_a" = "$test_cmp_b" ||
-       eval "diff -u \"\$@\" $stdin_for_diff"
-}
-
-# $1 is the name of the shell variable to fill in
-mingw_read_file_strip_cr_ () {
-       # Read line-wise using LF as the line separator
-       # and use IFS to strip CR.
-       local line
-       while :
-       do
-               if IFS=$'\r' read -r -d $'\n' line
-               then
-                       # good
-                       line=$line$'\n'
-               else
-                       # we get here at EOF, but also if the last line
-                       # was not terminated by LF; in the latter case,
-                       # some text was read
-                       if test -z "$line"
-                       then
-                               # EOF, really
-                               break
-                       fi
-               fi
-               eval "$1=\$$1\$line"
-       done
-}
-
 # Like "env FOO=BAR some-program", but run inside a subshell, which means
 # it also works for shell functions (though those functions cannot impact
 # the environment outside of the test_env invocation).
index 6db377f68b82c41b297538855391d335275ff6da..4fab1c1984c5146783840cf683bf93be51d7cdd8 100644 (file)
@@ -1721,7 +1721,7 @@ case $uname_s in
        test_set_prereq SED_STRIPS_CR
        test_set_prereq GREP_STRIPS_CR
        test_set_prereq WINDOWS
-       GIT_TEST_CMP=mingw_test_cmp
+       GIT_TEST_CMP="GIT_DIR=/dev/null git diff --no-index --ignore-cr-at-eol --"
        ;;
 *CYGWIN*)
        test_set_prereq POSIXPERM