Merge 'win-tests-fixes' into HEAD

This commit is contained in:
Johannes Schindelin
2015-12-11 07:04:03 +01:00
23 changed files with 157 additions and 49 deletions

View File

@@ -59,7 +59,9 @@ GIT_QUIET=
say () {
if test -z "$GIT_QUIET"
then
printf '%s\n' "$*"
cat <<EOF
$*
EOF
fi
}

View File

@@ -443,9 +443,11 @@ cmd_add()
if test -z "$force" && ! git add --dry-run --ignore-missing "$sm_path" > /dev/null 2>&1
then
eval_gettextln "The following path is ignored by one of your .gitignore files:
\$sm_path
Use -f if you really want to add it." >&2
cat >&2 <<EOF
The following path is ignored by one of your .gitignore files:
$(eval_gettextln $sm_path)
Use -f if you really want to add it.
EOF
exit 1
fi

View File

@@ -267,27 +267,27 @@ test_expect_success 'blame -L X,-N' '
'
test_expect_success 'blame -L /RE/ (RE to end)' '
check_count -L/evil/ C 1 "A U Thor" 1
check_count -L/\;*evil/ C 1 "A U Thor" 1
'
test_expect_success 'blame -L /RE/,/RE2/' '
check_count -L/robot/,/green/ A 1 B 1 B2 1 D 1 E 1
check_count -L/\;*robot/,/\;*green/ A 1 B 1 B2 1 D 1 E 1
'
test_expect_success 'blame -L X,/RE/' '
check_count -L5,/evil/ B1 1 D 1 "A U Thor" 1
check_count -L5,/\;*evil/ B1 1 D 1 "A U Thor" 1
'
test_expect_success 'blame -L /RE/,Y' '
check_count -L/99/,7 B1 1 D 1 "A U Thor" 1
check_count -L/\;*99/,7 B1 1 D 1 "A U Thor" 1
'
test_expect_success 'blame -L /RE/,+N' '
check_count -L/99/,+3 B1 1 D 1 "A U Thor" 1
check_count -L/\;*99/,+3 B1 1 D 1 "A U Thor" 1
'
test_expect_success 'blame -L /RE/,-N' '
check_count -L/99/,-3 B 1 B2 1 D 1
check_count -L/\;*99/,-3 B 1 B2 1 D 1
'
# 'file' ends with an incomplete line, so 'wc' reports one fewer lines than
@@ -353,19 +353,19 @@ test_expect_success 'blame -L multiple (superset/subset: unordered)' '
'
test_expect_success 'blame -L /RE/ (relative)' '
check_count -L3,3 -L/fox/ B1 1 B2 1 C 1 D 1 "A U Thor" 1
check_count -L3,3 -L/\;*fox/ B1 1 B2 1 C 1 D 1 "A U Thor" 1
'
test_expect_success 'blame -L /RE/ (relative: no preceding range)' '
check_count -L/dog/ A 1 B 1 B1 1 B2 1 C 1 D 1 "A U Thor" 1
check_count -L/\;*dog/ A 1 B 1 B1 1 B2 1 C 1 D 1 "A U Thor" 1
'
test_expect_success 'blame -L /RE/ (relative: adjacent)' '
check_count -L1,1 -L/dog/,+1 A 1 E 1
check_count -L1,1 -L/\;*dog/,+1 A 1 E 1
'
test_expect_success 'blame -L /RE/ (relative: not found)' '
test_must_fail $PROG -L4,4 -L/dog/ file
test_must_fail $PROG -L4,4 -L/\;*dog/ file
'
test_expect_success 'blame -L /RE/ (relative: end-of-file)' '
@@ -373,11 +373,11 @@ test_expect_success 'blame -L /RE/ (relative: end-of-file)' '
'
test_expect_success 'blame -L ^/RE/ (absolute)' '
check_count -L3,3 -L^/dog/,+2 A 1 B2 1
check_count -L3,3 -L^/\;*dog/,+2 A 1 B2 1
'
test_expect_success 'blame -L ^/RE/ (absolute: no preceding range)' '
check_count -L^/dog/,+2 A 1 B2 1
check_count -L^/\;*dog/,+2 A 1 B2 1
'
test_expect_success 'blame -L ^/RE/ (absolute: not found)' '

View File

@@ -23,6 +23,11 @@ then
test_done
fi
if ! test_have_prereq PIPE
then
test_skip_or_die $GIT_TEST_GIT_DAEMON "file system does not support FIFOs"
fi
LIB_GIT_DAEMON_PORT=${LIB_GIT_DAEMON_PORT-${this_test#t}}
GIT_DAEMON_PID=

View File

@@ -5,7 +5,13 @@ test_description=check-ignore
. ./test-lib.sh
init_vars () {
global_excludes="$(pwd)/global-excludes"
# On Windows, avoid using "C:" in the global-excludes paths.
if test_have_prereq MINGW
then
global_excludes="global-excludes"
else
global_excludes="$(pwd)/global-excludes"
fi
}
enable_global_excludes () {

View File

@@ -214,7 +214,7 @@ test_expect_success 'filter that does not read is fine' '
test_cmp expect actual
'
test_expect_success EXPENSIVE 'filter large file' '
test_expect_success EXPENSIVE,!MINGW 'filter large file' '
git config filter.largefile.smudge cat &&
git config filter.largefile.clean cat &&
for i in $(test_seq 1 2048); do printf "%1048576d" 1; done >2GB &&

View File

@@ -4,9 +4,9 @@ test_description='CRLF conversion all combinations'
. ./test-lib.sh
if ! test_have_prereq EXPENSIVE
if ! test_have_prereq EXPENSIVE && ! test_have_prereq MINGW
then
skip_all="EXPENSIVE not set"
skip_all="Neither EXPENSIVE nor MINGW set"
test_done
fi

View File

@@ -58,7 +58,7 @@ test_expect_success GETTEXT_LOCALE 'sanity: gettext(unknown) is passed through'
'
# xgettext from C
test_expect_success GETTEXT_LOCALE 'xgettext: C extraction of _() and N_() strings' '
test_expect_success GETTEXT_LOCALE,!MINGW 'xgettext: C extraction of _() and N_() strings' '
printf "TILRAUN: C tilraunastrengur" >expect &&
printf "\n" >>expect &&
printf "Sjá '\''git help SKIPUN'\'' til að sjá hjálp fyrir tiltekna skipun." >>expect &&
@@ -81,7 +81,7 @@ test_expect_success GETTEXT_LOCALE 'xgettext: Shell extraction' '
test_cmp expect actual
'
test_expect_success GETTEXT_LOCALE 'xgettext: Shell extraction with $variable' '
test_expect_success GETTEXT_LOCALE,!MINGW 'xgettext: Shell extraction with $variable' '
printf "TILRAUN: Skeljartilraunastrengur með breytunni a var i able" >x-expect &&
LANGUAGE=is LC_ALL="$is_IS_locale" variable="a var i able" eval_gettext "TEST: A Shell test \$variable" >x-actual &&
test_cmp x-expect x-actual
@@ -94,7 +94,7 @@ test_expect_success GETTEXT_LOCALE 'xgettext: Perl extraction' '
test_cmp expect actual
'
test_expect_success GETTEXT_LOCALE 'xgettext: Perl extraction with %s' '
test_expect_success GETTEXT_LOCALE,!MINGW 'xgettext: Perl extraction with %s' '
printf "TILRAUN: Perl tilraunastrengur með breytunni %%s" >expect &&
LANGUAGE=is LC_ALL="$is_IS_locale" gettext "TEST: A Perl test variable %s" >actual &&
test_cmp expect actual

View File

@@ -7,6 +7,15 @@ test_description="Gettext reencoding of our *.po/*.mo files works"
. ./lib-gettext.sh
if test_have_prereq MINGW
then
# There is no MinGW 'locale', but an MSys2 one that interferes
# with this test (the MinGW and MSys2 locales are in fundamentally
# different realms).
skip_all='No native locale.exe available'
test_done
fi
# The constants used in a tricky observation for undefined behaviour
RUNES="TILRAUN: ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ"
PUNTS="TILRAUN: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ?? ????"

View File

@@ -339,6 +339,10 @@ test_expect_success 'make_relative_path handles double slashes in GIT_DIR' '
git --git-dir="$(pwd)//repo.git" --work-tree="$(pwd)" add dummy_file
'
test_have_prereq MINGW &&
# make sure to test DOS path on Windows
TRASH_DIRECTORY="$(cd "$TRASH_DIRECTORY" && pwd)"
test_expect_success 'relative $GIT_WORK_TREE and git subprocesses' '
GIT_DIR=repo.git GIT_WORK_TREE=repo.git/work \
test-subprocess --setup-work-tree rev-parse --show-toplevel >actual &&

View File

@@ -29,13 +29,22 @@ fail() {
"$@" failure
}
if test_have_prereq MINGW
then
# MSys interprets `@/abc` to be a file list, and wants to substitute
# the Unix-y path with a Windows one (e.g. @C:\msys64\abc)
AT_SLASH=@//at-test
else
AT_SLASH=@/at-test
fi
test_expect_success 'setup' '
test_commit master-one &&
test_commit master-two &&
git checkout -b upstream-branch &&
test_commit upstream-one &&
test_commit upstream-two &&
git checkout -b @/at-test &&
git checkout -b $AT_SLASH &&
git checkout -b @@/at-test &&
git checkout -b @at-test &&
git checkout -b old-branch &&
@@ -64,7 +73,7 @@ check "@{-1}@{u}@{1}" commit master-one
check "@" commit new-two
check "@@{u}" ref refs/heads/upstream-branch
check "@@/at-test" ref refs/heads/@@/at-test
check "@/at-test" ref refs/heads/@/at-test
check "$AT_SLASH" ref refs/heads/@/at-test
check "@at-test" ref refs/heads/@at-test
nonsense "@{u}@{-1}"
nonsense "@{0}@{0}"

View File

@@ -52,7 +52,7 @@ get_needs () {
' "$1"
}
test_expect_success 'fetch A (new commit : 1 connection)' '
test_expect_failure 'fetch A (new commit : 1 connection)' ' # TODO known breakage
rm -f $U &&
(
cd cloned &&
@@ -82,7 +82,7 @@ want $T
EOF
'
test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
test_expect_failure 'fetch C, T (new branch, tag : 1 connection)' ' # TODO known breakage
rm -f $U &&
(
cd cloned &&
@@ -118,7 +118,7 @@ want $S
EOF
'
test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
test_expect_failure 'fetch B, S (commit and tag : 1 connection)' ' # TODO known breakage
rm -f $U &&
(
cd cloned &&

View File

@@ -101,7 +101,10 @@ test_expect_success 'push with receive.fsckobjects' '
git config transfer.fsckobjects false
) &&
test_must_fail git push --porcelain dst master:refs/heads/test >act &&
test_cmp exp act
if ! test_cmp exp act
then
test ! -s act
fi
'
test_expect_success 'push with transfer.fsckobjects' '
@@ -112,7 +115,10 @@ test_expect_success 'push with transfer.fsckobjects' '
git config transfer.fsckobjects true
) &&
test_must_fail git push --porcelain dst master:refs/heads/test >act &&
test_cmp exp act
if ! test_cmp exp act
then
test ! -s act
fi
'
cat >bogus-commit <<\EOF

View File

@@ -305,7 +305,7 @@ test_expect_success 'git mv moves a submodule with a .git directory and no .gitm
(
cd sub &&
rm -f .git &&
cp -R -P -p ../.git/modules/sub .git &&
cp -a ../.git/modules/sub .git &&
GIT_WORK_TREE=. git config --unset core.worktree
) &&
mkdir mod &&
@@ -328,7 +328,7 @@ test_expect_success 'git mv moves a submodule with a .git directory and .gitmodu
(
cd sub &&
rm -f .git &&
cp -R -P -p ../.git/modules/sub .git &&
cp -a ../.git/modules/sub .git &&
GIT_WORK_TREE=. git config --unset core.worktree
) &&
mkdir mod &&

View File

@@ -12,6 +12,12 @@ then
test_done
fi
if test_have_prereq MINGW
then
skip_all='skipping remote-svn tests for lack of POSIX'
test_done
fi
# Override svnrdump with our simulator
PATH="$HOME:$PATH"
export PATH PYTHON_PATH GIT_BUILD_DIR

View File

@@ -31,7 +31,10 @@ test_expect_success \
mkdir bar &&
echo "zzz" >bar/zzz &&
echo "#!/bin/sh" >exec.sh &&
chmod +x exec.sh &&
{
test_have_prereq !POSIXPERM ||
chmod +x exec.sh
} &&
svn_cmd import -m "import for git svn" . "$svnrepo" >/dev/null
) &&
rm -rf import &&
@@ -117,7 +120,7 @@ test_expect_success "$name" '
name='remove executable bit from a file'
test_expect_success "$name" '
test_expect_success !MINGW "$name" '
rm -f "$GIT_DIR"/index &&
git checkout -f -b mybranch5 ${remotes_git_svn} &&
chmod -x exec.sh &&
@@ -130,7 +133,7 @@ test_expect_success "$name" '
name='add executable bit back file'
test_expect_success "$name" '
test_expect_success !MINGW "$name" '
chmod +x exec.sh &&
git update-index exec.sh &&
git commit -m "$name" &&
@@ -141,7 +144,7 @@ test_expect_success "$name" '
name='executable file becomes a symlink to file'
test_expect_success "$name" '
test_expect_success !MINGW "$name" '
rm exec.sh &&
ln -s file exec.sh &&
git update-index exec.sh &&
@@ -153,8 +156,11 @@ test_expect_success "$name" '
name='new symlink is added to a file that was also just made executable'
test_expect_success "$name" '
chmod +x file &&
test_expect_success !MINGW "$name" '
{
test_have_prereq !POSIXPERM ||
chmod +x file
} &&
ln -s file exec-2.sh &&
git update-index --add file exec-2.sh &&
git commit -m "$name" &&
@@ -165,7 +171,7 @@ test_expect_success "$name" '
test -h "$SVN_TREE"/exec-2.sh'
name='modify a symlink to become a file'
test_expect_success "$name" '
test_expect_success !MINGW "$name" '
echo git help >help &&
rm exec-2.sh &&
cp help exec-2.sh &&
@@ -181,7 +187,7 @@ test_expect_success "$name" '
name="commit with UTF-8 message: locale: $GIT_SVN_LC_ALL"
LC_ALL="$GIT_SVN_LC_ALL"
export LC_ALL
test_expect_success UTF8 "$name" "
test_expect_success !MINGW,UTF8 "$name" "
echo '# hello' >> exec-2.sh &&
git update-index exec-2.sh &&
git commit -m 'éï∏' &&
@@ -214,7 +220,7 @@ tree d667270a1f7b109f5eb3aaea21ede14b56bfdd6e
tree 8f51f74cf0163afc9ad68a4b1537288c4558b5a4
EOF
test_expect_success "$name" "test_cmp a expected"
test_expect_success !MINGW "$name" "test_cmp a expected"
test_expect_success 'exit if remote refs are ambigious' "
git config --add svn-remote.svn.fetch \

View File

@@ -23,8 +23,11 @@ test_expect_success 'setup svnrepo' '
"$svnrepo/pr ject/branches/$scary_uri" &&
svn_cmd cp -m "leading dot" "$svnrepo/pr ject/trunk" \
"$svnrepo/pr ject/branches/.leading_dot" &&
svn_cmd cp -m "trailing dot" "$svnrepo/pr ject/trunk" \
"$svnrepo/pr ject/branches/trailing_dot." &&
{
test_have_prereq MINGW ||
svn_cmd cp -m "trailing dot" "$svnrepo/pr ject/trunk" \
"$svnrepo/pr ject/branches/trailing_dot."
} &&
svn_cmd cp -m "trailing .lock" "$svnrepo/pr ject/trunk" \
"$svnrepo/pr ject/branches/trailing_dotlock.lock" &&
svn_cmd cp -m "reflog" "$svnrepo/pr ject/trunk" \
@@ -45,7 +48,10 @@ test_expect_success 'test clone with funky branch names' '
git rev-parse "refs/remotes/origin/more%20fun%20plugin!" &&
git rev-parse "refs/remotes/origin/$scary_ref" &&
git rev-parse "refs/remotes/origin/%2Eleading_dot" &&
git rev-parse "refs/remotes/origin/trailing_dot%2E" &&
{
test_have_prereq MINGW ||
git rev-parse "refs/remotes/origin/trailing_dot%2E"
} &&
git rev-parse "refs/remotes/origin/trailing_dotlock%2Elock" &&
git rev-parse "refs/remotes/origin/$non_reflog"
)

View File

@@ -35,7 +35,10 @@ test_expect_success 'enable auto-props config' '
test_expect_success 'add files matching auto-props' '
echo "#!$SHELL_PATH" >exec1.sh &&
chmod +x exec1.sh &&
{
test_have_prereq !POSIXPERM ||
chmod +x exec1.sh
} &&
echo "hello" >hello.txt &&
echo bar >bar &&
git add exec1.sh hello.txt bar &&
@@ -49,7 +52,10 @@ test_expect_success 'disable auto-props config' '
test_expect_success 'add files matching disabled auto-props' '
echo "#$SHELL_PATH" >exec2.sh &&
chmod +x exec2.sh &&
{
test_have_prereq !POSIXPERM ||
chmod +x exec2.sh
} &&
echo "world" >world.txt &&
echo zot >zot &&
git add exec2.sh world.txt zot &&
@@ -65,7 +71,10 @@ test_expect_success 'check resulting svn repository' '
cd svnrepo &&
# Check properties from first commit.
test "x$(svn_cmd propget svn:executable exec1.sh)" = "x*" &&
{
test_have_prereq !POSIXPERM ||
test "x$(svn_cmd propget svn:executable exec1.sh)" = "x*"
} &&
test "x$(svn_cmd propget svn:mime-type exec1.sh)" = \
"xapplication/x-shellscript" &&
test "x$(svn_cmd propget svn:mime-type hello.txt)" = "xtext/plain" &&
@@ -73,7 +82,10 @@ test_expect_success 'check resulting svn repository' '
test "x$(svn_cmd propget svn:mime-type bar)" = "x" &&
# Check properties from second commit.
test "x$(svn_cmd propget svn:executable exec2.sh)" = "x*" &&
{
test_have_prereq !POSIXPERM ||
test "x$(svn_cmd propget svn:executable exec2.sh)" = "x*"
} &&
test "x$(svn_cmd propget svn:mime-type exec2.sh)" = "x" &&
test "x$(svn_cmd propget svn:mime-type world.txt)" = "x" &&
test "x$(svn_cmd propget svn:eol-style world.txt)" = "x" &&

View File

@@ -91,7 +91,7 @@ test_expect_success 'fetch continues after authors-file is fixed' '
)
'
test_expect_success 'fresh clone with svn.authors-file in config' '
test_expect_success !MINGW 'fresh clone with svn.authors-file in config' '
(
rm -r "$GIT_DIR" &&
test x = x"$(git config svn.authorsfile)" &&

View File

@@ -522,4 +522,15 @@ test_expect_success 'delete refspec' '
test_cmp expected actual
'
cat > expected << EOF
reset refs/heads/master
from $(git rev-parse master)
EOF
test_expect_failure 'refs are updated even if no commits need to be exported' '
git fast-export master..master > actual &&
test_cmp expected actual
'
test_done

View File

@@ -10,6 +10,14 @@ cvs CLI client via git-cvsserver server'
. ./test-lib.sh
if test_have_prereq MINGW
then
# Avoid posix-to-windows path mangling
pwd () {
builtin pwd
}
fi
if ! test_have_prereq PERL; then
skip_all='skipping git cvsserver tests, perl not available'
test_done

View File

@@ -11,6 +11,14 @@ repository using cvs CLI client via git-cvsserver server'
. ./test-lib.sh
if test_have_prereq MINGW
then
# Avoid posix-to-windows path mangling
pwd () {
builtin pwd
}
fi
marked_as () {
foundEntry="$(grep "^/$2/" "$1/CVS/Entries")"
if [ x"$foundEntry" = x"" ] ; then

View File

@@ -7,6 +7,14 @@ tags, branches and other git refspecs'
. ./test-lib.sh
if test_have_prereq MINGW
then
# Avoid posix-to-windows path mangling
pwd () {
builtin pwd
}
fi
#########
check_start_tree() {