Merge branch 'js/tests-windows-port-fix'

* js/tests-windows-port-fix:
  tests: undo special treatment of CRLF for Windows
  Windows: a test_cmp that is agnostic to random LF <> CRLF conversions
  t5300-pack-object: do not compare binary data using test_cmp
This commit is contained in:
Junio C Hamano 2013-11-01 07:38:54 -07:00
commit fbaa22678b
6 changed files with 72 additions and 14 deletions

View File

@ -18,10 +18,6 @@ check() {
cat stderr && cat stderr &&
false false
fi && fi &&
if test_have_prereq MINGW
then
dos2unix -q stderr
fi &&
test_cmp expect-stdout stdout && test_cmp expect-stdout stdout &&
test_cmp expect-stderr stderr test_cmp expect-stderr stderr
} }

View File

@ -151,7 +151,7 @@ test_expect_success \
git cat-file $t $object || return 1 git cat-file $t $object || return 1
done <obj-list done <obj-list
} >current && } >current &&
test_cmp expect current' cmp expect current'
test_expect_success \ test_expect_success \
'use packed deltified (REF_DELTA) objects' \ 'use packed deltified (REF_DELTA) objects' \
@ -166,7 +166,7 @@ test_expect_success \
git cat-file $t $object || return 1 git cat-file $t $object || return 1
done <obj-list done <obj-list
} >current && } >current &&
test_cmp expect current' cmp expect current'
test_expect_success \ test_expect_success \
'use packed deltified (OFS_DELTA) objects' \ 'use packed deltified (OFS_DELTA) objects' \
@ -181,7 +181,7 @@ test_expect_success \
git cat-file $t $object || return 1 git cat-file $t $object || return 1
done <obj-list done <obj-list
} >current && } >current &&
test_cmp expect current' cmp expect current'
unset GIT_OBJECT_DIRECTORY unset GIT_OBJECT_DIRECTORY
@ -195,9 +195,9 @@ test_expect_success 'survive missing objects/pack directory' '
rm -fr $GOP && rm -fr $GOP &&
git index-pack --stdin --keep=test <../test-3-${packname_3}.pack && git index-pack --stdin --keep=test <../test-3-${packname_3}.pack &&
test -f $GOP/pack-${packname_3}.pack && test -f $GOP/pack-${packname_3}.pack &&
test_cmp $GOP/pack-${packname_3}.pack ../test-3-${packname_3}.pack && cmp $GOP/pack-${packname_3}.pack ../test-3-${packname_3}.pack &&
test -f $GOP/pack-${packname_3}.idx && test -f $GOP/pack-${packname_3}.idx &&
test_cmp $GOP/pack-${packname_3}.idx ../test-3-${packname_3}.idx && cmp $GOP/pack-${packname_3}.idx ../test-3-${packname_3}.idx &&
test -f $GOP/pack-${packname_3}.keep test -f $GOP/pack-${packname_3}.keep
) )
' '

View File

@ -254,10 +254,6 @@ test_expect_success 'ensure "status --cached --recursive" preserves the --cached
) && ) &&
git submodule status --cached --recursive -- nested1 > ../actual git submodule status --cached --recursive -- nested1 > ../actual
) && ) &&
if test_have_prereq MINGW
then
dos2unix actual
fi &&
test_cmp expect actual test_cmp expect actual
' '

View File

@ -23,7 +23,6 @@ test_expect_success $PREREQ \
echo do echo do
echo " echo \"!\$a!\"" echo " echo \"!\$a!\""
echo "done >commandline\$output" echo "done >commandline\$output"
test_have_prereq MINGW && echo "dos2unix commandline\$output"
echo "cat > msgtxt\$output" echo "cat > msgtxt\$output"
) >fake.sendmail && ) >fake.sendmail &&
chmod +x ./fake.sendmail && chmod +x ./fake.sendmail &&

View File

@ -710,3 +710,69 @@ test_ln_s_add () {
git update-index --add --cacheinfo 120000 $ln_s_obj "$2" git update-index --add --cacheinfo 120000 $ln_s_obj "$2"
fi fi
} }
# 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
}

View File

@ -752,6 +752,7 @@ case $(uname -s) in
test_set_prereq NOT_CYGWIN test_set_prereq NOT_CYGWIN
test_set_prereq SED_STRIPS_CR test_set_prereq SED_STRIPS_CR
test_set_prereq GREP_STRIPS_CR test_set_prereq GREP_STRIPS_CR
GIT_TEST_CMP=mingw_test_cmp
;; ;;
*CYGWIN*) *CYGWIN*)
test_set_prereq POSIXPERM test_set_prereq POSIXPERM