{"thread":{"id":"23759","subject":"[PATCH] Fix a false negative in t5512 when run using sh -x","startedAt":"2010-05-10T07:19:06Z","lastAt":"2010-05-10T11:34:32Z","messageCount":9,"participants":["Johannes Sixt","Tay Ray Chuan","Sverre Rabbelier","Jonathan Nieder"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"141353","messageId":"1273475946-2079-1-git-send-email-j6t@kdbg.org","threadId":"23759","inReplyTo":null,"subject":"[PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2010-05-10T07:19:06Z","receivedAt":"2010-05-10T07:19:06Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"The test compares the stderr of a git command called with test_must_fail\nto some expected output. With bash (and probably other shells as well)\nwhen run with -x turned on, command trace output ends up in the captured\noutput. Of course, the actual output does not match the expected output\nanymore.\n\nUse 'grep' to check for expected output.\n\nSigned-off-by: Johannes Sixt <j6t@kdbg.org>\n---\n t/t5512-ls-remote.sh |    6 +-----\n 1 files changed, 1 insertions(+), 5 deletions(-)\n\ndiff --git a/t/t5512-ls-remote.sh b/t/t5512-ls-remote.sh\nindex 3cf1b3d..24c8684 100755\n--- a/t/t5512-ls-remote.sh\n+++ b/t/t5512-ls-remote.sh\n@@ -86,10 +86,6 @@ test_expect_success 'use branch.<name>.remote if possible' '\n \n '\n \n-cat >exp <<EOF\n-fatal: 'refs*master' does not appear to be a git repository\n-fatal: The remote end hung up unexpectedly\n-EOF\n test_expect_success 'confuses pattern as remote when no remote specified' '\n \t#\n \t# Do not expect \"git ls-remote <pattern>\" to work; ls-remote, correctly,\n@@ -103,7 +99,7 @@ test_expect_success 'confuses pattern as remote when no remote specified' '\n \t# We could just as easily have used \"master\"; the \"*\" emphasizes its\n \t# role as a pattern.\n \ttest_must_fail git ls-remote refs*master >actual 2>&1 &&\n-\ttest_cmp exp actual\n+\tgrep \"does not appear to be a git repository\" actual\n \n '\n \n-- \n1.7.1.75.g68e2c\n"},{"id":"141354","messageId":"AANLkTiloDJFtaQDEsL2ZquN1moAAeHr40YAEf1RCcR9f@mail.gmail.com","threadId":"23759","inReplyTo":"1273475946-2079-1-git-send-email-j6t@kdbg.org","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Tay Ray Chuan","fromEmail":"rctay89@gmail.com","sentAt":"2010-05-10T07:28:53Z","receivedAt":"2010-05-10T07:28:53Z","isPatch":true,"sender":{"key":"rctay89@gmail.com","avatar":"https://avatars.githubusercontent.com/u/61553?v=4"},"body":"On Mon, May 10, 2010 at 3:19 PM, Johannes Sixt <j6t@kdbg.org> wrote:\n> The test compares the stderr of a git command called with test_must_fail\n> to some expected output. With bash (and probably other shells as well)\n> when run with -x turned on, command trace output ends up in the captured\n> output. Of course, the actual output does not match the expected output\n> anymore.\n>\n> Use 'grep' to check for expected output.\n[snip]\n> @@ -103,7 +99,7 @@ test_expect_success 'confuses pattern as remote when no remote specified' '\n>        # We could just as easily have used \"master\"; the \"*\" emphasizes its\n>        # role as a pattern.\n>        test_must_fail git ls-remote refs*master >actual 2>&1 &&\n> -       test_cmp exp actual\n> +       grep \"does not appear to be a git repository\" actual\n>\n>  '\n\nfor the sake of cross-platform/shell, I think this trade-off is acceptable.\n\n  Acked-by: Tay Ray Chuan <rctay89@gmail.com>\n\n-- \nCheers,\nRay Chuan\n"},{"id":"141361","messageId":"AANLkTilaZlku8eQpAjMPCPkzeVyg2u21KOcsZkxn4Kxd@mail.gmail.com","threadId":"23759","inReplyTo":"1273475946-2079-1-git-send-email-j6t@kdbg.org","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2010-05-10T09:09:03Z","receivedAt":"2010-05-10T09:09:03Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nOn Mon, May 10, 2010 at 09:19, Johannes Sixt <j6t@kdbg.org> wrote:\n> Use 'grep' to check for expected output.\n\nDon't we do this ('test_cmp' on expected output) in many other places\nas well? Why is this different?\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"141375","messageId":"4BE7DEB8.5000900@viscovery.net","threadId":"23759","inReplyTo":"AANLkTilaZlku8eQpAjMPCPkzeVyg2u21KOcsZkxn4Kxd@mail.gmail.com","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2010-05-10T10:23:52Z","receivedAt":"2010-05-10T10:23:52Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Am 5/10/2010 11:09, schrieb Sverre Rabbelier:\n> On Mon, May 10, 2010 at 09:19, Johannes Sixt <j6t@kdbg.org> wrote:\n>> Use 'grep' to check for expected output.\n> \n> Don't we do this ('test_cmp' on expected output) in many other places\n> as well? Why is this different?\n\nThis is really only special because the test_cmp looked at the stderr of a\ntest_must_fail command. The old code was:\n\n\ttest_must_fail git ls-remote refs*master >actual 2>&1 &&\n\ttest_cmp exp actual\n\nWith bash, 'actual' contained:\n\n  ++ git ls-remote 'refs*master'\n  fatal: 'refs*master' does not appear to be a git repository\n  fatal: The remote end hung up unexpectedly\n  ++ test 128 -gt 0 -a 128 -le 129 -o 128 -gt 192\n\ni.e., there were command traces in the file.\n\n-- Hannes\n"},{"id":"141378","messageId":"20100510103427.GA4806@progeny.tock","threadId":"23759","inReplyTo":"AANLkTilaZlku8eQpAjMPCPkzeVyg2u21KOcsZkxn4Kxd@mail.gmail.com","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-05-10T10:34:27Z","receivedAt":"2010-05-10T10:34:27Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Sverre Rabbelier wrote:\n\n> Don't we do this ('test_cmp' on expected output) in many other places\n> as well? Why is this different?\n\nThe problem arises with test_cmp on expected output from stderr, since\nsh -x will mingle the trace of a function with the standard error\nstream.  bash provides BASH_XTRACEFD to work around this misdesign,\nbut other shells might not be so helpful.\n\nHere’s a workaround, ugly as sin.  It overreaches a little because I\ndid not bother to check which tests grep and which tests test_cmp\ntheir output.\n\n t/t0040-parse-options.sh       |    6 +++---\n t/t1300-repo-config.sh         |    2 +-\n t/t1450-fsck.sh                |    2 +-\n t/t1503-rev-parse-verify.sh    |   20 ++++++++++----------\n t/t1506-rev-parse-diagnosis.sh |   24 ++++++++++++------------\n t/t2204-add-ignored.sh         |    8 ++++----\n t/t3030-merge-recursive.sh     |    6 +++---\n t/t3400-rebase.sh              |    2 +-\n t/t3501-revert-cherry-pick.sh  |    2 +-\n t/t3800-mktag.sh               |    2 +-\n t/t4011-diff-symlink.sh        |    2 +-\n t/t4014-format-patch.sh        |    6 +++---\n t/t4120-apply-popt.sh          |    2 +-\n t/t4124-apply-ws-rule.sh       |    2 +-\n t/t4133-apply-filenames.sh     |    6 +++---\n t/t5300-pack-object.sh         |    2 +-\n t/t5400-send-pack.sh           |    2 +-\n t/t5406-remote-rejects.sh      |    4 +++-\n t/t5505-remote.sh              |    4 ++--\n t/t5510-fetch.sh               |    2 +-\n t/t5512-ls-remote.sh           |    2 +-\n t/t6024-recursive-merge.sh     |    2 +-\n t/t6030-bisect-porcelain.sh    |    6 +++---\n t/t7110-reset-merge.sh         |   10 +++++-----\n t/t7201-co.sh                  |    2 +-\n t/t7610-mergetool.sh           |    6 +++---\n t/t8003-blame.sh               |    4 ++--\n t/t9001-send-email.sh          |   14 +++++++-------\n t/t9108-git-svn-glob.sh        |    2 +-\n 29 files changed, 78 insertions(+), 76 deletions(-)\n\ndiff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh\nindex 3d450ed..a2d53a9 100755\n--- a/t/t0040-parse-options.sh\n+++ b/t/t0040-parse-options.sh\n@@ -45,7 +45,7 @@ Standard options\n EOF\n \n test_expect_success 'test help' '\n-\ttest_must_fail test-parse-options -h > output 2> output.err &&\n+\ttest_must_fail eval \"test-parse-options -h >output 2>output.err\" &&\n \ttest ! -s output &&\n \ttest_cmp expect.err output.err\n '\n@@ -172,7 +172,7 @@ error: did you mean \\`--boolean\\` (with two dashes ?)\n EOF\n \n test_expect_success 'detect possible typos' '\n-\ttest_must_fail test-parse-options -boolean > output 2> output.err &&\n+\ttest_must_fail eval \"test-parse-options -boolean >output 2>output.err\" &&\n \ttest ! -s output &&\n \ttest_cmp typo.err output.err\n '\n@@ -240,7 +240,7 @@ Callback: \"not set\", 1\n EOF\n \n test_expect_success 'OPT_CALLBACK() and callback errors work' '\n-\ttest_must_fail test-parse-options --no-length > output 2> output.err &&\n+\ttest_must_fail eval \"test-parse-options --no-length >output 2>output.err\" &&\n \ttest_cmp expect output &&\n \ttest_cmp expect.err output.err\n '\ndiff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh\nindex f11f98c..2808b24 100755\n--- a/t/t1300-repo-config.sh\n+++ b/t/t1300-repo-config.sh\n@@ -344,7 +344,7 @@ test_expect_success 'get bool variable with empty value' \\\n \t cmp output expect'\n \n test_expect_success 'no arguments, but no crash' '\n-\ttest_must_fail git config >output 2>&1 &&\n+\ttest_must_fail eval \"git config >output 2>&1\" &&\n \tgrep usage output\n '\n \ndiff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh\nindex 49cae3e..9b9efb8 100755\n--- a/t/t1450-fsck.sh\n+++ b/t/t1450-fsck.sh\n@@ -87,7 +87,7 @@ EOF\n test_expect_success 'tag pointing to something else than its type' '\n \ttag=$(git hash-object -t tag -w --stdin < wrong-tag) &&\n \techo $tag > .git/refs/tags/wrong &&\n-\ttest_must_fail git fsck --tags 2>out &&\n+\ttest_must_fail eval \"git fsck --tags 2>out\" &&\n \tcat out &&\n \tgrep \"error in tag.*broken links\" out &&\n \trm .git/refs/tags/wrong\ndiff --git a/t/t1503-rev-parse-verify.sh b/t/t1503-rev-parse-verify.sh\nindex cc65394..b731a28 100755\n--- a/t/t1503-rev-parse-verify.sh\n+++ b/t/t1503-rev-parse-verify.sh\n@@ -58,28 +58,28 @@ test_expect_success 'works with one good rev' '\n '\n \n test_expect_success 'fails with any bad rev or many good revs' '\n-\ttest_must_fail git rev-parse --verify 2>error &&\n+\ttest_must_fail eval \"git rev-parse --verify 2>error\" &&\n \tgrep \"single revision\" error &&\n-\ttest_must_fail git rev-parse --verify foo 2>error &&\n+\ttest_must_fail eval \"git rev-parse --verify foo 2>error\" &&\n \tgrep \"single revision\" error &&\n-\ttest_must_fail git rev-parse --verify HEAD bar 2>error &&\n+\ttest_must_fail eval \"git rev-parse --verify HEAD bar 2>error\" &&\n \tgrep \"single revision\" error &&\n-\ttest_must_fail git rev-parse --verify baz HEAD 2>error &&\n+\ttest_must_fail eval \"git rev-parse --verify baz HEAD 2>error\" &&\n \tgrep \"single revision\" error &&\n-\ttest_must_fail git rev-parse --verify $HASH2 HEAD 2>error &&\n+\ttest_must_fail eval \"git rev-parse --verify $HASH2 HEAD 2>error\" &&\n \tgrep \"single revision\" error\n '\n \n test_expect_success 'fails silently when using -q' '\n-\ttest_must_fail git rev-parse --verify --quiet 2>error &&\n+\ttest_must_fail eval \"git rev-parse --verify --quiet 2>error\" &&\n \ttest -z \"$(cat error)\" &&\n-\ttest_must_fail git rev-parse -q --verify foo 2>error &&\n+\ttest_must_fail eval \"git rev-parse -q --verify foo 2>error\" &&\n \ttest -z \"$(cat error)\" &&\n-\ttest_must_fail git rev-parse --verify -q HEAD bar 2>error &&\n+\ttest_must_fail eval \"git rev-parse --verify -q HEAD bar 2>error\" &&\n \ttest -z \"$(cat error)\" &&\n-\ttest_must_fail git rev-parse --quiet --verify baz HEAD 2>error &&\n+\ttest_must_fail eval \"git rev-parse --quiet --verify baz HEAD 2>error\" &&\n \ttest -z \"$(cat error)\" &&\n-\ttest_must_fail git rev-parse -q --verify $HASH2 HEAD 2>error &&\n+\ttest_must_fail eval \"git rev-parse -q --verify $HASH2 HEAD 2>error\" &&\n \ttest -z \"$(cat error)\"\n '\n \ndiff --git a/t/t1506-rev-parse-diagnosis.sh b/t/t1506-rev-parse-diagnosis.sh\nindex af721f9..67dcb33 100755\n--- a/t/t1506-rev-parse-diagnosis.sh\n+++ b/t/t1506-rev-parse-diagnosis.sh\n@@ -32,37 +32,37 @@ test_expect_success 'correct file objects' '\n '\n \n test_expect_success 'incorrect revision id' '\n-\ttest_must_fail git rev-parse foobar:file.txt 2>error &&\n+\ttest_must_fail eval \"git rev-parse foobar:file.txt 2>error\" &&\n \tgrep \"Invalid object name '\"'\"'foobar'\"'\"'.\" error &&\n-\ttest_must_fail git rev-parse foobar 2> error &&\n+\ttest_must_fail eval \"git rev-parse foobar 2>error\" &&\n \tgrep \"unknown revision or path not in the working tree.\" error\n '\n \n test_expect_success 'incorrect file in sha1:path' '\n-\ttest_must_fail git rev-parse HEAD:nothing.txt 2> error &&\n+\ttest_must_fail eval \"git rev-parse HEAD:nothing.txt 2>error\" &&\n \tgrep \"fatal: Path '\"'\"'nothing.txt'\"'\"' does not exist in '\"'\"'HEAD'\"'\"'\" error &&\n-\ttest_must_fail git rev-parse HEAD:index-only.txt 2> error &&\n+\ttest_must_fail eval \"git rev-parse HEAD:index-only.txt 2>error\" &&\n \tgrep \"fatal: Path '\"'\"'index-only.txt'\"'\"' exists on disk, but not in '\"'\"'HEAD'\"'\"'.\" error &&\n \t(cd subdir &&\n-\t test_must_fail git rev-parse HEAD:file2.txt 2> error &&\n+\t test_must_fail eval \"git rev-parse HEAD:file2.txt 2>error\" &&\n \t grep \"Did you mean '\"'\"'HEAD:subdir/file2.txt'\"'\"'?\" error )\n '\n \n test_expect_success 'incorrect file in :path and :N:path' '\n-\ttest_must_fail git rev-parse :nothing.txt 2> error &&\n+\ttest_must_fail eval \"git rev-parse :nothing.txt 2>error\" &&\n \tgrep \"fatal: Path '\"'\"'nothing.txt'\"'\"' does not exist (neither on disk nor in the index).\" error &&\n-\ttest_must_fail git rev-parse :1:nothing.txt 2> error &&\n+\ttest_must_fail eval \"git rev-parse :1:nothing.txt 2>error\" &&\n \tgrep \"Path '\"'\"'nothing.txt'\"'\"' does not exist (neither on disk nor in the index).\" error &&\n-\ttest_must_fail git rev-parse :1:file.txt 2> error &&\n+\ttest_must_fail eval \"git rev-parse :1:file.txt 2>error\" &&\n \tgrep \"Did you mean '\"'\"':0:file.txt'\"'\"'?\" error &&\n \t(cd subdir &&\n-\t test_must_fail git rev-parse :1:file.txt 2> error &&\n+\t test_must_fail eval \"git rev-parse :1:file.txt 2>error\" &&\n \t grep \"Did you mean '\"'\"':0:file.txt'\"'\"'?\" error &&\n-\t test_must_fail git rev-parse :file2.txt 2> error &&\n+\t test_must_fail eval \"git rev-parse :file2.txt 2>error\" &&\n \t grep \"Did you mean '\"'\"':0:subdir/file2.txt'\"'\"'?\" error &&\n-\t test_must_fail git rev-parse :2:file2.txt 2> error &&\n+\t test_must_fail eval \"git rev-parse :2:file2.txt 2>error\" &&\n \t grep \"Did you mean '\"'\"':0:subdir/file2.txt'\"'\"'?\" error) &&\n-\ttest_must_fail git rev-parse :disk-only.txt 2> error &&\n+\ttest_must_fail eval \"git rev-parse :disk-only.txt 2>error\" &&\n \tgrep \"fatal: Path '\"'\"'disk-only.txt'\"'\"' exists on disk, but not in the index.\" error\n '\n \ndiff --git a/t/t2204-add-ignored.sh b/t/t2204-add-ignored.sh\nindex 24afdab..89052da 100755\n--- a/t/t2204-add-ignored.sh\n+++ b/t/t2204-add-ignored.sh\n@@ -29,7 +29,7 @@ for i in ign dir/ign dir/sub dir/sub/*ign sub/file sub sub/*\n do\n \ttest_expect_success \"complaints for ignored $i\" '\n \t\trm -f .git/index &&\n-\t\ttest_must_fail git add \"$i\" 2>err &&\n+\t\ttest_must_fail eval \"git add \\\"\\$i\\\" 2>err\" &&\n \t\tgit ls-files \"$i\" >out &&\n \t\t! test -s out &&\n \t\tgrep -e \"Use -f if\" err &&\n@@ -38,7 +38,7 @@ do\n \n \ttest_expect_success \"complaints for ignored $i with unignored file\" '\n \t\trm -f .git/index &&\n-\t\ttest_must_fail git add \"$i\" file 2>err &&\n+\t\ttest_must_fail eval \"git add \\\"\\$i\\\" file 2>err\" &&\n \t\tgit ls-files \"$i\" >out &&\n \t\t! test -s out &&\n \t\tgrep -e \"Use -f if\" err &&\n@@ -52,7 +52,7 @@ do\n \t\trm -f .git/index &&\n \t\t(\n \t\t\tcd dir &&\n-\t\t\ttest_must_fail git add \"$i\" 2>err &&\n+\t\t\ttest_must_fail eval \"git add \\\"\\$i\\\" 2>err\" &&\n \t\t\tgit ls-files \"$i\" >out &&\n \t\t\t! test -s out &&\n \t\t\tgrep -e \"Use -f if\" err &&\n@@ -67,7 +67,7 @@ do\n \t\trm -f .git/index &&\n \t\t(\n \t\t\tcd sub &&\n-\t\t\ttest_must_fail git add \"$i\" 2>err &&\n+\t\t\ttest_must_fail eval \"git add \\\"\\$i\\\" 2>err\" &&\n \t\t\tgit ls-files \"$i\" >out &&\n \t\t\t! test -s out &&\n \t\t\tgrep -e \"Use -f if\" err &&\ndiff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh\nindex 9929f82..589ab49 100755\n--- a/t/t3030-merge-recursive.sh\n+++ b/t/t3030-merge-recursive.sh\n@@ -275,13 +275,13 @@ test_expect_success 'fail if the index has unresolved entries' '\n \tgit checkout -f \"$c1\" &&\n \n \ttest_must_fail git merge \"$c5\" &&\n-\ttest_must_fail git merge \"$c5\" 2> out &&\n+\ttest_must_fail eval \"git merge \\\"\\$c5\\\" 2>out\" &&\n \tgrep \"not possible because you have unmerged files\" out &&\n \tgit add -u &&\n-\ttest_must_fail git merge \"$c5\" 2> out &&\n+\ttest_must_fail eval \"git merge \\\"\\$c5\\\" 2>out\" &&\n \tgrep \"You have not concluded your merge\" out &&\n \trm -f .git/MERGE_HEAD &&\n-\ttest_must_fail git merge \"$c5\" 2> out &&\n+\ttest_must_fail eval \"git merge \\\"\\$c5\\\" 2>out\" &&\n \tgrep \"Your local changes to .* would be overwritten by merge.\" out\n '\n \ndiff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh\nindex dbf7dfb..ee3314b 100755\n--- a/t/t3400-rebase.sh\n+++ b/t/t3400-rebase.sh\n@@ -123,7 +123,7 @@ test_expect_success 'rebase a single mode change' '\n \n test_expect_success 'Show verbose error when HEAD could not be detached' '\n      : > B &&\n-     test_must_fail git rebase topic 2> output.err > output.out &&\n+     test_must_fail eval \"git rebase topic 2>output.err >output.out\" &&\n      grep \"Untracked working tree file .B. would be overwritten\" output.err\n '\n \ndiff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh\nindex 7f85815..6e0d521 100755\n--- a/t/t3501-revert-cherry-pick.sh\n+++ b/t/t3501-revert-cherry-pick.sh\n@@ -65,7 +65,7 @@ test_expect_success 'revert forbidden on dirty working tree' '\n \n \techo content >extra_file &&\n \tgit add extra_file &&\n-\ttest_must_fail git revert HEAD 2>errors &&\n+\ttest_must_fail eval \"git revert HEAD 2>errors\" &&\n \tgrep \"Your local changes would be overwritten by \" errors\n \n '\ndiff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh\nindex 8eb4794..b3d84ad 100755\n--- a/t/t3800-mktag.sh\n+++ b/t/t3800-mktag.sh\n@@ -14,7 +14,7 @@ test_description='git mktag: tag object verify test'\n check_verify_failure () {\n \texpect=\"$2\"\n \ttest_expect_success \"$1\" '\n-\t\t( test_must_fail git mktag <tag.sig 2>message ) &&\n+\t\ttest_must_fail eval \"git mktag <tag.sig 2>message\" &&\n \t\tgrep \"$expect\" message\n \t'\n }\ndiff --git a/t/t4011-diff-symlink.sh b/t/t4011-diff-symlink.sh\nindex e12fbea..09cce8b 100755\n--- a/t/t4011-diff-symlink.sh\n+++ b/t/t4011-diff-symlink.sh\n@@ -91,7 +91,7 @@ test_expect_success \\\n     'diff symlinks with non-existing targets' \\\n     'ln -s narf pinky &&\n     ln -s take\\ over brain &&\n-    test_must_fail git diff --no-index pinky brain > output 2> output.err &&\n+    test_must_fail eval \"git diff --no-index pinky brain >output 2>output.err\" &&\n     grep narf output &&\n     ! grep error output.err'\n test_done\ndiff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh\nindex d21c37f..9d1a555 100755\n--- a/t/t4014-format-patch.sh\n+++ b/t/t4014-format-patch.sh\n@@ -593,11 +593,11 @@ echo \"fatal: --name-status does not make sense\" > expect.name-status\n echo \"fatal: --check does not make sense\" > expect.check\n \n test_expect_success 'options no longer allowed for format-patch' '\n-\ttest_must_fail git format-patch --name-only 2> output &&\n+\ttest_must_fail eval \"git format-patch --name-only 2>output\" &&\n \ttest_cmp expect.name-only output &&\n-\ttest_must_fail git format-patch --name-status 2> output &&\n+\ttest_must_fail eval \"git format-patch --name-status 2>output\" &&\n \ttest_cmp expect.name-status output &&\n-\ttest_must_fail git format-patch --check 2> output &&\n+\ttest_must_fail eval \"git format-patch --check 2>output\" &&\n \ttest_cmp expect.check output'\n \n test_expect_success 'format-patch --numstat should produce a patch' '\ndiff --git a/t/t4120-apply-popt.sh b/t/t4120-apply-popt.sh\nindex b463b4f..4b67cbd 100755\n--- a/t/t4120-apply-popt.sh\n+++ b/t/t4120-apply-popt.sh\n@@ -23,7 +23,7 @@ test_expect_success 'apply git diff with -p2' '\n '\n \n test_expect_success 'apply with too large -p' '\n-\ttest_must_fail git apply --stat -p3 patch.file 2>err &&\n+\ttest_must_fail eval \"git apply --stat -p3 patch.file 2>err\" &&\n \tgrep \"removing 3 leading\" err\n '\n \ndiff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh\nindex d0af697..7a00095 100755\n--- a/t/t4124-apply-ws-rule.sh\n+++ b/t/t4124-apply-ws-rule.sh\n@@ -248,7 +248,7 @@ test_expect_success 'blank at EOF with --whitespace=error' '\n \tgit diff -- one >patch &&\n \n \tgit checkout one &&\n-\ttest_must_fail git apply --whitespace=error patch 2>error &&\n+\ttest_must_fail eval \"git apply --whitespace=error patch 2>error\" &&\n \ttest_cmp expect one &&\n \tgrep \"new blank line at EOF\" error\n '\ndiff --git a/t/t4133-apply-filenames.sh b/t/t4133-apply-filenames.sh\nindex 3421807..5a172f4 100755\n--- a/t/t4133-apply-filenames.sh\n+++ b/t/t4133-apply-filenames.sh\n@@ -29,9 +29,9 @@ EOF\n '\n \n test_expect_success 'apply diff with inconsistent filenames in headers' '\n-\ttest_must_fail git apply bad1.patch 2>err\n-\tgrep \"inconsistent new filename\" err\n-\ttest_must_fail git apply bad2.patch 2>err\n+\ttest_must_fail eval \"git apply bad1.patch 2>err\" &&\n+\tgrep \"inconsistent new filename\" err &&\n+\ttest_must_fail eval \"git apply bad2.patch 2>err\" &&\n \tgrep \"inconsistent old filename\" err\n '\n \ndiff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh\nindex 7649b81..2d2cf26 100755\n--- a/t/t5300-pack-object.sh\n+++ b/t/t5300-pack-object.sh\n@@ -411,7 +411,7 @@ test_expect_success \\\n \n test_expect_success \\\n     'make sure index-pack detects the SHA1 collision' \\\n-    'test_must_fail git index-pack -o bad.idx test-3.pack 2>msg &&\n+    'test_must_fail eval \"git index-pack -o bad.idx test-3.pack 2>msg\" &&\n      grep \"SHA1 COLLISION FOUND\" msg'\n \n test_done\ndiff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh\nindex c718253..30da728 100755\n--- a/t/t5400-send-pack.sh\n+++ b/t/t5400-send-pack.sh\n@@ -195,7 +195,7 @@ test_expect_success 'deny pushing to delete current branch' '\n \trewound_push_setup &&\n \t(\n \t    cd child &&\n-\t    test_must_fail git send-pack ../parent :refs/heads/master 2>errs\n+\t    test_must_fail eval \"git send-pack ../parent :refs/heads/master 2>errs\"\n \t)\n '\n \ndiff --git a/t/t5406-remote-rejects.sh b/t/t5406-remote-rejects.sh\nindex 59e80a5..e52f8e8 100755\n--- a/t/t5406-remote-rejects.sh\n+++ b/t/t5406-remote-rejects.sh\n@@ -17,7 +17,9 @@ test_expect_success 'setup' '\n \tgit commit -a -m 2\n '\n \n-test_expect_success 'push reports error' 'test_must_fail git push 2>stderr'\n+test_expect_success 'push reports error' '\n+\ttest_must_fail eval \"git push 2>stderr\"\n+'\n \n test_expect_success 'individual ref reports error' 'grep rejected stderr'\n \ndiff --git a/t/t5505-remote.sh b/t/t5505-remote.sh\nindex 230c0cd..400c7b6 100755\n--- a/t/t5505-remote.sh\n+++ b/t/t5505-remote.sh\n@@ -252,8 +252,8 @@ EOF\n \n test_expect_success 'set-head --auto fails w/multiple HEADs' '\n \t(cd test &&\n-\t test_must_fail git remote set-head --auto two >output 2>&1 &&\n-\ttest_cmp expect output)\n+\t test_must_fail eval \"git remote set-head --auto two >output 2>&1\" &&\n+\t test_cmp expect output)\n '\n \n cat >test/expect <<EOF\ndiff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh\nindex 721821e..c49fb33 100755\n--- a/t/t5510-fetch.sh\n+++ b/t/t5510-fetch.sh\n@@ -242,7 +242,7 @@ test_expect_success 'fetch with a non-applying branch.<name>.merge' '\n \n # the strange name is: a\\!'b\n test_expect_success 'quoting of a strangely named repo' '\n-\ttest_must_fail git fetch \"a\\\\!'\\''b\" > result 2>&1 &&\n+\ttest_must_fail eval \"git fetch \\\"a\\\\\\\\!'\\''b\\\" >result 2>&1\" &&\n \tcat result &&\n \tgrep \"fatal: '\\''a\\\\\\\\!'\\''b'\\''\" result\n '\ndiff --git a/t/t5512-ls-remote.sh b/t/t5512-ls-remote.sh\nindex 3cf1b3d..a922e78 100755\n--- a/t/t5512-ls-remote.sh\n+++ b/t/t5512-ls-remote.sh\n@@ -102,7 +102,7 @@ test_expect_success 'confuses pattern as remote when no remote specified' '\n \n \t# We could just as easily have used \"master\"; the \"*\" emphasizes its\n \t# role as a pattern.\n-\ttest_must_fail git ls-remote refs*master >actual 2>&1 &&\n+\ttest_must_fail eval \"git ls-remote refs*master >actual 2>&1\" &&\n \ttest_cmp exp actual\n \n '\ndiff --git a/t/t6024-recursive-merge.sh b/t/t6024-recursive-merge.sh\nindex b3fbf65..253913f 100755\n--- a/t/t6024-recursive-merge.sh\n+++ b/t/t6024-recursive-merge.sh\n@@ -92,7 +92,7 @@ test_expect_success 'refuse to merge binary files' '\n \tprintf \"\\0\\0\" > binary-file &&\n \tgit add binary-file &&\n \tgit commit -m binary2 &&\n-\ttest_must_fail git merge F > merge.out 2> merge.err &&\n+\ttest_must_fail eval \"git merge F >merge.out 2>merge.err\" &&\n \tgrep \"Cannot merge binary files: binary-file (HEAD vs. F)\" merge.err\n '\n \ndiff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh\nindex 3b042aa..df98ed8 100755\n--- a/t/t6030-bisect-porcelain.sh\n+++ b/t/t6030-bisect-porcelain.sh\n@@ -368,7 +368,7 @@ test_expect_success 'bisect starting with a detached HEAD' '\n \n test_expect_success 'bisect errors out if bad and good are mistaken' '\n \tgit bisect reset &&\n-\ttest_must_fail git bisect start $HASH2 $HASH4 2> rev_list_error &&\n+\ttest_must_fail eval \"git bisect start $HASH2 $HASH4 2>rev_list_error\" &&\n \tgrep \"mistake good and bad\" rev_list_error &&\n \tgit bisect reset\n '\n@@ -432,7 +432,7 @@ test_expect_success 'bad merge base when good and bad are siblings' '\n \tgit bisect start \"$HASH7\" HEAD > my_bisect_log.txt &&\n \tgrep \"merge base must be tested\" my_bisect_log.txt &&\n \tgrep $HASH4 my_bisect_log.txt &&\n-\ttest_must_fail git bisect bad > my_bisect_log.txt 2>&1 &&\n+\ttest_must_fail eval \"git bisect bad >my_bisect_log.txt 2>&1\" &&\n \tgrep \"merge base $HASH4 is bad\" my_bisect_log.txt &&\n \tgrep \"fixed between $HASH4 and \\[$SIDE_HASH7\\]\" my_bisect_log.txt &&\n \tgit bisect reset\n@@ -568,7 +568,7 @@ test_expect_success 'skipping away from skipped commit' '\n '\n \n test_expect_success 'erroring out when using bad path parameters' '\n-\ttest_must_fail git bisect start $PARA_HASH7 $HASH1 -- foobar 2> error.txt &&\n+\ttest_must_fail eval \"git bisect start $PARA_HASH7 $HASH1 -- foobar 2>error.txt\" &&\n \tgrep \"bad path parameters\" error.txt\n '\n \ndiff --git a/t/t7110-reset-merge.sh b/t/t7110-reset-merge.sh\nindex 70cdd8e..39eb677 100755\n--- a/t/t7110-reset-merge.sh\n+++ b/t/t7110-reset-merge.sh\n@@ -172,7 +172,7 @@ test_expect_success 'reset --merge fails with changes in file it touches' '\n     git commit -m \"add line 5\" file1 &&\n     sed -e \"s/line 1/changed line 1/\" <file1 >file3 &&\n     mv file3 file1 &&\n-    test_must_fail git reset --merge HEAD^ 2>err.log &&\n+    test_must_fail eval \"git reset --merge HEAD^ 2>err.log\" &&\n     grep file1 err.log | grep \"not uptodate\"\n '\n \n@@ -188,7 +188,7 @@ test_expect_success 'reset --keep fails with changes in file it touches' '\n     git commit -m \"add line 5\" file1 &&\n     sed -e \"s/line 1/changed line 1/\" <file1 >file3 &&\n     mv file3 file1 &&\n-    test_must_fail git reset --keep HEAD^ 2>err.log &&\n+    test_must_fail eval \"git reset --keep HEAD^ 2>err.log\" &&\n     grep file1 err.log | grep \"not uptodate\"\n '\n \n@@ -236,7 +236,7 @@ test_expect_success '\"reset --merge HEAD^\" is ok with pending merge' '\n test_expect_success '\"reset --keep HEAD^\" fails with pending merge' '\n     git reset --hard third &&\n     test_must_fail git merge branch1 &&\n-    test_must_fail git reset --keep HEAD^ 2>err.log &&\n+    test_must_fail eval \"git reset --keep HEAD^ 2>err.log\" &&\n     grep \"middle of a merge\" err.log\n '\n \n@@ -262,7 +262,7 @@ test_expect_success '\"reset --merge HEAD\" is ok with pending merge' '\n test_expect_success '\"reset --keep HEAD\" fails with pending merge' '\n     git reset --hard third &&\n     test_must_fail git merge branch1 &&\n-    test_must_fail git reset --keep HEAD 2>err.log &&\n+    test_must_fail eval \"git reset --keep HEAD 2>err.log\" &&\n     grep \"middle of a merge\" err.log\n '\n \n@@ -288,7 +288,7 @@ test_expect_success '--keep fails with added/deleted merge' '\n     test -f file3 &&\n     git diff --exit-code file3 &&\n     git diff --exit-code branch3 file3 &&\n-    test_must_fail git reset --keep HEAD 2>err.log &&\n+    test_must_fail eval \"git reset --keep HEAD 2>err.log\" &&\n     grep \"middle of a merge\" err.log\n '\n \ndiff --git a/t/t7201-co.sh b/t/t7201-co.sh\nindex 1337fa5..c2b7c7f 100755\n--- a/t/t7201-co.sh\n+++ b/t/t7201-co.sh\n@@ -607,7 +607,7 @@ test_expect_success 'switch out of non-branch' '\n \tgit reset --hard master &&\n \tgit checkout master^0 &&\n \techo modified >one &&\n-\ttest_must_fail git checkout renamer 2>error.log &&\n+\ttest_must_fail eval \"git checkout renamer 2>error.log\" &&\n \t! grep \"^Previous HEAD\" error.log\n '\n \ndiff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh\nindex e768c3e..b710cc4 100755\n--- a/t/t7610-mergetool.sh\n+++ b/t/t7610-mergetool.sh\n@@ -41,7 +41,7 @@ test_expect_success 'setup' '\n \n test_expect_success 'custom mergetool' '\n     git checkout -b test1 branch1 &&\n-    test_must_fail git merge master >/dev/null 2>&1 &&\n+    test_must_fail eval \"git merge master >/dev/null 2>&1\" &&\n     ( yes \"\" | git mergetool file1 >/dev/null 2>&1 ) &&\n     ( yes \"\" | git mergetool file2 >/dev/null 2>&1 ) &&\n     ( yes \"\" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&\n@@ -54,7 +54,7 @@ test_expect_success 'custom mergetool' '\n test_expect_success 'mergetool crlf' '\n     git config core.autocrlf true &&\n     git checkout -b test2 branch1\n-    test_must_fail git merge master >/dev/null 2>&1 &&\n+    test_must_fail eval \"git merge master >/dev/null 2>&1\" &&\n     ( yes \"\" | git mergetool file1 >/dev/null 2>&1 ) &&\n     ( yes \"\" | git mergetool file2 >/dev/null 2>&1 ) &&\n     ( yes \"\" | git mergetool subdir/file3 >/dev/null 2>&1 ) &&\n@@ -69,7 +69,7 @@ test_expect_success 'mergetool crlf' '\n test_expect_success 'mergetool in subdir' '\n     git checkout -b test3 branch1\n     cd subdir && (\n-    test_must_fail git merge master >/dev/null 2>&1 &&\n+    test_must_fail eval \"git merge master >/dev/null 2>&1\" &&\n     ( yes \"\" | git mergetool file3 >/dev/null 2>&1 ) &&\n     test \"$(cat file3)\" = \"master new sub\" )\n '\ndiff --git a/t/t8003-blame.sh b/t/t8003-blame.sh\nindex 230143c..278db29 100755\n--- a/t/t8003-blame.sh\n+++ b/t/t8003-blame.sh\n@@ -166,12 +166,12 @@ EOF\n '\n \n test_expect_success 'blame -L with invalid start' '\n-\ttest_must_fail git blame -L5 tres 2>errors &&\n+\ttest_must_fail eval \"git blame -L5 tres 2>errors\" &&\n \tgrep \"has only 2 lines\" errors\n '\n \n test_expect_success 'blame -L with invalid end' '\n-\ttest_must_fail git blame -L1,5 tres 2>errors &&\n+\ttest_must_fail eval \"git blame -L1,5 tres 2>errors\" &&\n \tgrep \"has only 2 lines\" errors\n '\n \ndiff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh\nindex 640b3d2..5e4202f 100755\n--- a/t/t9001-send-email.sh\n+++ b/t/t9001-send-email.sh\n@@ -216,12 +216,12 @@ test_expect_success 'reject long lines' '\n \tclean_fake_sendmail &&\n \tcp $patches longline.patch &&\n \techo $z512$z512 >>longline.patch &&\n-\ttest_must_fail git send-email \\\n-\t\t--from=\"Example <nobody@example.com>\" \\\n-\t\t--to=nobody@example.com \\\n-\t\t--smtp-server=\"$(pwd)/fake.sendmail\" \\\n-\t\t$patches longline.patch \\\n-\t\t2>errors &&\n+\ttest_must_fail eval \"git send-email\" \\\n+\t\t\"--from=\\\"Example <nobody@example.com>\\\"\" \\\n+\t\t\"--to=nobody@example.com\" \\\n+\t\t\"--smtp-server=\\\"\\$(pwd)/fake.sendmail\\\"\" \\\n+\t\t\"\\$patches\" \"longline.patch\" \\\n+\t\t\"2>errors\" &&\n \tgrep longline.patch errors\n '\n \n@@ -754,7 +754,7 @@ test_expect_success 'detects ambiguous reference/file conflict' '\n \techo master > master &&\n \tgit add master &&\n \tgit commit -m\"add master\" &&\n-\ttest_must_fail git send-email --dry-run master 2>errors &&\n+\ttest_must_fail eval \"git send-email --dry-run master 2>errors\" &&\n \tgrep disambiguate errors\n '\n \ndiff --git a/t/t9108-git-svn-glob.sh b/t/t9108-git-svn-glob.sh\nindex d732d31..4494940 100755\n--- a/t/t9108-git-svn-glob.sh\n+++ b/t/t9108-git-svn-glob.sh\n@@ -104,7 +104,7 @@ test_expect_success 'test disallow multi-globs' '\n \t\tpoke tags/end/src/b/readme &&\n \t\tsvn_cmd commit -m \"try to try\"\n \t) &&\n-\ttest_must_fail git svn fetch three 2> stderr.three &&\n+\ttest_must_fail eval \"git svn fetch three 2>stderr.three\" &&\n \ttest_cmp expect.three stderr.three\n \t'\n \n-- \n1.7.1.82.g73d41.dirty\n"},{"id":"141379","messageId":"AANLkTilKpMfaXdPumJpX3ohRmkq0zOrIm3Hq-_ggjcFP@mail.gmail.com","threadId":"23759","inReplyTo":"4BE7DEB8.5000900@viscovery.net","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Sverre Rabbelier","fromEmail":"srabbelier@gmail.com","sentAt":"2010-05-10T10:45:14Z","receivedAt":"2010-05-10T10:45:14Z","isPatch":true,"sender":{"key":"srabbelier@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3098?v=4"},"body":"Heya,\n\nOn Mon, May 10, 2010 at 12:23, Johannes Sixt <j.sixt@viscovery.net> wrote:\n> This is really only special because the test_cmp looked at the stderr of a\n> test_must_fail command. The old code was:\n[...]\n> i.e., there were command traces in the file.\n\nAh, that makes sense. Did you check if other tests are not affected by\nthe same problem (by running all tests with -x)?\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"141381","messageId":"4BE7E7FD.7080607@viscovery.net","threadId":"23759","inReplyTo":"20100510103427.GA4806@progeny.tock","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2010-05-10T11:03:25Z","receivedAt":"2010-05-10T11:03:25Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Am 5/10/2010 12:34, schrieb Jonathan Nieder:\n> Sverre Rabbelier wrote:\n> \n>> Don't we do this ('test_cmp' on expected output) in many other places\n>> as well? Why is this different?\n> \n> The problem arises with test_cmp on expected output from stderr, since\n> sh -x will mingle the trace of a function with the standard error\n> stream.  bash provides BASH_XTRACEFD to work around this misdesign,\n> but other shells might not be so helpful.\n> \n> Here’s a workaround, ugly as sin.  It overreaches a little because I\n> did not bother to check which tests grep and which tests test_cmp\n> their output.\n> \n>  t/t0040-parse-options.sh       |    6 +++---\n>  t/t1300-repo-config.sh         |    2 +-\n>  t/t1450-fsck.sh                |    2 +-\n>  t/t1503-rev-parse-verify.sh    |   20 ++++++++++----------\n>  t/t1506-rev-parse-diagnosis.sh |   24 ++++++++++++------------\n>  t/t2204-add-ignored.sh         |    8 ++++----\n>  t/t3030-merge-recursive.sh     |    6 +++---\n>  t/t3400-rebase.sh              |    2 +-\n>  t/t3501-revert-cherry-pick.sh  |    2 +-\n>  t/t3800-mktag.sh               |    2 +-\n>  t/t4011-diff-symlink.sh        |    2 +-\n>  t/t4014-format-patch.sh        |    6 +++---\n>  t/t4120-apply-popt.sh          |    2 +-\n>  t/t4124-apply-ws-rule.sh       |    2 +-\n>  t/t4133-apply-filenames.sh     |    6 +++---\n>  t/t5300-pack-object.sh         |    2 +-\n>  t/t5400-send-pack.sh           |    2 +-\n>  t/t5406-remote-rejects.sh      |    4 +++-\n>  t/t5505-remote.sh              |    4 ++--\n>  t/t5510-fetch.sh               |    2 +-\n>  t/t5512-ls-remote.sh           |    2 +-\n>  t/t6024-recursive-merge.sh     |    2 +-\n>  t/t6030-bisect-porcelain.sh    |    6 +++---\n>  t/t7110-reset-merge.sh         |   10 +++++-----\n>  t/t7201-co.sh                  |    2 +-\n>  t/t7610-mergetool.sh           |    6 +++---\n>  t/t8003-blame.sh               |    4 ++--\n>  t/t9001-send-email.sh          |   14 +++++++-------\n>  t/t9108-git-svn-glob.sh        |    2 +-\n>  29 files changed, 78 insertions(+), 76 deletions(-)\n\n/me slaps forehead\n\nI carry around a patch that logs \"set -x\" output to a file on Windows to\nhelp debug difficult to reproduce test failures. I had already inserted\n\"set +x\" in all test cases where it matters, but t5512 is a new case since\nI have this patch.\n\nI can just amend my patch, no problem, and we solve the issue as you\npropose (or perhaps not - it *is* ugly as hell).\n\nFWIW, test scripts that need this treatement are only:\n\nt/t0040-parse-options.sh\nt/t1503-rev-parse-verify.sh\nt/t4014-format-patch.sh\nt/t5505-remote.sh\n\nand now t/t5512-ls-remote.sh as well.\n\n-- Hannes\n"},{"id":"141383","messageId":"20100510113113.GA5162@progeny.tock","threadId":"23759","inReplyTo":"4BE7E7FD.7080607@viscovery.net","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2010-05-10T11:31:13Z","receivedAt":"2010-05-10T11:31:13Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Johannes Sixt wrote:\n\n> I can just amend my patch, no problem, and we solve the issue as you\n> propose (or perhaps not - it *is* ugly as hell).\n\nFor your application, I’d suggest using BASH_XTRACEFD.  Or not, since\nit is good to reveal problems people will run into when they try\nsh -x some-particular-test.sh\n\nSince the problem cases seem to be rare, I guess the ‘grep’ trick is\ngood enough.  It is nice anyway to be able to switch between fatal:\nand error: without breaking tests.\n\nt9108 seems to have the same problem.  Maybe you skip svn tests?\n\nJonathan\n"},{"id":"141384","messageId":"4BE7EF48.2080905@viscovery.net","threadId":"23759","inReplyTo":"20100510113113.GA5162@progeny.tock","subject":"Re: [PATCH] Fix a false negative in t5512 when run using sh -x","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2010-05-10T11:34:32Z","receivedAt":"2010-05-10T11:34:32Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Am 5/10/2010 13:31, schrieb Jonathan Nieder:\n> t9108 seems to have the same problem.  Maybe you skip svn tests?\n\nYes, I skip svn tests.\n\n-- Hannes\n"}]}