{"thread":{"id":"31303","subject":"[PATCH 0/7] Gettext poison fixes","startedAt":"2012-08-21T04:30:57Z","lastAt":"2012-08-28T01:27:44Z","messageCount":27,"participants":["Nguyễn Thái Ngọc Duy","Jonathan Nieder","Nguyen Thai Ngoc Duy","Junio C Hamano","Jiang Xin"],"isPatch":true,"patchVersion":1,"patchTotal":7},"messages":[{"id":"197492","messageId":"1345523464-14586-1-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":null,"subject":"[PATCH 0/7] Gettext poison fixes","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:30:57Z","receivedAt":"2012-08-21T04:30:57Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"Not much to say. With this series, the test suite should pass again with\ngettext poison on. It's independent with the parseopt-i18n series I\nsent yesterday as the test suite was broken even before.\n\nJiang Xin (7):\n  Fix tests under GETTEXT_POISON on relative dates\n  Fix tests under GETTEXT_POISON on git-stash\n  Fix tests under GETTEXT_POISON on diffstat\n  Fix tests under GETTEXT_POISON on git-apply\n  Fix tests under GETTEXT_POISON on pack-object\n  Fix tests under GETTEXT_POISON on git-remote\n  Fix tests under GETTEXT_POISON on parseopt\n\n t/t0006-date.sh                 |  2 +-\n t/t0040-parse-options.sh        | 34 +++++++++++++++++++++++++++++-----\n t/t1300-repo-config.sh          |  2 +-\n t/t1502-rev-parse-parseopt.sh   |  2 +-\n t/t2006-checkout-index-basic.sh |  4 ++--\n t/t2107-update-index-basic.sh   |  4 ++--\n t/t3004-ls-files-basic.sh       |  4 ++--\n t/t3200-branch.sh               |  4 ++--\n t/t3501-revert-cherry-pick.sh   |  4 ++--\n t/t3903-stash.sh                |  2 +-\n t/t4006-diff-mode.sh            |  8 ++++----\n t/t4012-diff-binary.sh          |  4 ++--\n t/t4120-apply-popt.sh           |  4 ++--\n t/t4133-apply-filenames.sh      |  4 ++--\n t/t4200-rerere.sh               |  4 ++--\n t/t4202-log.sh                  |  2 +-\n t/t4205-log-pretty-formats.sh   |  4 ++--\n t/t5300-pack-object.sh          |  4 ++--\n t/t5505-remote.sh               | 22 ++++++++++++++--------\n t/t5530-upload-pack-error.sh    |  2 +-\n t/t6500-gc.sh                   |  4 ++--\n t/t7508-status.sh               |  2 +-\n t/t7600-merge.sh                |  2 +-\n 23 files changed, 79 insertions(+), 49 deletions(-)\n\n-- \n1.7.12.rc2\n"},{"id":"197493","messageId":"1345523464-14586-2-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 1/7] Fix tests under GETTEXT_POISON on relative dates","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:30:58Z","receivedAt":"2012-08-21T04:30:58Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"From: Jiang Xin <worldhello.net@gmail.com>\n\nUse a i18n-specific test_i18ncmp in t/t0006-data.sh for relative dates\ntests. This issue was was introduced in v1.7.10-230-g7d29a:\n\n    7d29a i18n: mark relative dates for translation\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t0006-date.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t0006-date.sh b/t/t0006-date.sh\nindex 1d29810..e53cf6d 100755\n--- a/t/t0006-date.sh\n+++ b/t/t0006-date.sh\n@@ -11,7 +11,7 @@ check_show() {\n \techo \"$t -> $2\" >expect\n \ttest_expect_${3:-success} \"relative date ($2)\" \"\n \ttest-date show $t >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n \t\"\n }\n \n-- \n1.7.12.rc2\n"},{"id":"197497","messageId":"1345523464-14586-3-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 2/7] Fix tests under GETTEXT_POISON on git-stash","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:30:59Z","receivedAt":"2012-08-21T04:30:59Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"From: Jiang Xin <worldhello.net@gmail.com>\n\nUse i18n-specific test functions in test scripts for git-stash.\nThis issue was was introduced in v1.7.4.1-119-g355ec:\n\n    355ec i18n: git-status basic messages\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t3903-stash.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t3903-stash.sh b/t/t3903-stash.sh\nindex cd04263..5dfbda7 100755\n--- a/t/t3903-stash.sh\n+++ b/t/t3903-stash.sh\n@@ -610,7 +610,7 @@ test_expect_success 'stash apply shows status same as git status (relative to cu\n \t\tgit stash apply\n \t) |\n \tsed -e 1,2d >actual && # drop \"Saved...\" and \"HEAD is now...\"\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n cat > expect << EOF\n-- \n1.7.12.rc2\n"},{"id":"197495","messageId":"1345523464-14586-4-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 3/7] Fix tests under GETTEXT_POISON on diffstat","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:31:00Z","receivedAt":"2012-08-21T04:31:00Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"From: Jiang Xin <worldhello.net@gmail.com>\n\nUse i18n-specific test functions in test scripts for diffstat.\nThis issue was was introduced in v1.7.9-1-g7f814:\n\n    7f814 Use correct grammar in diffstat summary line\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t4006-diff-mode.sh          | 8 ++++----\n t/t4202-log.sh                | 2 +-\n t/t4205-log-pretty-formats.sh | 4 ++--\n t/t7508-status.sh             | 2 +-\n 4 files changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/t/t4006-diff-mode.sh b/t/t4006-diff-mode.sh\nindex 7a3e1f9..3d4b1ba 100755\n--- a/t/t4006-diff-mode.sh\n+++ b/t/t4006-diff-mode.sh\n@@ -36,24 +36,24 @@ test_expect_success '--stat output after text chmod' '\n \ttest_chmod -x rezrov &&\n \techo \" 0 files changed\" >expect &&\n \tgit diff HEAD --stat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success '--shortstat output after text chmod' '\n \tgit diff HEAD --shortstat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success '--stat output after binary chmod' '\n \ttest_chmod +x binbin &&\n \techo \" 0 files changed\" >expect &&\n \tgit diff HEAD --stat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success '--shortstat output after binary chmod' '\n \tgit diff HEAD --shortstat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_done\ndiff --git a/t/t4202-log.sh b/t/t4202-log.sh\nindex 71be59d..31869dc 100755\n--- a/t/t4202-log.sh\n+++ b/t/t4202-log.sh\n@@ -803,7 +803,7 @@ sanitize_output () {\n test_expect_success 'log --graph with diff and stats' '\n \tgit log --graph --pretty=short --stat -p >actual &&\n \tsanitize_output >actual.sanitized <actual &&\n-\ttest_cmp expect actual.sanitized\n+\ttest_i18ncmp expect actual.sanitized\n '\n \n test_done\ndiff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh\nindex 4afd778..2c45de7 100755\n--- a/t/t4205-log-pretty-formats.sh\n+++ b/t/t4205-log-pretty-formats.sh\n@@ -88,7 +88,7 @@ test_expect_success 'NUL separation with --stat' '\n \tstat1_part=$(git diff --stat --root HEAD^) &&\n \tprintf \"add bar\\n$stat0_part\\n\\0initial\\n$stat1_part\\n\" >expected &&\n \tgit log -z --stat --pretty=\"format:%s\" >actual &&\n-\ttest_cmp expected actual\n+\ttest_i18ncmp expected actual\n '\n \n test_expect_failure 'NUL termination with --stat' '\n@@ -96,7 +96,7 @@ test_expect_failure 'NUL termination with --stat' '\n \tstat1_part=$(git diff --stat --root HEAD^) &&\n \tprintf \"add bar\\n$stat0_part\\n\\0initial\\n$stat1_part\\n\\0\" >expected &&\n \tgit log -z --stat --pretty=\"tformat:%s\" >actual &&\n-\ttest_cmp expected actual\n+\ttest_i18ncmp expected actual\n '\n \n test_done\ndiff --git a/t/t7508-status.sh b/t/t7508-status.sh\nindex c206f47..e313ef1 100755\n--- a/t/t7508-status.sh\n+++ b/t/t7508-status.sh\n@@ -80,7 +80,7 @@ test_expect_success 'status --column' '\n #\tdir1/untracked dir2/untracked untracked\n #\tdir2/modified  output\n EOF\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n '\n \n cat >expect <<\\EOF\n-- \n1.7.12.rc2\n"},{"id":"197500","messageId":"1345523464-14586-5-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 4/7] Fix tests under GETTEXT_POISON on git-apply","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:31:01Z","receivedAt":"2012-08-21T04:31:01Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"From: Jiang Xin <worldhello.net@gmail.com>\n\nUse i18n-specific test functions in test scripts for git-apply.\nThis issue was was introduced in the following commits:\n\n    de373 i18n: apply: mark parseopt strings for translation\n    3638e i18n: apply: mark strings for translation\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t4012-diff-binary.sh     | 4 ++--\n t/t4120-apply-popt.sh      | 4 ++--\n t/t4133-apply-filenames.sh | 4 ++--\n 3 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/t/t4012-diff-binary.sh b/t/t4012-diff-binary.sh\nindex ec4deea..1215ae5 100755\n--- a/t/t4012-diff-binary.sh\n+++ b/t/t4012-diff-binary.sh\n@@ -63,7 +63,7 @@ test_expect_success 'apply --numstat understands diff --binary format' '\n \n # apply needs to be able to skip the binary material correctly\n # in order to report the line number of a corrupt patch.\n-test_expect_success 'apply detecting corrupt patch correctly' '\n+test_expect_success C_LOCALE_OUTPUT 'apply detecting corrupt patch correctly' '\n \tgit diff >output &&\n \tsed -e \"s/-CIT/xCIT/\" <output >broken &&\n \ttest_must_fail git apply --stat --summary broken 2>detected &&\n@@ -73,7 +73,7 @@ test_expect_success 'apply detecting corrupt patch correctly' '\n \ttest \"$detected\" = xCIT\n '\n \n-test_expect_success 'apply detecting corrupt patch correctly' '\n+test_expect_success C_LOCALE_OUTPUT 'apply detecting corrupt patch correctly' '\n \tgit diff --binary | sed -e \"s/-CIT/xCIT/\" >broken &&\n \ttest_must_fail git apply --stat --summary broken 2>detected &&\n \tdetected=`cat detected` &&\ndiff --git a/t/t4120-apply-popt.sh b/t/t4120-apply-popt.sh\nindex a33d510..c5fecdf 100755\n--- a/t/t4120-apply-popt.sh\n+++ b/t/t4120-apply-popt.sh\n@@ -32,7 +32,7 @@ test_expect_success 'apply git diff with -p2' '\n test_expect_success 'apply with too large -p' '\n \tcp file1.saved file1 &&\n \ttest_must_fail git apply --stat -p3 patch.file 2>err &&\n-\tgrep \"removing 3 leading\" err\n+\ttest_i18ngrep \"removing 3 leading\" err\n '\n \n test_expect_success 'apply (-p2) traditional diff with funny filenames' '\n@@ -54,7 +54,7 @@ test_expect_success 'apply (-p2) traditional diff with funny filenames' '\n test_expect_success 'apply with too large -p and fancy filename' '\n \tcp file1.saved file1 &&\n \ttest_must_fail git apply --stat -p3 patch.escaped 2>err &&\n-\tgrep \"removing 3 leading\" err\n+\ttest_i18ngrep \"removing 3 leading\" err\n '\n \n test_expect_success 'apply (-p2) diff, mode change only' '\ndiff --git a/t/t4133-apply-filenames.sh b/t/t4133-apply-filenames.sh\nindex 94da990..2ecb421 100755\n--- a/t/t4133-apply-filenames.sh\n+++ b/t/t4133-apply-filenames.sh\n@@ -30,9 +30,9 @@ EOF\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_i18ngrep \"inconsistent new filename\" err &&\n \ttest_must_fail git apply bad2.patch 2>err &&\n-\tgrep \"inconsistent old filename\" err\n+\ttest_i18ngrep \"inconsistent old filename\" err\n '\n \n test_done\n-- \n1.7.12.rc2\n"},{"id":"197494","messageId":"1345523464-14586-6-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 5/7] Fix tests under GETTEXT_POISON on pack-object","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:31:02Z","receivedAt":"2012-08-21T04:31:02Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"From: Jiang Xin <worldhello.net@gmail.com>\n\nUse i18n-specific test functions in test scripts for pack-object.\nThis issue was was introduced in v1.7.10.2-556-g46140:\n\n    46140 index-pack: use streaming interface for collision test on large blobs\n    cf2ba pack-objects: use streaming interface for reading large loose blobs\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t5300-pack-object.sh       | 4 ++--\n t/t5530-upload-pack-error.sh | 2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh\nindex 2e52f8b..a07c871 100755\n--- a/t/t5300-pack-object.sh\n+++ b/t/t5300-pack-object.sh\n@@ -416,11 +416,11 @@ test_expect_success \\\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-     grep \"SHA1 COLLISION FOUND\" msg'\n+     test_i18ngrep \"SHA1 COLLISION FOUND\" msg'\n \n test_expect_success \\\n     'make sure index-pack detects the SHA1 collision (large blobs)' \\\n     'test_must_fail git -c core.bigfilethreshold=1 index-pack -o bad.idx test-3.pack 2>msg &&\n-     grep \"SHA1 COLLISION FOUND\" msg'\n+     test_i18ngrep \"SHA1 COLLISION FOUND\" msg'\n \n test_done\ndiff --git a/t/t5530-upload-pack-error.sh b/t/t5530-upload-pack-error.sh\nindex 6b2a5f4..99f8dbc 100755\n--- a/t/t5530-upload-pack-error.sh\n+++ b/t/t5530-upload-pack-error.sh\n@@ -35,7 +35,7 @@ test_expect_success 'upload-pack fails due to error in pack-objects packing' '\n \tprintf \"0032want %s\\n00000009done\\n0000\" \\\n \t\t$(git rev-parse HEAD) >input &&\n \ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n-\tgrep \"unable to read\" output.err &&\n+\ttest_i18ngrep \"unable to read\" output.err &&\n \tgrep \"pack-objects died\" output.err\n '\n \n-- \n1.7.12.rc2\n"},{"id":"197498","messageId":"1345523464-14586-7-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:31:03Z","receivedAt":"2012-08-21T04:31:03Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"From: Jiang Xin <worldhello.net@gmail.com>\n\nUse i18n-specific test functions in test scripts for git-remote.\nThis issue was was introduced in v1.7.10-233-gbb16d5:\n\n    bb16d5 i18n: remote: mark strings for translation\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t5505-remote.sh | 22 ++++++++++++++--------\n 1 file changed, 14 insertions(+), 8 deletions(-)\n\ndiff --git a/t/t5505-remote.sh b/t/t5505-remote.sh\nindex e8af615..07045e3 100755\n--- a/t/t5505-remote.sh\n+++ b/t/t5505-remote.sh\n@@ -27,10 +27,16 @@ tokens_match () {\n \ttest_cmp expect actual\n }\n \n+tokens_i18nmatch () {\n+\techo \"$1\" | tr ' ' '\\012' | sort | sed -e '/^$/d' >expect &&\n+\techo \"$2\" | tr ' ' '\\012' | sort | sed -e '/^$/d' >actual &&\n+\ttest_i18ncmp expect actual\n+}\n+\n check_remote_track () {\n \tactual=$(git remote show \"$1\" | sed -ne 's|^    \\(.*\\) tracked$|\\1|p')\n \tshift &&\n-\ttokens_match \"$*\" \"$actual\"\n+\ttokens_i18nmatch \"$*\" \"$actual\"\n }\n \n check_tracking_branch () {\n@@ -131,8 +137,8 @@ EOF\n \tgit remote rm oops 2>actual2 &&\n \tgit branch -d foobranch &&\n \tgit tag -d footag &&\n-\ttest_cmp expect1 actual1 &&\n-\ttest_cmp expect2 actual2\n+\ttest_i18ncmp expect1 actual1 &&\n+\ttest_i18ncmp expect2 actual2\n )\n '\n \n@@ -192,7 +198,7 @@ test_expect_success 'show' '\n \t git config --add remote.two.push refs/heads/master:refs/heads/another &&\n \t git remote show origin two > output &&\n \t git branch -d rebase octopus &&\n-\t test_cmp expect output)\n+\t test_i18ncmp expect output)\n '\n \n cat > test/expect << EOF\n@@ -217,7 +223,7 @@ test_expect_success 'show -n' '\n \t cd test &&\n \t git remote show -n origin > output &&\n \t mv ../one.unreachable ../one &&\n-\t test_cmp expect output)\n+\t test_i18ncmp expect output)\n '\n \n test_expect_success 'prune' '\n@@ -255,7 +261,7 @@ EOF\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+\ttest_i18ncmp expect output)\n '\n \n cat >test/expect <<EOF\n@@ -285,7 +291,7 @@ test_expect_success 'prune --dry-run' '\n \t test_must_fail git rev-parse refs/remotes/origin/side &&\n \t(cd ../one &&\n \t git branch -m side side2) &&\n-\t test_cmp expect output)\n+\t test_i18ncmp expect output)\n '\n \n test_expect_success 'add --mirror && prune' '\n@@ -705,7 +711,7 @@ test_expect_success 'remote prune to cause a dangling symref' '\n \t\tcd seven &&\n \t\tgit remote prune origin\n \t) >err 2>&1 &&\n-\tgrep \"has become dangling\" err &&\n+\ttest_i18ngrep \"has become dangling\" err &&\n \n \t: And the dangling symref will not cause other annoying errors &&\n \t(\n-- \n1.7.12.rc2\n"},{"id":"197496","messageId":"1345523464-14586-8-git-send-email-pclouds@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH 7/7] Fix tests under GETTEXT_POISON on parseopt","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T04:31:04Z","receivedAt":"2012-08-21T04:31:04Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"From: Jiang Xin <worldhello.net@gmail.com>\n\nUse i18n-specific test functions in test scripts for parseopt tests.\nThis issue was was introduced in v1.7.10.1-488-g54e6d:\n\n    54e6d i18n: parseopt: lookup help and argument translations when showing usage\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t0040-parse-options.sh        | 34 +++++++++++++++++++++++++++++-----\n t/t1300-repo-config.sh          |  2 +-\n t/t1502-rev-parse-parseopt.sh   |  2 +-\n t/t2006-checkout-index-basic.sh |  4 ++--\n t/t2107-update-index-basic.sh   |  4 ++--\n t/t3004-ls-files-basic.sh       |  4 ++--\n t/t3200-branch.sh               |  4 ++--\n t/t3501-revert-cherry-pick.sh   |  4 ++--\n t/t4200-rerere.sh               |  4 ++--\n t/t6500-gc.sh                   |  4 ++--\n t/t7600-merge.sh                |  2 +-\n 11 files changed, 46 insertions(+), 22 deletions(-)\n\ndiff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh\nindex e3f354a..244a43c 100755\n--- a/t/t0040-parse-options.sh\n+++ b/t/t0040-parse-options.sh\n@@ -51,7 +51,7 @@ EOF\n test_expect_success 'test help' '\n \ttest_must_fail test-parse-options -h > output 2> output.err &&\n \ttest ! -s output.err &&\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n '\n \n mv expect expect.err\n@@ -79,6 +79,17 @@ check() {\n \ttest_cmp expect output\n }\n \n+check_i18n() {\n+\twhat=\"$1\" &&\n+\tshift &&\n+\texpect=\"$1\" &&\n+\tshift &&\n+\tsed \"s/^$what .*/$what $expect/\" <expect.template >expect &&\n+\ttest-parse-options $* >output 2>output.err &&\n+\ttest ! -s output.err &&\n+\ttest_i18ncmp expect output\n+}\n+\n check_unknown() {\n \tcase \"$1\" in\n \t--*)\n@@ -92,6 +103,19 @@ check_unknown() {\n \ttest_cmp expect output.err\n }\n \n+check_unknown_i18n() {\n+\tcase \"$1\" in\n+\t--*)\n+\t\techo error: unknown option \\`${1#--}\\' >expect ;;\n+\t-*)\n+\t\techo error: unknown switch \\`${1#-}\\' >expect ;;\n+\tesac &&\n+\tcat expect.err >>expect &&\n+\ttest_must_fail test-parse-options $* >output 2>output.err &&\n+\ttest ! -s output &&\n+\ttest_i18ncmp expect output.err\n+}\n+\n test_expect_success 'OPT_BOOL() #1' 'check boolean: 1 --yes'\n test_expect_success 'OPT_BOOL() #2' 'check boolean: 1 --no-doubt'\n test_expect_success 'OPT_BOOL() #3' 'check boolean: 1 -D'\n@@ -104,8 +128,8 @@ test_expect_success 'OPT_BOOL() is idempotent #2' 'check boolean: 1 -DB'\n test_expect_success 'OPT_BOOL() negation #1' 'check boolean: 0 -D --no-yes'\n test_expect_success 'OPT_BOOL() negation #2' 'check boolean: 0 -D --no-no-doubt'\n \n-test_expect_success 'OPT_BOOL() no negation #1' 'check_unknown --fear'\n-test_expect_success 'OPT_BOOL() no negation #2' 'check_unknown --no-no-fear'\n+test_expect_success 'OPT_BOOL() no negation #1' 'check_unknown_i18n --fear'\n+test_expect_success 'OPT_BOOL() no negation #2' 'check_unknown_i18n --no-no-fear'\n \n test_expect_success 'OPT_BOOL() positivation' 'check boolean: 0 -D --doubt'\n \n@@ -310,8 +334,8 @@ 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_cmp expect output &&\n-\ttest_cmp expect.err output.err\n+\ttest_i18ncmp expect output &&\n+\ttest_i18ncmp expect.err output.err\n '\n \n cat > expect <<EOF\ndiff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh\nindex a477453..e127f35 100755\n--- a/t/t1300-repo-config.sh\n+++ b/t/t1300-repo-config.sh\n@@ -391,7 +391,7 @@ test_expect_success 'get bool variable with empty value' \\\n \n test_expect_success 'no arguments, but no crash' '\n \ttest_must_fail git config >output 2>&1 &&\n-\tgrep usage output\n+\ttest_i18ngrep usage output\n '\n \n cat > .git/config << EOF\ndiff --git a/t/t1502-rev-parse-parseopt.sh b/t/t1502-rev-parse-parseopt.sh\nindex 1efd7f7..13c88c9 100755\n--- a/t/t1502-rev-parse-parseopt.sh\n+++ b/t/t1502-rev-parse-parseopt.sh\n@@ -41,7 +41,7 @@ EOF\n \n test_expect_success 'test --parseopt help output' '\n \ttest_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec &&\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n '\n \n cat > expect <<EOF\ndiff --git a/t/t2006-checkout-index-basic.sh b/t/t2006-checkout-index-basic.sh\nindex b855983..57cbdfe 100755\n--- a/t/t2006-checkout-index-basic.sh\n+++ b/t/t2006-checkout-index-basic.sh\n@@ -7,7 +7,7 @@ test_description='basic checkout-index tests\n \n test_expect_success 'checkout-index --gobbledegook' '\n \ttest_expect_code 129 git checkout-index --gobbledegook 2>err &&\n-\tgrep \"[Uu]sage\" err\n+\ttest_i18ngrep \"[Uu]sage\" err\n '\n \n test_expect_success 'checkout-index -h in broken repository' '\n@@ -18,7 +18,7 @@ test_expect_success 'checkout-index -h in broken repository' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git checkout-index -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage\" broken/usage\n '\n \n test_done\ndiff --git a/t/t2107-update-index-basic.sh b/t/t2107-update-index-basic.sh\nindex 809fafe..17d6940 100755\n--- a/t/t2107-update-index-basic.sh\n+++ b/t/t2107-update-index-basic.sh\n@@ -15,7 +15,7 @@ test_expect_success 'update-index --nonsense fails' '\n \n test_expect_success 'update-index --nonsense dumps usage' '\n \ttest_expect_code 129 git update-index --nonsense 2>err &&\n-\tgrep \"[Uu]sage: git update-index\" err\n+\ttest_i18ngrep \"[Uu]sage: git update-index\" err\n '\n \n test_expect_success 'update-index -h with corrupt index' '\n@@ -26,7 +26,7 @@ test_expect_success 'update-index -h with corrupt index' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git update-index -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage: git update-index\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage: git update-index\" broken/usage\n '\n \n test_done\ndiff --git a/t/t3004-ls-files-basic.sh b/t/t3004-ls-files-basic.sh\nindex 490e052..8d9bc3c 100755\n--- a/t/t3004-ls-files-basic.sh\n+++ b/t/t3004-ls-files-basic.sh\n@@ -22,7 +22,7 @@ test_expect_success 'ls-files with nonexistent path' '\n \n test_expect_success 'ls-files with nonsense option' '\n \ttest_expect_code 129 git ls-files --nonsense 2>actual &&\n-\tgrep \"[Uu]sage: git ls-files\" actual\n+\ttest_i18ngrep \"[Uu]sage: git ls-files\" actual\n '\n \n test_expect_success 'ls-files -h in corrupt repository' '\n@@ -33,7 +33,7 @@ test_expect_success 'ls-files -h in corrupt repository' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git ls-files -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage: git ls-files \" broken/usage\n+\ttest_i18ngrep \"[Uu]sage: git ls-files \" broken/usage\n '\n \n test_done\ndiff --git a/t/t3200-branch.sh b/t/t3200-branch.sh\nindex a17f8b2..1ffce21 100755\n--- a/t/t3200-branch.sh\n+++ b/t/t3200-branch.sh\n@@ -31,7 +31,7 @@ test_expect_success 'branch -h in broken repository' '\n \t\t>.git/refs/heads/master &&\n \t\ttest_expect_code 129 git branch -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage\" broken/usage\n '\n \n test_expect_success \\\n@@ -74,7 +74,7 @@ test_expect_success \\\n test_expect_success \\\n     'git branch -m dumps usage' \\\n        'test_expect_code 129 git branch -m 2>err &&\n-\tgrep \"[Uu]sage: git branch\" err'\n+\ttest_i18ngrep \"[Uu]sage: git branch\" err'\n \n test_expect_success \\\n     'git branch -m m m/m should work' \\\ndiff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh\nindex 595d2ff..34c86e5 100755\n--- a/t/t3501-revert-cherry-pick.sh\n+++ b/t/t3501-revert-cherry-pick.sh\n@@ -47,7 +47,7 @@ test_expect_success 'cherry-pick --nonsense' '\n \tgit diff --exit-code HEAD &&\n \ttest_must_fail git cherry-pick --nonsense 2>msg &&\n \tgit diff --exit-code HEAD \"$pos\" &&\n-\tgrep '[Uu]sage:' msg\n+\ttest_i18ngrep '[Uu]sage:' msg\n '\n \n test_expect_success 'revert --nonsense' '\n@@ -56,7 +56,7 @@ test_expect_success 'revert --nonsense' '\n \tgit diff --exit-code HEAD &&\n \ttest_must_fail git revert --nonsense 2>msg &&\n \tgit diff --exit-code HEAD \"$pos\" &&\n-\tgrep '[Uu]sage:' msg\n+\ttest_i18ngrep '[Uu]sage:' msg\n '\n \n test_expect_success 'cherry-pick after renaming branch' '\ndiff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh\nindex 3ab670d..7f6666f 100755\n--- a/t/t4200-rerere.sh\n+++ b/t/t4200-rerere.sh\n@@ -382,13 +382,13 @@ test_expect_success 'rerere --no-no-rerere-autoupdate' '\n \tgit update-index --index-info <failedmerge &&\n \tcp file3.conflict file3 &&\n \ttest_must_fail git rerere --no-no-rerere-autoupdate 2>err &&\n-\tgrep [Uu]sage err &&\n+\ttest_i18ngrep [Uu]sage err &&\n \ttest_must_fail git update-index --refresh\n '\n \n test_expect_success 'rerere -h' '\n \ttest_must_fail git rerere -h >help &&\n-\tgrep [Uu]sage help\n+\ttest_i18ngrep [Uu]sage help\n '\n \n test_done\ndiff --git a/t/t6500-gc.sh b/t/t6500-gc.sh\nindex 82f3639..b1a6365 100755\n--- a/t/t6500-gc.sh\n+++ b/t/t6500-gc.sh\n@@ -11,7 +11,7 @@ test_expect_success 'gc empty repository' '\n \n test_expect_success 'gc --gobbledegook' '\n \ttest_expect_code 129 git gc --nonsense 2>err &&\n-\tgrep \"[Uu]sage: git gc\" err\n+\ttest_i18ngrep \"[Uu]sage: git gc\" err\n '\n \n test_expect_success 'gc -h with invalid configuration' '\n@@ -22,7 +22,7 @@ test_expect_success 'gc -h with invalid configuration' '\n \t\techo \"[gc] pruneexpire = CORRUPT\" >>.git/config &&\n \t\ttest_expect_code 129 git gc -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage\" broken/usage\n '\n \n test_done\ndiff --git a/t/t7600-merge.sh b/t/t7600-merge.sh\nindex 9e27bbf..5e19598 100755\n--- a/t/t7600-merge.sh\n+++ b/t/t7600-merge.sh\n@@ -157,7 +157,7 @@ test_expect_success 'merge -h with invalid index' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git merge -h 2>usage\n \t) &&\n-\tgrep \"[Uu]sage: git merge\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage: git merge\" broken/usage\n '\n \n test_expect_success 'reject non-strategy with a git-merge-foo name' '\n-- \n1.7.12.rc2\n"},{"id":"197501","messageId":"20120821051706.GA55686@mannheim-rule.local","threadId":"31303","inReplyTo":"1345523464-14586-6-git-send-email-pclouds@gmail.com","subject":"Re: [PATCH 5/7] Fix tests under GETTEXT_POISON on pack-object","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2012-08-21T05:17:06Z","receivedAt":"2012-08-21T05:17:06Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi,\n\nNguyễn Thái Ngọc Duy wrote:\n\n> From: Jiang Xin <worldhello.net@gmail.com>\n>\n> Use i18n-specific test functions in test scripts for pack-object.\n\nThanks for resending, and sorry I haven't made time to polish the\ntranslation-based poison implementation you sent before (which seemed\nvery useful and pleasant to work with).\n\n[...]\n> --- a/t/t5530-upload-pack-error.sh\n> +++ b/t/t5530-upload-pack-error.sh\n> @@ -35,7 +35,7 @@ test_expect_success 'upload-pack fails due to error in pack-objects packing' '\n>  \tprintf \"0032want %s\\n00000009done\\n0000\" \\\n>  \t\t$(git rev-parse HEAD) >input &&\n>  \ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n> -\tgrep \"unable to read\" output.err &&\n> +\ttest_i18ngrep \"unable to read\" output.err &&\n>  \tgrep \"pack-objects died\" output.err\n\nWouldn't it make sense to change the second \"grep\" of output intended\nfor humans to test_i18ngrep while at it?\n\nWith or without that change, this and the rest of the series looks\ngood.\n\nHope that helps,\nJonathan\n"},{"id":"197527","messageId":"CACsJy8DHdj61sH8DjLsUfKdb4yzbnACWdCsgmFDtjJqq08c2TQ@mail.gmail.com","threadId":"31303","inReplyTo":"20120821051706.GA55686@mannheim-rule.local","subject":"Re: [PATCH 5/7] Fix tests under GETTEXT_POISON on pack-object","fromName":"Nguyen Thai Ngoc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2012-08-21T10:39:12Z","receivedAt":"2012-08-21T10:39:12Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"On Tue, Aug 21, 2012 at 12:17 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n>> --- a/t/t5530-upload-pack-error.sh\n>> +++ b/t/t5530-upload-pack-error.sh\n>> @@ -35,7 +35,7 @@ test_expect_success 'upload-pack fails due to error in pack-objects packing' '\n>>       printf \"0032want %s\\n00000009done\\n0000\" \\\n>>               $(git rev-parse HEAD) >input &&\n>>       test_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n>> -     grep \"unable to read\" output.err &&\n>> +     test_i18ngrep \"unable to read\" output.err &&\n>>       grep \"pack-objects died\" output.err\n>\n> Wouldn't it make sense to change the second \"grep\" of output intended\n> for humans to test_i18ngrep while at it?\n\nThis comes from error(\"git upload-pack: git-pack-objects died with\nerror.\") in unpack-trees.c, which is not i18n-ized yet. There's\nanother test in t5530 that does the same grep. I think we should leave\nit as is until we mark the string for translation, then gettext poison\nwill spot it (verified) and we can fix it.\n-- \nDuy\n"},{"id":"197531","messageId":"20120821142441.GA56154@mannheim-rule.local","threadId":"31303","inReplyTo":"CACsJy8DHdj61sH8DjLsUfKdb4yzbnACWdCsgmFDtjJqq08c2TQ@mail.gmail.com","subject":"Re: [PATCH 5/7] Fix tests under GETTEXT_POISON on pack-object","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2012-08-21T14:24:41Z","receivedAt":"2012-08-21T14:24:41Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Nguyen Thai Ngoc Duy wrote:\n> On Tue, Aug 21, 2012 at 12:17 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n\n>>> @@ -35,7 +35,7 @@ test_expect_success 'upload-pack fails due to error in pack-objects packing' '\n>>>       printf \"0032want %s\\n00000009done\\n0000\" \\\n>>>               $(git rev-parse HEAD) >input &&\n>>>       test_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n>>> -     grep \"unable to read\" output.err &&\n>>> +     test_i18ngrep \"unable to read\" output.err &&\n>>>       grep \"pack-objects died\" output.err\n>>\n>> Wouldn't it make sense to change the second \"grep\" of output intended\n>> for humans to test_i18ngrep while at it?\n>\n> This comes from error(\"git upload-pack: git-pack-objects died with\n> error.\") in unpack-trees.c, which is not i18n-ized yet. There's\n> another test in t5530 that does the same grep. I think we should leave\n> it as is until we mark the string for translation, then gettext poison\n> will spot it (verified) and we can fix it.\n\nI don't understand the distinction you're making.  Isn't the message\nintended for humans, and wouldn't changing that one line to\ntest_i18ngrep now save trouble later?  Tests are meant to check git's\nintended behavior, not to exactly match its current behavior.\n\nJonathan\n"},{"id":"197542","messageId":"7v8vd8dtca.fsf@alter.siamese.dyndns.org","threadId":"31303","inReplyTo":"20120821142441.GA56154@mannheim-rule.local","subject":"Re: [PATCH 5/7] Fix tests under GETTEXT_POISON on pack-object","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-08-21T17:53:57Z","receivedAt":"2012-08-21T17:53:57Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jonathan Nieder <jrnieder@gmail.com> writes:\n\n> Nguyen Thai Ngoc Duy wrote:\n>> On Tue, Aug 21, 2012 at 12:17 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:\n>\n>>>> @@ -35,7 +35,7 @@ test_expect_success 'upload-pack fails due to error in pack-objects packing' '\n>>>>       printf \"0032want %s\\n00000009done\\n0000\" \\\n>>>>               $(git rev-parse HEAD) >input &&\n>>>>       test_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n>>>> -     grep \"unable to read\" output.err &&\n>>>> +     test_i18ngrep \"unable to read\" output.err &&\n>>>>       grep \"pack-objects died\" output.err\n>>>\n>>> Wouldn't it make sense to change the second \"grep\" of output intended\n>>> for humans to test_i18ngrep while at it?\n>>\n>> This comes from error(\"git upload-pack: git-pack-objects died with\n>> error.\") in unpack-trees.c, which is not i18n-ized yet. There's\n>> another test in t5530 that does the same grep. I think we should leave\n>> it as is until we mark the string for translation, then gettext poison\n>> will spot it (verified) and we can fix it.\n>\n> I don't understand the distinction you're making.  Isn't the message\n> intended for humans, and wouldn't changing that one line to\n> test_i18ngrep now save trouble later?  Tests are meant to check git's\n> intended behavior, not to exactly match its current behavior.\n\nCorrect; your suggestion is good.\n"},{"id":"197562","messageId":"7v628bdhol.fsf@alter.siamese.dyndns.org","threadId":"31303","inReplyTo":"1345523464-14586-7-git-send-email-pclouds@gmail.com","subject":"Re: [PATCH 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-08-21T22:05:46Z","receivedAt":"2012-08-21T22:05:46Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:\n\n> From: Jiang Xin <worldhello.net@gmail.com>\n>\n> Use i18n-specific test functions in test scripts for git-remote.\n> This issue was was introduced in v1.7.10-233-gbb16d5:\n>\n>     bb16d5 i18n: remote: mark strings for translation\n>\n> and been broken under GETTEXT_POISON=YesPlease since.\n>\n> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>\n> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n> ---\n>  t/t5505-remote.sh | 22 ++++++++++++++--------\n>  1 file changed, 14 insertions(+), 8 deletions(-)\n>\n> diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh\n> index e8af615..07045e3 100755\n> --- a/t/t5505-remote.sh\n> +++ b/t/t5505-remote.sh\n> @@ -27,10 +27,16 @@ tokens_match () {\n>  \ttest_cmp expect actual\n>  }\n>  \n> +tokens_i18nmatch () {\n> +\techo \"$1\" | tr ' ' '\\012' | sort | sed -e '/^$/d' >expect &&\n> +\techo \"$2\" | tr ' ' '\\012' | sort | sed -e '/^$/d' >actual &&\n> +\ttest_i18ncmp expect actual\n> +}\n> +\n>  check_remote_track () {\n>  \tactual=$(git remote show \"$1\" | sed -ne 's|^    \\(.*\\) tracked$|\\1|p')\n>  \tshift &&\n> -\ttokens_match \"$*\" \"$actual\"\n> +\ttokens_i18nmatch \"$*\" \"$actual\"\n>  }\n\nWhich part of the output from \"git remote show\" does this test\nexpect to be translated?  Specifically, does \"tracked\" ever get\ntranslated?\n\nIt appears that _(\" tracked\") is indeed marked for translation in\nthe source, so how can we expect value in $actual be any useful for\nany comparison?\n\nConfused...\n"},{"id":"197585","messageId":"CANYiYbE9sJNOXxxFX_xdow=tnWfUwBYOx4S0_CgaB+bUQxDSRg@mail.gmail.com","threadId":"31303","inReplyTo":"7v628bdhol.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-22T14:56:18Z","receivedAt":"2012-08-22T14:56:18Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"2012/8/22 Junio C Hamano <gitster@pobox.com>:\n> Which part of the output from \"git remote show\" does this test\n> expect to be translated?  Specifically, does \"tracked\" ever get\n> translated?\n>\n> It appears that _(\" tracked\") is indeed marked for translation in\n> the source, so how can we expect value in $actual be any useful for\n> any comparison?\n>\n> Confused...\n\nYes, because _(\"tracked\") is marked for translation,  check_remote_track()\nis hard to do right.\n\n>  check_remote_track () {\n>         actual=$(git remote show \"$1\" | sed -ne 's|^    \\(.*\\) tracked$|\\1|p')\n>         shift &&\n> -       tokens_match \"$*\" \"$actual\"\n> +       tokens_i18nmatch \"$*\" \"$actual\"\n>  }\n\nOutput of command \"git remote show origin\" is:\n\n    # GETTEXT POISON #\n    # GETTEXT POISON #\n    # GETTEXT POISON #\n    # GETTEXT POISON #\n    # GETTEXT POISON #\n        master# GETTEXT POISON #\n        side  # GETTEXT POISON #\n\nMaybe we should bypass all testcases which calling check_remote_track().\nChanging 'tokens_match' to 'tokens_i18nmatch' won't fix but hide the problem.\n\n- test_expect_success 'remote information for the origin' '\n+ test_expect_success C_LOCALE_OUTPUT 'remote information for the origin' '\n\n- test_expect_succes 'remove remote' '\n+ test_expect_success C_LOCALE_OUTPUT 'remove remote' '\n\n- test_expect_success 'add another remote' '\n+ test_expect_success C_LOCALE_OUTPUT 'add another remote' '\n\n-- \nJiang Xin\n"},{"id":"197652","messageId":"7vehmy7m2t.fsf@alter.siamese.dyndns.org","threadId":"31303","inReplyTo":"CANYiYbE9sJNOXxxFX_xdow=tnWfUwBYOx4S0_CgaB+bUQxDSRg@mail.gmail.com","subject":"Re: [PATCH 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-08-22T19:39:38Z","receivedAt":"2012-08-22T19:39:38Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jiang Xin <worldhello.net@gmail.com> writes:\n\n> Maybe we should bypass all testcases which calling check_remote_track().\n\nSounds like it.\n"},{"id":"197881","messageId":"cover.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"1345523464-14586-1-git-send-email-pclouds@gmail.com","subject":"[PATCH v2 0/7] Gettext poison fixes","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:48Z","receivedAt":"2012-08-27T05:36:48Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Update patch 5/7 (Fix tests under GETTEXT_POISON on pack-object)\nand patch 6/7 (Fix tests under GETTEXT_POISON on git-remote) in\nthis new series of patches.\n\nNot much to say. With this series, the test suite should pass again with\ngettext poison on. It's independent with the parseopt-i18n series I\nsent yesterday as the test suite was broken even before.\n\nJiang Xin (7):\n  Fix tests under GETTEXT_POISON on relative dates\n  Fix tests under GETTEXT_POISON on git-stash\n  Fix tests under GETTEXT_POISON on diffstat\n  Fix tests under GETTEXT_POISON on git-apply\n  Fix tests under GETTEXT_POISON on pack-object\n  Fix tests under GETTEXT_POISON on git-remote\n  Fix tests under GETTEXT_POISON on parseopt\n\n t/t0006-date.sh                 |  2 +-\n t/t0040-parse-options.sh        | 34 +++++++++++++++++++++++++++++-----\n t/t1300-repo-config.sh          |  2 +-\n t/t1502-rev-parse-parseopt.sh   |  2 +-\n t/t2006-checkout-index-basic.sh |  4 ++--\n t/t2107-update-index-basic.sh   |  4 ++--\n t/t3004-ls-files-basic.sh       |  4 ++--\n t/t3200-branch.sh               |  4 ++--\n t/t3501-revert-cherry-pick.sh   |  4 ++--\n t/t3903-stash.sh                |  2 +-\n t/t4006-diff-mode.sh            |  8 ++++----\n t/t4012-diff-binary.sh          |  4 ++--\n t/t4120-apply-popt.sh           |  4 ++--\n t/t4133-apply-filenames.sh      |  4 ++--\n t/t4200-rerere.sh               |  4 ++--\n t/t4202-log.sh                  |  2 +-\n t/t4205-log-pretty-formats.sh   |  4 ++--\n t/t5300-pack-object.sh          |  4 ++--\n t/t5505-remote.sh               | 28 +++++++++++++++++-----------\n t/t5530-upload-pack-error.sh    |  4 ++--\n t/t6500-gc.sh                   |  4 ++--\n t/t7508-status.sh               |  2 +-\n t/t7600-merge.sh                |  2 +-\n 23 files changed, 83 insertions(+), 53 deletions(-)\n\n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197882","messageId":"1b42b555cd785e19e95c730ac00271a2fee64edb.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"cover.1346045253.git.worldhello.net@gmail.com","subject":"[PATCH v2 1/7] Fix tests under GETTEXT_POISON on relative dates","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:49Z","receivedAt":"2012-08-27T05:36:49Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Use a i18n-specific test_i18ncmp in t/t0006-data.sh for relative dates\ntests. This issue was was introduced in v1.7.10-230-g7d29a:\n\n    7d29a i18n: mark relative dates for translation\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t0006-date.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t0006-date.sh b/t/t0006-date.sh\nindex 1d29..e53cf 100755\n--- a/t/t0006-date.sh\n+++ b/t/t0006-date.sh\n@@ -11,7 +11,7 @@ check_show() {\n \techo \"$t -> $2\" >expect\n \ttest_expect_${3:-success} \"relative date ($2)\" \"\n \ttest-date show $t >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n \t\"\n }\n \n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197883","messageId":"08d87cf811ed6ea328303b8ca26f1ab32cacfba9.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"1b42b555cd785e19e95c730ac00271a2fee64edb.1346045253.git.worldhello.net@gmail.com","subject":"[PATCH v2 2/7] Fix tests under GETTEXT_POISON on git-stash","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:50Z","receivedAt":"2012-08-27T05:36:50Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Use i18n-specific test functions in test scripts for git-stash.\nThis issue was was introduced in v1.7.4.1-119-g355ec:\n\n    355ec i18n: git-status basic messages\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t3903-stash.sh | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/t/t3903-stash.sh b/t/t3903-stash.sh\nindex cd0426..5dfbd 100755\n--- a/t/t3903-stash.sh\n+++ b/t/t3903-stash.sh\n@@ -610,7 +610,7 @@ test_expect_success 'stash apply shows status same as git status (relative to cu\n \t\tgit stash apply\n \t) |\n \tsed -e 1,2d >actual && # drop \"Saved...\" and \"HEAD is now...\"\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n cat > expect << EOF\n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197884","messageId":"7398781c6d647557954f4a0c7df29fc98aad842b.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"08d87cf811ed6ea328303b8ca26f1ab32cacfba9.1346045253.git.worldhello.net@gmail.com","subject":"[PATCH v2 3/7] Fix tests under GETTEXT_POISON on diffstat","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:51Z","receivedAt":"2012-08-27T05:36:51Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Use i18n-specific test functions in test scripts for diffstat.\nThis issue was was introduced in v1.7.9-1-g7f814:\n\n    7f814 Use correct grammar in diffstat summary line\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t4006-diff-mode.sh          | 8 ++++----\n t/t4202-log.sh                | 2 +-\n t/t4205-log-pretty-formats.sh | 4 ++--\n t/t7508-status.sh             | 2 +-\n 4 files changed, 8 insertions(+), 8 deletions(-)\n\ndiff --git a/t/t4006-diff-mode.sh b/t/t4006-diff-mode.sh\nindex 7a3e1..3d4b1 100755\n--- a/t/t4006-diff-mode.sh\n+++ b/t/t4006-diff-mode.sh\n@@ -36,24 +36,24 @@ test_expect_success '--stat output after text chmod' '\n \ttest_chmod -x rezrov &&\n \techo \" 0 files changed\" >expect &&\n \tgit diff HEAD --stat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success '--shortstat output after text chmod' '\n \tgit diff HEAD --shortstat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success '--stat output after binary chmod' '\n \ttest_chmod +x binbin &&\n \techo \" 0 files changed\" >expect &&\n \tgit diff HEAD --stat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success '--shortstat output after binary chmod' '\n \tgit diff HEAD --shortstat >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_done\ndiff --git a/t/t4202-log.sh b/t/t4202-log.sh\nindex 71be5..31869 100755\n--- a/t/t4202-log.sh\n+++ b/t/t4202-log.sh\n@@ -803,7 +803,7 @@ sanitize_output () {\n test_expect_success 'log --graph with diff and stats' '\n \tgit log --graph --pretty=short --stat -p >actual &&\n \tsanitize_output >actual.sanitized <actual &&\n-\ttest_cmp expect actual.sanitized\n+\ttest_i18ncmp expect actual.sanitized\n '\n \n test_done\ndiff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh\nindex 4afd77..2c45d 100755\n--- a/t/t4205-log-pretty-formats.sh\n+++ b/t/t4205-log-pretty-formats.sh\n@@ -88,7 +88,7 @@ test_expect_success 'NUL separation with --stat' '\n \tstat1_part=$(git diff --stat --root HEAD^) &&\n \tprintf \"add bar\\n$stat0_part\\n\\0initial\\n$stat1_part\\n\" >expected &&\n \tgit log -z --stat --pretty=\"format:%s\" >actual &&\n-\ttest_cmp expected actual\n+\ttest_i18ncmp expected actual\n '\n \n test_expect_failure 'NUL termination with --stat' '\n@@ -96,7 +96,7 @@ test_expect_failure 'NUL termination with --stat' '\n \tstat1_part=$(git diff --stat --root HEAD^) &&\n \tprintf \"add bar\\n$stat0_part\\n\\0initial\\n$stat1_part\\n\\0\" >expected &&\n \tgit log -z --stat --pretty=\"tformat:%s\" >actual &&\n-\ttest_cmp expected actual\n+\ttest_i18ncmp expected actual\n '\n \n test_done\ndiff --git a/t/t7508-status.sh b/t/t7508-status.sh\nindex c206f..e313e 100755\n--- a/t/t7508-status.sh\n+++ b/t/t7508-status.sh\n@@ -80,7 +80,7 @@ test_expect_success 'status --column' '\n #\tdir1/untracked dir2/untracked untracked\n #\tdir2/modified  output\n EOF\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n '\n \n cat >expect <<\\EOF\n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197885","messageId":"d20c47e9618f998b84934c0310f3de51d791e83f.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"7398781c6d647557954f4a0c7df29fc98aad842b.1346045253.git.worldhello.net@gmail.com","subject":"[PATCH v2 4/7] Fix tests under GETTEXT_POISON on git-apply","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:52Z","receivedAt":"2012-08-27T05:36:52Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Use i18n-specific test functions in test scripts for git-apply.\nThis issue was was introduced in the following commits:\n\n    de373 i18n: apply: mark parseopt strings for translation\n    3638e i18n: apply: mark strings for translation\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t4012-diff-binary.sh     | 4 ++--\n t/t4120-apply-popt.sh      | 4 ++--\n t/t4133-apply-filenames.sh | 4 ++--\n 3 files changed, 6 insertions(+), 6 deletions(-)\n\ndiff --git a/t/t4012-diff-binary.sh b/t/t4012-diff-binary.sh\nindex ec4de..1215a 100755\n--- a/t/t4012-diff-binary.sh\n+++ b/t/t4012-diff-binary.sh\n@@ -63,7 +63,7 @@ test_expect_success 'apply --numstat understands diff --binary format' '\n \n # apply needs to be able to skip the binary material correctly\n # in order to report the line number of a corrupt patch.\n-test_expect_success 'apply detecting corrupt patch correctly' '\n+test_expect_success C_LOCALE_OUTPUT 'apply detecting corrupt patch correctly' '\n \tgit diff >output &&\n \tsed -e \"s/-CIT/xCIT/\" <output >broken &&\n \ttest_must_fail git apply --stat --summary broken 2>detected &&\n@@ -73,7 +73,7 @@ test_expect_success 'apply detecting corrupt patch correctly' '\n \ttest \"$detected\" = xCIT\n '\n \n-test_expect_success 'apply detecting corrupt patch correctly' '\n+test_expect_success C_LOCALE_OUTPUT 'apply detecting corrupt patch correctly' '\n \tgit diff --binary | sed -e \"s/-CIT/xCIT/\" >broken &&\n \ttest_must_fail git apply --stat --summary broken 2>detected &&\n \tdetected=`cat detected` &&\ndiff --git a/t/t4120-apply-popt.sh b/t/t4120-apply-popt.sh\nindex a33d5..c5fec 100755\n--- a/t/t4120-apply-popt.sh\n+++ b/t/t4120-apply-popt.sh\n@@ -32,7 +32,7 @@ test_expect_success 'apply git diff with -p2' '\n test_expect_success 'apply with too large -p' '\n \tcp file1.saved file1 &&\n \ttest_must_fail git apply --stat -p3 patch.file 2>err &&\n-\tgrep \"removing 3 leading\" err\n+\ttest_i18ngrep \"removing 3 leading\" err\n '\n \n test_expect_success 'apply (-p2) traditional diff with funny filenames' '\n@@ -54,7 +54,7 @@ test_expect_success 'apply (-p2) traditional diff with funny filenames' '\n test_expect_success 'apply with too large -p and fancy filename' '\n \tcp file1.saved file1 &&\n \ttest_must_fail git apply --stat -p3 patch.escaped 2>err &&\n-\tgrep \"removing 3 leading\" err\n+\ttest_i18ngrep \"removing 3 leading\" err\n '\n \n test_expect_success 'apply (-p2) diff, mode change only' '\ndiff --git a/t/t4133-apply-filenames.sh b/t/t4133-apply-filenames.sh\nindex 94da9..2ecb4 100755\n--- a/t/t4133-apply-filenames.sh\n+++ b/t/t4133-apply-filenames.sh\n@@ -30,9 +30,9 @@ EOF\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_i18ngrep \"inconsistent new filename\" err &&\n \ttest_must_fail git apply bad2.patch 2>err &&\n-\tgrep \"inconsistent old filename\" err\n+\ttest_i18ngrep \"inconsistent old filename\" err\n '\n \n test_done\n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197887","messageId":"a2e20a1e1ae4be42b763904177cf634a6e291f15.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"d20c47e9618f998b84934c0310f3de51d791e83f.1346045253.git.worldhello.net@gmail.com","subject":"[PATCH v2 5/7] Fix tests under GETTEXT_POISON on pack-object","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:53Z","receivedAt":"2012-08-27T05:36:53Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Use i18n-specific test functions in test scripts for pack-object.\nThis issue was was introduced in v1.7.10.2-556-g46140:\n\n    46140 index-pack: use streaming interface for collision test on large blobs\n    cf2ba pack-objects: use streaming interface for reading large loose blobs\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t5300-pack-object.sh       | 4 ++--\n t/t5530-upload-pack-error.sh | 4 ++--\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh\nindex 2e52..a07c8 100755\n--- a/t/t5300-pack-object.sh\n+++ b/t/t5300-pack-object.sh\n@@ -416,11 +416,11 @@ test_expect_success \\\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-     grep \"SHA1 COLLISION FOUND\" msg'\n+     test_i18ngrep \"SHA1 COLLISION FOUND\" msg'\n \n test_expect_success \\\n     'make sure index-pack detects the SHA1 collision (large blobs)' \\\n     'test_must_fail git -c core.bigfilethreshold=1 index-pack -o bad.idx test-3.pack 2>msg &&\n-     grep \"SHA1 COLLISION FOUND\" msg'\n+     test_i18ngrep \"SHA1 COLLISION FOUND\" msg'\n \n test_done\ndiff --git a/t/t5530-upload-pack-error.sh b/t/t5530-upload-pack-error.sh\nindex 6b2a5f..c983d 100755\n--- a/t/t5530-upload-pack-error.sh\n+++ b/t/t5530-upload-pack-error.sh\n@@ -35,8 +35,8 @@ test_expect_success 'upload-pack fails due to error in pack-objects packing' '\n \tprintf \"0032want %s\\n00000009done\\n0000\" \\\n \t\t$(git rev-parse HEAD) >input &&\n \ttest_must_fail git upload-pack . <input >/dev/null 2>output.err &&\n-\tgrep \"unable to read\" output.err &&\n-\tgrep \"pack-objects died\" output.err\n+\ttest_i18ngrep \"unable to read\" output.err &&\n+\ttest_i18ngrep \"pack-objects died\" output.err\n '\n \n test_expect_success 'corrupt repo differently' '\n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197886","messageId":"f56c058cfd76d02ed42b0c5b7161bde6bd51ddd0.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"a2e20a1e1ae4be42b763904177cf634a6e291f15.1346045253.git.worldhello.net@gmail.com","subject":"[PATCH v2 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:54Z","receivedAt":"2012-08-27T05:36:54Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Use i18n-specific test functions in test scripts for git-remote.\nThis issue was was introduced in v1.7.10-233-gbb16d5:\n\n    bb16d5 i18n: remote: mark strings for translation\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t5505-remote.sh | 28 +++++++++++++++++-----------\n 1 file changed, 17 insertions(+), 11 deletions(-)\n\ndiff --git a/t/t5505-remote.sh b/t/t5505-remote.sh\nindex e8af6..7f0cb 100755\n--- a/t/t5505-remote.sh\n+++ b/t/t5505-remote.sh\n@@ -52,7 +52,7 @@ test_expect_success setup '\n \n '\n \n-test_expect_success 'remote information for the origin' '\n+test_expect_success C_LOCALE_OUTPUT 'remote information for the origin' '\n (\n \tcd test &&\n \ttokens_match origin \"$(git remote)\" &&\n@@ -66,8 +66,6 @@ test_expect_success 'add another remote' '\n \tcd test &&\n \tgit remote add -f second ../two &&\n \ttokens_match \"origin second\" \"$(git remote)\" &&\n-\tcheck_remote_track origin master side &&\n-\tcheck_remote_track second master side another &&\n \tcheck_tracking_branch second master side another &&\n \tgit for-each-ref \"--format=%(refname)\" refs/remotes |\n \tsed -e \"/^refs\\/remotes\\/origin\\//d\" \\\n@@ -77,6 +75,14 @@ test_expect_success 'add another remote' '\n )\n '\n \n+test_expect_success C_LOCALE_OUTPUT 'add another remote' '\n+(\n+\tcd test &&\n+\tcheck_remote_track origin master side &&\n+\tcheck_remote_track second master side another &&\n+)\n+'\n+\n test_expect_success 'remote forces tracking branches' '\n (\n \tcd test &&\n@@ -95,7 +101,7 @@ test_expect_success 'remove remote' '\n )\n '\n \n-test_expect_success 'remove remote' '\n+test_expect_success C_LOCALE_OUTPUT 'remove remote' '\n (\n \tcd test &&\n \ttokens_match origin \"$(git remote)\" &&\n@@ -131,8 +137,8 @@ EOF\n \tgit remote rm oops 2>actual2 &&\n \tgit branch -d foobranch &&\n \tgit tag -d footag &&\n-\ttest_cmp expect1 actual1 &&\n-\ttest_cmp expect2 actual2\n+\ttest_i18ncmp expect1 actual1 &&\n+\ttest_i18ncmp expect2 actual2\n )\n '\n \n@@ -192,7 +198,7 @@ test_expect_success 'show' '\n \t git config --add remote.two.push refs/heads/master:refs/heads/another &&\n \t git remote show origin two > output &&\n \t git branch -d rebase octopus &&\n-\t test_cmp expect output)\n+\t test_i18ncmp expect output)\n '\n \n cat > test/expect << EOF\n@@ -217,7 +223,7 @@ test_expect_success 'show -n' '\n \t cd test &&\n \t git remote show -n origin > output &&\n \t mv ../one.unreachable ../one &&\n-\t test_cmp expect output)\n+\t test_i18ncmp expect output)\n '\n \n test_expect_success 'prune' '\n@@ -255,7 +261,7 @@ EOF\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+\ttest_i18ncmp expect output)\n '\n \n cat >test/expect <<EOF\n@@ -285,7 +291,7 @@ test_expect_success 'prune --dry-run' '\n \t test_must_fail git rev-parse refs/remotes/origin/side &&\n \t(cd ../one &&\n \t git branch -m side side2) &&\n-\t test_cmp expect output)\n+\t test_i18ncmp expect output)\n '\n \n test_expect_success 'add --mirror && prune' '\n@@ -705,7 +711,7 @@ test_expect_success 'remote prune to cause a dangling symref' '\n \t\tcd seven &&\n \t\tgit remote prune origin\n \t) >err 2>&1 &&\n-\tgrep \"has become dangling\" err &&\n+\ttest_i18ngrep \"has become dangling\" err &&\n \n \t: And the dangling symref will not cause other annoying errors &&\n \t(\n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197888","messageId":"8aeb40680c05380fb3d49198434842c231af3b78.1346045253.git.worldhello.net@gmail.com","threadId":"31303","inReplyTo":"f56c058cfd76d02ed42b0c5b7161bde6bd51ddd0.1346045253.git.worldhello.net@gmail.com","subject":"[PATCH v2 7/7] Fix tests under GETTEXT_POISON on parseopt","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T05:36:55Z","receivedAt":"2012-08-27T05:36:55Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"Use i18n-specific test functions in test scripts for parseopt tests.\nThis issue was was introduced in v1.7.10.1-488-g54e6d:\n\n    54e6d i18n: parseopt: lookup help and argument translations when showing usage\n\nand been broken under GETTEXT_POISON=YesPlease since.\n\nSigned-off-by: Jiang Xin <worldhello.net@gmail.com>\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n t/t0040-parse-options.sh        | 34 +++++++++++++++++++++++++++++-----\n t/t1300-repo-config.sh          |  2 +-\n t/t1502-rev-parse-parseopt.sh   |  2 +-\n t/t2006-checkout-index-basic.sh |  4 ++--\n t/t2107-update-index-basic.sh   |  4 ++--\n t/t3004-ls-files-basic.sh       |  4 ++--\n t/t3200-branch.sh               |  4 ++--\n t/t3501-revert-cherry-pick.sh   |  4 ++--\n t/t4200-rerere.sh               |  4 ++--\n t/t6500-gc.sh                   |  4 ++--\n t/t7600-merge.sh                |  2 +-\n 11 files changed, 46 insertions(+), 22 deletions(-)\n\ndiff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh\nindex e3f35..244a4 100755\n--- a/t/t0040-parse-options.sh\n+++ b/t/t0040-parse-options.sh\n@@ -51,7 +51,7 @@ EOF\n test_expect_success 'test help' '\n \ttest_must_fail test-parse-options -h > output 2> output.err &&\n \ttest ! -s output.err &&\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n '\n \n mv expect expect.err\n@@ -79,6 +79,17 @@ check() {\n \ttest_cmp expect output\n }\n \n+check_i18n() {\n+\twhat=\"$1\" &&\n+\tshift &&\n+\texpect=\"$1\" &&\n+\tshift &&\n+\tsed \"s/^$what .*/$what $expect/\" <expect.template >expect &&\n+\ttest-parse-options $* >output 2>output.err &&\n+\ttest ! -s output.err &&\n+\ttest_i18ncmp expect output\n+}\n+\n check_unknown() {\n \tcase \"$1\" in\n \t--*)\n@@ -92,6 +103,19 @@ check_unknown() {\n \ttest_cmp expect output.err\n }\n \n+check_unknown_i18n() {\n+\tcase \"$1\" in\n+\t--*)\n+\t\techo error: unknown option \\`${1#--}\\' >expect ;;\n+\t-*)\n+\t\techo error: unknown switch \\`${1#-}\\' >expect ;;\n+\tesac &&\n+\tcat expect.err >>expect &&\n+\ttest_must_fail test-parse-options $* >output 2>output.err &&\n+\ttest ! -s output &&\n+\ttest_i18ncmp expect output.err\n+}\n+\n test_expect_success 'OPT_BOOL() #1' 'check boolean: 1 --yes'\n test_expect_success 'OPT_BOOL() #2' 'check boolean: 1 --no-doubt'\n test_expect_success 'OPT_BOOL() #3' 'check boolean: 1 -D'\n@@ -104,8 +128,8 @@ test_expect_success 'OPT_BOOL() is idempotent #2' 'check boolean: 1 -DB'\n test_expect_success 'OPT_BOOL() negation #1' 'check boolean: 0 -D --no-yes'\n test_expect_success 'OPT_BOOL() negation #2' 'check boolean: 0 -D --no-no-doubt'\n \n-test_expect_success 'OPT_BOOL() no negation #1' 'check_unknown --fear'\n-test_expect_success 'OPT_BOOL() no negation #2' 'check_unknown --no-no-fear'\n+test_expect_success 'OPT_BOOL() no negation #1' 'check_unknown_i18n --fear'\n+test_expect_success 'OPT_BOOL() no negation #2' 'check_unknown_i18n --no-no-fear'\n \n test_expect_success 'OPT_BOOL() positivation' 'check boolean: 0 -D --doubt'\n \n@@ -310,8 +334,8 @@ 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_cmp expect output &&\n-\ttest_cmp expect.err output.err\n+\ttest_i18ncmp expect output &&\n+\ttest_i18ncmp expect.err output.err\n '\n \n cat > expect <<EOF\ndiff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh\nindex a477..e127f 100755\n--- a/t/t1300-repo-config.sh\n+++ b/t/t1300-repo-config.sh\n@@ -391,7 +391,7 @@ test_expect_success 'get bool variable with empty value' \\\n \n test_expect_success 'no arguments, but no crash' '\n \ttest_must_fail git config >output 2>&1 &&\n-\tgrep usage output\n+\ttest_i18ngrep usage output\n '\n \n cat > .git/config << EOF\ndiff --git a/t/t1502-rev-parse-parseopt.sh b/t/t1502-rev-parse-parseopt.sh\nindex 1efd7..13c88 100755\n--- a/t/t1502-rev-parse-parseopt.sh\n+++ b/t/t1502-rev-parse-parseopt.sh\n@@ -41,7 +41,7 @@ EOF\n \n test_expect_success 'test --parseopt help output' '\n \ttest_expect_code 129 git rev-parse --parseopt -- -h > output < optionspec &&\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n '\n \n cat > expect <<EOF\ndiff --git a/t/t2006-checkout-index-basic.sh b/t/t2006-checkout-index-basic.sh\nindex b855..57cbd 100755\n--- a/t/t2006-checkout-index-basic.sh\n+++ b/t/t2006-checkout-index-basic.sh\n@@ -7,7 +7,7 @@ test_description='basic checkout-index tests\n \n test_expect_success 'checkout-index --gobbledegook' '\n \ttest_expect_code 129 git checkout-index --gobbledegook 2>err &&\n-\tgrep \"[Uu]sage\" err\n+\ttest_i18ngrep \"[Uu]sage\" err\n '\n \n test_expect_success 'checkout-index -h in broken repository' '\n@@ -18,7 +18,7 @@ test_expect_success 'checkout-index -h in broken repository' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git checkout-index -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage\" broken/usage\n '\n \n test_done\ndiff --git a/t/t2107-update-index-basic.sh b/t/t2107-update-index-basic.sh\nindex 809fa..17d69 100755\n--- a/t/t2107-update-index-basic.sh\n+++ b/t/t2107-update-index-basic.sh\n@@ -15,7 +15,7 @@ test_expect_success 'update-index --nonsense fails' '\n \n test_expect_success 'update-index --nonsense dumps usage' '\n \ttest_expect_code 129 git update-index --nonsense 2>err &&\n-\tgrep \"[Uu]sage: git update-index\" err\n+\ttest_i18ngrep \"[Uu]sage: git update-index\" err\n '\n \n test_expect_success 'update-index -h with corrupt index' '\n@@ -26,7 +26,7 @@ test_expect_success 'update-index -h with corrupt index' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git update-index -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage: git update-index\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage: git update-index\" broken/usage\n '\n \n test_done\ndiff --git a/t/t3004-ls-files-basic.sh b/t/t3004-ls-files-basic.sh\nindex 490e05..8d9bc 100755\n--- a/t/t3004-ls-files-basic.sh\n+++ b/t/t3004-ls-files-basic.sh\n@@ -22,7 +22,7 @@ test_expect_success 'ls-files with nonexistent path' '\n \n test_expect_success 'ls-files with nonsense option' '\n \ttest_expect_code 129 git ls-files --nonsense 2>actual &&\n-\tgrep \"[Uu]sage: git ls-files\" actual\n+\ttest_i18ngrep \"[Uu]sage: git ls-files\" actual\n '\n \n test_expect_success 'ls-files -h in corrupt repository' '\n@@ -33,7 +33,7 @@ test_expect_success 'ls-files -h in corrupt repository' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git ls-files -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage: git ls-files \" broken/usage\n+\ttest_i18ngrep \"[Uu]sage: git ls-files \" broken/usage\n '\n \n test_done\ndiff --git a/t/t3200-branch.sh b/t/t3200-branch.sh\nindex a17f8..1ffce 100755\n--- a/t/t3200-branch.sh\n+++ b/t/t3200-branch.sh\n@@ -31,7 +31,7 @@ test_expect_success 'branch -h in broken repository' '\n \t\t>.git/refs/heads/master &&\n \t\ttest_expect_code 129 git branch -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage\" broken/usage\n '\n \n test_expect_success \\\n@@ -74,7 +74,7 @@ test_expect_success \\\n test_expect_success \\\n     'git branch -m dumps usage' \\\n        'test_expect_code 129 git branch -m 2>err &&\n-\tgrep \"[Uu]sage: git branch\" err'\n+\ttest_i18ngrep \"[Uu]sage: git branch\" err'\n \n test_expect_success \\\n     'git branch -m m m/m should work' \\\ndiff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh\nindex 595d2..34c86e 100755\n--- a/t/t3501-revert-cherry-pick.sh\n+++ b/t/t3501-revert-cherry-pick.sh\n@@ -47,7 +47,7 @@ test_expect_success 'cherry-pick --nonsense' '\n \tgit diff --exit-code HEAD &&\n \ttest_must_fail git cherry-pick --nonsense 2>msg &&\n \tgit diff --exit-code HEAD \"$pos\" &&\n-\tgrep '[Uu]sage:' msg\n+\ttest_i18ngrep '[Uu]sage:' msg\n '\n \n test_expect_success 'revert --nonsense' '\n@@ -56,7 +56,7 @@ test_expect_success 'revert --nonsense' '\n \tgit diff --exit-code HEAD &&\n \ttest_must_fail git revert --nonsense 2>msg &&\n \tgit diff --exit-code HEAD \"$pos\" &&\n-\tgrep '[Uu]sage:' msg\n+\ttest_i18ngrep '[Uu]sage:' msg\n '\n \n test_expect_success 'cherry-pick after renaming branch' '\ndiff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh\nindex 3ab67..7f666 100755\n--- a/t/t4200-rerere.sh\n+++ b/t/t4200-rerere.sh\n@@ -382,13 +382,13 @@ test_expect_success 'rerere --no-no-rerere-autoupdate' '\n \tgit update-index --index-info <failedmerge &&\n \tcp file3.conflict file3 &&\n \ttest_must_fail git rerere --no-no-rerere-autoupdate 2>err &&\n-\tgrep [Uu]sage err &&\n+\ttest_i18ngrep [Uu]sage err &&\n \ttest_must_fail git update-index --refresh\n '\n \n test_expect_success 'rerere -h' '\n \ttest_must_fail git rerere -h >help &&\n-\tgrep [Uu]sage help\n+\ttest_i18ngrep [Uu]sage help\n '\n \n test_done\ndiff --git a/t/t6500-gc.sh b/t/t6500-gc.sh\nindex 82f36..b1a63 100755\n--- a/t/t6500-gc.sh\n+++ b/t/t6500-gc.sh\n@@ -11,7 +11,7 @@ test_expect_success 'gc empty repository' '\n \n test_expect_success 'gc --gobbledegook' '\n \ttest_expect_code 129 git gc --nonsense 2>err &&\n-\tgrep \"[Uu]sage: git gc\" err\n+\ttest_i18ngrep \"[Uu]sage: git gc\" err\n '\n \n test_expect_success 'gc -h with invalid configuration' '\n@@ -22,7 +22,7 @@ test_expect_success 'gc -h with invalid configuration' '\n \t\techo \"[gc] pruneexpire = CORRUPT\" >>.git/config &&\n \t\ttest_expect_code 129 git gc -h >usage 2>&1\n \t) &&\n-\tgrep \"[Uu]sage\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage\" broken/usage\n '\n \n test_done\ndiff --git a/t/t7600-merge.sh b/t/t7600-merge.sh\nindex 9e27b..5e195 100755\n--- a/t/t7600-merge.sh\n+++ b/t/t7600-merge.sh\n@@ -157,7 +157,7 @@ test_expect_success 'merge -h with invalid index' '\n \t\t>.git/index &&\n \t\ttest_expect_code 129 git merge -h 2>usage\n \t) &&\n-\tgrep \"[Uu]sage: git merge\" broken/usage\n+\ttest_i18ngrep \"[Uu]sage: git merge\" broken/usage\n '\n \n test_expect_success 'reject non-strategy with a git-merge-foo name' '\n-- \n1.7.12.92.gaa91cb5\n"},{"id":"197914","messageId":"7vfw78tikk.fsf@alter.siamese.dyndns.org","threadId":"31303","inReplyTo":"1b42b555cd785e19e95c730ac00271a2fee64edb.1346045253.git.worldhello.net@gmail.com","subject":"Re: [PATCH v2 1/7] Fix tests under GETTEXT_POISON on relative dates","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-08-27T16:18:03Z","receivedAt":"2012-08-27T16:18:03Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jiang Xin <worldhello.net@gmail.com> writes:\n\n> Use a i18n-specific test_i18ncmp in t/t0006-data.sh for relative dates\n> tests. This issue was was introduced in v1.7.10-230-g7d29a:\n>\n>     7d29a i18n: mark relative dates for translation\n>\n> and been broken under GETTEXT_POISON=YesPlease since.\n>\n> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>\n> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n> ---\n\nThanks; will queue with s/0006-data/0006-date/\n\n>  t/t0006-date.sh | 2 +-\n>  1 file changed, 1 insertion(+), 1 deletion(-)\n>\n> diff --git a/t/t0006-date.sh b/t/t0006-date.sh\n> index 1d29..e53cf 100755\n> --- a/t/t0006-date.sh\n> +++ b/t/t0006-date.sh\n> @@ -11,7 +11,7 @@ check_show() {\n>  \techo \"$t -> $2\" >expect\n>  \ttest_expect_${3:-success} \"relative date ($2)\" \"\n>  \ttest-date show $t >actual &&\n> -\ttest_cmp expect actual\n> +\ttest_i18ncmp expect actual\n>  \t\"\n>  }\n"},{"id":"197916","messageId":"7v4nnoti3l.fsf@alter.siamese.dyndns.org","threadId":"31303","inReplyTo":"f56c058cfd76d02ed42b0c5b7161bde6bd51ddd0.1346045253.git.worldhello.net@gmail.com","subject":"Re: [PATCH v2 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-08-27T16:28:14Z","receivedAt":"2012-08-27T16:28:14Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jiang Xin <worldhello.net@gmail.com> writes:\n\n> Use i18n-specific test functions in test scripts for git-remote.\n> This issue was was introduced in v1.7.10-233-gbb16d5:\n>\n>     bb16d5 i18n: remote: mark strings for translation\n>\n> and been broken under GETTEXT_POISON=YesPlease since.\n>\n> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>\n> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n> ---\n> ...\n> @@ -77,6 +75,14 @@ test_expect_success 'add another remote' '\n>  )\n>  '\n>  \n> +test_expect_success C_LOCALE_OUTPUT 'add another remote' '\n> +(\n> +\tcd test &&\n> +\tcheck_remote_track origin master side &&\n> +\tcheck_remote_track second master side another &&\n> +)\n> +'\n\nThis couldn't have possibly passed with the trailing &&, or am I\nmissing something?  There is already \"add another remote\" before\nthis test that adds \"second\" remote.  Is this test about \"add\nyet another remote\", or is it checking the result of adding \"second\"\nthat was done in the previous step?\n\nWill queue with an obvious fix-up with retitle, 'check tracking', or\nsomething.\n\nThanks.\n"},{"id":"197934","messageId":"CANYiYbGudJ56j=o5SDJur2dv2=icCe2FYad88dV_5tBzLAbZnA@mail.gmail.com","threadId":"31303","inReplyTo":"7v4nnoti3l.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH v2 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Jiang Xin","fromEmail":"worldhello.net@gmail.com","sentAt":"2012-08-27T21:25:53Z","receivedAt":"2012-08-27T21:25:53Z","isPatch":true,"sender":{"key":"worldhello.net@gmail.com","avatar":"https://avatars.githubusercontent.com/u/183860?v=4"},"body":"2012/8/28 Junio C Hamano <gitster@pobox.com>:\n> Jiang Xin <worldhello.net@gmail.com> writes:\n>\n>> Use i18n-specific test functions in test scripts for git-remote.\n>> This issue was was introduced in v1.7.10-233-gbb16d5:\n>>\n>>     bb16d5 i18n: remote: mark strings for translation\n>>\n>> and been broken under GETTEXT_POISON=YesPlease since.\n>>\n>> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>\n>> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n>> ---\n>> ...\n>> @@ -77,6 +75,14 @@ test_expect_success 'add another remote' '\n>>  )\n>>  '\n>>\n>> +test_expect_success C_LOCALE_OUTPUT 'add another remote' '\n>> +(\n>> +     cd test &&\n>> +     check_remote_track origin master side &&\n>> +     check_remote_track second master side another &&\n>> +)\n>> +'\n>\n> This couldn't have possibly passed with the trailing &&, or am I\n> missing something?  There is already \"add another remote\" before\n> this test that adds \"second\" remote.  Is this test about \"add\n> yet another remote\", or is it checking the result of adding \"second\"\n> that was done in the previous step?\n\nThe trailing \"&&“ is a copy & paste error. I only run my fixup in\nGIT_GETTEXT_POISON mode in a harry, not noticed the bypassed\ntestcase has this serious bug.\n\nI split the original \"add another remote\" into two blocks. One is a\nnormal testcase, and another has a C_LOCALE_OUTPUT prereq\nflag. This is because other testcases depend on the operations in\n\"add another remote\" testcase ('git remote add -f second ../two'),\nand these testcases would fail if add C_LOCALE_OUTPUT\nprereq to the whole \"add another remote\" testcase.\n\n>\n> Will queue with an obvious fix-up with retitle, 'check tracking', or\n> something.\n>\n> Thanks.\n\n\n\n-- \n蒋鑫\n\n北京群英汇信息技术有限公司\n邮件: worldhello.net@gmail.com\n网址: http://www.ossxp.com/\n博客: http://www.worldhello.net/\n微博: http://weibo.com/gotgit/\n电话: 010-51262007, 18601196889\n"},{"id":"197957","messageId":"7vehmrpzzj.fsf@alter.siamese.dyndns.org","threadId":"31303","inReplyTo":"CANYiYbGudJ56j=o5SDJur2dv2=icCe2FYad88dV_5tBzLAbZnA@mail.gmail.com","subject":"Re: [PATCH v2 6/7] Fix tests under GETTEXT_POISON on git-remote","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2012-08-28T01:27:44Z","receivedAt":"2012-08-28T01:27:44Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jiang Xin <worldhello.net@gmail.com> writes:\n\n>> This couldn't have possibly passed with the trailing &&, or am I\n>> missing something?  There is already \"add another remote\" before\n>> this test that adds \"second\" remote.  Is this test about \"add\n>> yet another remote\", or is it checking the result of adding \"second\"\n>> that was done in the previous step?\n>\n> The trailing \"&&“ is a copy & paste error. I only run my fixup in\n> GIT_GETTEXT_POISON mode in a harry, not noticed the bypassed\n> testcase has this serious bug.\n>\n> I split the original \"add another remote\" into two blocks. One is a\n> normal testcase, and another has a C_LOCALE_OUTPUT prereq\n> flag. This is because other testcases depend on the operations in\n> \"add another remote\" testcase ('git remote add -f second ../two'),\n> and these testcases would fail if add C_LOCALE_OUTPUT\n> prereq to the whole \"add another remote\" testcase.\n\nOK, so in short, I think the fix-up I made while queuing (and the\ntypofix in the commit log message for the other one) this round to\n'pu' should match what you wanted to do.  If you want to make\nfurther changes, I wouldn't mind re-queuing an update, but otherwise\nthere is no need to resend this series (and it will be less work for\nme ;-).\n\nThanks.\n"}]}