diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 4691fbcb64..6d7e204fdb 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -59,7 +59,9 @@ GIT_QUIET= say () { if test -z "$GIT_QUIET" then - printf '%s\n' "$*" + cat < /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 <2GB && diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh index 1a56e5e82e..415e21339d 100755 --- a/t/t0027-auto-crlf.sh +++ b/t/t0027-auto-crlf.sh @@ -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 diff --git a/t/t0200-gettext-basic.sh b/t/t0200-gettext-basic.sh index 8853d8afb9..6ab50b4818 100755 --- a/t/t0200-gettext-basic.sh +++ b/t/t0200-gettext-basic.sh @@ -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 diff --git a/t/t0204-gettext-reencode-sanity.sh b/t/t0204-gettext-reencode-sanity.sh index 8437e51eb5..26cf867773 100755 --- a/t/t0204-gettext-reencode-sanity.sh +++ b/t/t0204-gettext-reencode-sanity.sh @@ -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: ?? ???? ??? ?? ???? ?? ??? ????? ??????????? ??? ?? ????" diff --git a/t/t1501-worktree.sh b/t/t1501-worktree.sh index cc5b870e58..afce274133 100755 --- a/t/t1501-worktree.sh +++ b/t/t1501-worktree.sh @@ -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 && diff --git a/t/t1508-at-combinations.sh b/t/t1508-at-combinations.sh index 078e1195df..09c1406194 100755 --- a/t/t1508-at-combinations.sh +++ b/t/t1508-at-combinations.sh @@ -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}" diff --git a/t/t5503-tagfollow.sh b/t/t5503-tagfollow.sh index 4ca48f0276..d2b86594ff 100755 --- a/t/t5503-tagfollow.sh +++ b/t/t5503-tagfollow.sh @@ -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 && diff --git a/t/t5504-fetch-receive-strict.sh b/t/t5504-fetch-receive-strict.sh index 44f3d5fb28..182f42ee2d 100755 --- a/t/t5504-fetch-receive-strict.sh +++ b/t/t5504-fetch-receive-strict.sh @@ -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 diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh index 7b56081137..e0dfe61d66 100755 --- a/t/t7001-mv.sh +++ b/t/t7001-mv.sh @@ -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 && diff --git a/t/t9020-remote-svn.sh b/t/t9020-remote-svn.sh index 4d81ba1c2c..7e54d26ced 100755 --- a/t/t9020-remote-svn.sh +++ b/t/t9020-remote-svn.sh @@ -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 diff --git a/t/t9100-git-svn-basic.sh b/t/t9100-git-svn-basic.sh index 4fea8d901b..00e92241d1 100755 --- a/t/t9100-git-svn-basic.sh +++ b/t/t9100-git-svn-basic.sh @@ -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 \ diff --git a/t/t9118-git-svn-funky-branch-names.sh b/t/t9118-git-svn-funky-branch-names.sh index ed4d1369cc..73d98e7041 100755 --- a/t/t9118-git-svn-funky-branch-names.sh +++ b/t/t9118-git-svn-funky-branch-names.sh @@ -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" ) diff --git a/t/t9124-git-svn-dcommit-auto-props.sh b/t/t9124-git-svn-dcommit-auto-props.sh index aa841e1299..c851121d6b 100755 --- a/t/t9124-git-svn-dcommit-auto-props.sh +++ b/t/t9124-git-svn-dcommit-auto-props.sh @@ -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" && diff --git a/t/t9130-git-svn-authors-file.sh b/t/t9130-git-svn-authors-file.sh index c44de267a1..0a9cd87136 100755 --- a/t/t9130-git-svn-authors-file.sh +++ b/t/t9130-git-svn-authors-file.sh @@ -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)" && diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh index 66c8b0a371..b7dedb17a7 100755 --- a/t/t9350-fast-export.sh +++ b/t/t9350-fast-export.sh @@ -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 diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh index 6146c3fec2..27a9b0ec03 100755 --- a/t/t9400-git-cvsserver-server.sh +++ b/t/t9400-git-cvsserver-server.sh @@ -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 diff --git a/t/t9401-git-cvsserver-crlf.sh b/t/t9401-git-cvsserver-crlf.sh index 5a4ed28e49..5271432b8a 100755 --- a/t/t9401-git-cvsserver-crlf.sh +++ b/t/t9401-git-cvsserver-crlf.sh @@ -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 diff --git a/t/t9402-git-cvsserver-refs.sh b/t/t9402-git-cvsserver-refs.sh index d00df08731..936fd762e5 100755 --- a/t/t9402-git-cvsserver-refs.sh +++ b/t/t9402-git-cvsserver-refs.sh @@ -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() {