{"thread":{"id":"45879","subject":"[PATCH v1 0/2] run GETTEXT_POISON on TravisCI","startedAt":"2017-05-05T15:41:05Z","lastAt":"2017-05-08T02:03:04Z","messageCount":11,"participants":["Lars Schneider","Jonathan Nieder","Stefan Beller","Ævar Arnfjörð Bjarmason","Johannes Sixt","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":2},"messages":[{"id":"318857","messageId":"20170505154053.58128-1-larsxschneider@gmail.com","threadId":"45879","inReplyTo":null,"subject":"[PATCH v1 0/2] run GETTEXT_POISON on TravisCI","fromName":"Lars Schneider","fromEmail":"larsxschneider@gmail.com","sentAt":"2017-05-05T15:40:51Z","receivedAt":"2017-05-05T15:41:05Z","isPatch":true,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"Hi,\n\nthis adds GETTEXT_POISON tests to TravisCI. Patch 1/2 is preparation\nand 2/2 adds the build job.\n\nYou can see a test run here:\nhttps://travis-ci.org/larsxschneider/git/jobs/229120495\n\nOn \"next\" this generates a bunch of failures (see below).\n\n@Ævar: Are your GETTEXT_POISON fixes in already or are these failures expected?\n\nCheers,\nLars\n\n\nt5316-pack-delta-depth.sh                        (Wstat: 256 Tests: 3 Failed: 2)\n  Failed tests:  2-3\n  Non-zero exit status: 1\nt6134-pathspec-in-submodule.sh                   (Wstat: 256 Tests: 3 Failed: 2)\n  Failed tests:  2-3\n  Non-zero exit status: 1\nt3415-rebase-autosquash.sh                       (Wstat: 256 Tests: 19 Failed: 6)\n  Failed tests:  13-17, 19\n  Non-zero exit status: 1\nt7509-commit.sh                                  (Wstat: 256 Tests: 12 Failed: 2)\n  Failed tests:  6-7\n  Non-zero exit status: 1\nt1309-early-config.sh                            (Wstat: 256 Tests: 8 Failed: 1)\n  Failed test:  6\n  Non-zero exit status: 1\nt3203-branch-output.sh                           (Wstat: 256 Tests: 23 Failed: 1)\n  Failed test:  23\n  Non-zero exit status: 1\nt7800-difftool.sh                                (Wstat: 256 Tests: 71 Failed: 1)\n  Failed test:  1\n  Non-zero exit status: 1\nt3404-rebase-interactive.sh                      (Wstat: 256 Tests: 95 Failed: 46)\n  Failed tests:  26-38, 40-43, 45, 47-74\n  Non-zero exit status: 1\nt3903-stash.sh                                   (Wstat: 256 Tests: 75 Failed: 2)\n  Failed tests:  70-71\n  Non-zero exit status: 1\nt7406-submodule-update.sh                        (Wstat: 256 Tests: 52 Failed: 1)\n  Failed test:  23\n  Non-zero exit status: 1\nt7508-status.sh                                  (Wstat: 256 Tests: 102 Failed: 3)\n  Failed tests:  18-19, 43\n  Non-zero exit status: 1\n\n\nBase Ref: next\nWeb-Diff: https://github.com/larsxschneider/git/commit/a835cd4775\nCheckout: git fetch https://github.com/larsxschneider/git travisci/poison-v1 && git checkout a835cd4775\n\nLars Schneider (2):\n  travis-ci: setup \"prove cache\" in \"script\" step\n  travis-ci: add job to run tests with GETTEXT_POISON\n\n .travis.yml | 13 ++++++++++---\n 1 file changed, 10 insertions(+), 3 deletions(-)\n\n\nbase-commit: 813ba54fc35ef2b9c03fe84a4803e4365c22cf49\n--\n2.12.2\n\n"},{"id":"318858","messageId":"20170505154053.58128-2-larsxschneider@gmail.com","threadId":"45879","inReplyTo":"20170505154053.58128-1-larsxschneider@gmail.com","subject":"[PATCH v1 1/2] travis-ci: setup \"prove cache\" in \"script\" step","fromName":"Lars Schneider","fromEmail":"larsxschneider@gmail.com","sentAt":"2017-05-05T15:40:52Z","receivedAt":"2017-05-05T15:41:06Z","isPatch":true,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"The command that made the \"prove cache\" persistent across builds was\nexecuted in the \"before_install\" step. Consequently, every job that\nwanted to make use of the cache had to run this step.\n\nThe \"prove cache\" is only used in the \"script\" step for the\n\"make test\" command. Therefore, we should configure the \"prove cache\"\nin this step.\n\nThis change is useful for a subsequent patch that adds a job which does\nnot need the \"before_install\" step but wants to run the \"script\" step to\nexecute the tests.\n\nSigned-off-by: Lars Schneider <larsxschneider@gmail.com>\n---\n .travis.yml | 8 +++++---\n 1 file changed, 5 insertions(+), 3 deletions(-)\n\ndiff --git a/.travis.yml b/.travis.yml\nindex 48cb00a581..aa03f8eb82 100644\n--- a/.travis.yml\n+++ b/.travis.yml\n@@ -135,12 +135,14 @@ before_install:\n     p4 -V | grep Rev.;\n     echo \"$(tput setaf 6)Git-LFS Version$(tput sgr0)\";\n     git-lfs version;\n-    mkdir -p $HOME/travis-cache;\n-    ln -s $HOME/travis-cache/.prove t/.prove;\n \n before_script: make --jobs=2\n \n-script: make --quiet test\n+script:\n+  - >\n+    mkdir -p $HOME/travis-cache;\n+    ln -s $HOME/travis-cache/.prove t/.prove;\n+    make --quiet test;\n \n after_failure:\n   - >\n-- \n2.12.2\n\n"},{"id":"318859","messageId":"20170505154053.58128-3-larsxschneider@gmail.com","threadId":"45879","inReplyTo":"20170505154053.58128-1-larsxschneider@gmail.com","subject":"[PATCH v1 2/2] travis-ci: add job to run tests with GETTEXT_POISON","fromName":"Lars Schneider","fromEmail":"larsxschneider@gmail.com","sentAt":"2017-05-05T15:40:53Z","receivedAt":"2017-05-05T15:41:07Z","isPatch":true,"sender":{"key":"larsxschneider@gmail.com","avatar":"https://avatars.githubusercontent.com/u/477434?v=4"},"body":"Add a job to run Git tests with GETTEXT_POISON. In this job we don't run\nthe git-p4, git-svn, and HTTPD tests to save resources/time (those tests\nare already executed in other jobs). Since we don't run these tests, we\ncan also skip the \"before_install\" step (which would install the\nnecessary dependencies) with an empty override.\n\nSigned-off-by: Lars Schneider <larsxschneider@gmail.com>\n---\n .travis.yml | 5 +++++\n 1 file changed, 5 insertions(+)\n\ndiff --git a/.travis.yml b/.travis.yml\nindex aa03f8eb82..278943d14a 100644\n--- a/.travis.yml\n+++ b/.travis.yml\n@@ -39,6 +39,11 @@ env:\n \n matrix:\n   include:\n+    - env: GETTEXT_POISON=YesPlease\n+      os: linux\n+      compiler:\n+      addons:\n+      before_install:\n     - env: Windows\n       os: linux\n       compiler:\n-- \n2.12.2\n\n"},{"id":"318860","messageId":"20170505160813.GH28740@aiede.svl.corp.google.com","threadId":"45879","inReplyTo":"20170505154053.58128-3-larsxschneider@gmail.com","subject":"Re: [PATCH v1 2/2] travis-ci: add job to run tests with GETTEXT_POISON","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2017-05-05T16:08:13Z","receivedAt":"2017-05-05T16:08:21Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Hi,\n\nLars Schneider wrote:\n\n> Add a job to run Git tests with GETTEXT_POISON. In this job we don't run\n> the git-p4, git-svn, and HTTPD tests to save resources/time (those tests\n> are already executed in other jobs). Since we don't run these tests, we\n> can also skip the \"before_install\" step (which would install the\n> necessary dependencies) with an empty override.\n>\n> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>\n> ---\n>  .travis.yml | 5 +++++\n>  1 file changed, 5 insertions(+)\n\nYay!  I like this.\n\nWhat I like most about GETTEXT_POISON is that it verifies that\ntranslatable strings are not affecting other functionality of Git.\nIt's a valuable thing to test continuously.\n\nFor what it's worth,\nReviewed-by: Jonathan Nieder <jrnieder@gmail.com>\n\nThanks.\n"},{"id":"318866","messageId":"20170505173841.20555-1-sbeller@google.com","threadId":"45879","inReplyTo":"20170505154053.58128-1-larsxschneider@gmail.com","subject":"[PATCH] t7406: fix i18n expectation of error message","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2017-05-05T17:38:41Z","receivedAt":"2017-05-05T17:39:02Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"The error message from \"submodule update\" is internationalized, which\nmakes sense. The test however did not check for the translated version,\nbut used a hardcoded string, which breaks the test when run with\nGETTEXT_POISON.\n\nSigned-off-by: Stefan Beller <sbeller@google.com>\n---\n t/t7406-submodule-update.sh | 6 ++----\n 1 file changed, 2 insertions(+), 4 deletions(-)\n\ndiff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh\nindex 4ac386d98b..12f6435ab0 100755\n--- a/t/t7406-submodule-update.sh\n+++ b/t/t7406-submodule-update.sh\n@@ -441,13 +441,11 @@ test_expect_success 'submodule update - command in .git/config catches failure -\n \ttest_i18ncmp actual expect\n '\n \n+sq=\"'\"\n test_expect_success 'submodule update - command run for initial population of submodule' '\n-\tcat >expect <<-EOF &&\n-\tExecution of '\\''false $submodulesha1'\\'' failed in submodule path '\\''submodule'\\''\n-\tEOF\n \trm -rf super/submodule &&\n \ttest_must_fail git -C super submodule update 2>actual &&\n-\ttest_cmp expect actual &&\n+\ttest_i18ngrep \"Execution of ${sq}false $submodulesha1${sq} failed in submodule path ${sq}submodule${sq}\" actual &&\n \tgit -C super submodule update --checkout\n '\n \n-- \n2.13.0.rc2.dirty\n\n"},{"id":"318869","messageId":"CACBZZX6ZzrJk77ReJ592rJrNR1xhVCQid6_5KTonwTot5eq-hQ@mail.gmail.com","threadId":"45879","inReplyTo":"20170505173841.20555-1-sbeller@google.com","subject":"Re: [PATCH] t7406: fix i18n expectation of error message","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2017-05-05T17:50:29Z","receivedAt":"2017-05-05T17:50:55Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Fri, May 5, 2017 at 7:38 PM, Stefan Beller <sbeller@google.com> wrote:\n> The error message from \"submodule update\" is internationalized, which\n> makes sense. The test however did not check for the translated version,\n> but used a hardcoded string, which breaks the test when run with\n> GETTEXT_POISON.\n>\n> Signed-off-by: Stefan Beller <sbeller@google.com>\n> ---\n>  t/t7406-submodule-update.sh | 6 ++----\n>  1 file changed, 2 insertions(+), 4 deletions(-)\n>\n> diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh\n> index 4ac386d98b..12f6435ab0 100755\n> --- a/t/t7406-submodule-update.sh\n> +++ b/t/t7406-submodule-update.sh\n> @@ -441,13 +441,11 @@ test_expect_success 'submodule update - command in .git/config catches failure -\n>         test_i18ncmp actual expect\n>  '\n>\n> +sq=\"'\"\n>  test_expect_success 'submodule update - command run for initial population of submodule' '\n> -       cat >expect <<-EOF &&\n> -       Execution of '\\''false $submodulesha1'\\'' failed in submodule path '\\''submodule'\\''\n> -       EOF\n>         rm -rf super/submodule &&\n>         test_must_fail git -C super submodule update 2>actual &&\n> -       test_cmp expect actual &&\n> +       test_i18ngrep \"Execution of ${sq}false $submodulesha1${sq} failed in submodule path ${sq}submodule${sq}\" actual &&\n>         git -C super submodule update --checkout\n>  '\n\nI have a fix for this in my gettext fixup series (so far lingering on\nthe list, not in pu):\nhttps://public-inbox.org/git/20170421185757.28978-1-avarab@gmail.com/\n\nThe diff is quite a bit smaller than yours:\n\ndiff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh\nindex 4ac386d98b..034914a14f 100755\n--- a/t/t7406-submodule-update.sh\n+++ b/t/t7406-submodule-update.sh\n@@ -447,7 +447,7 @@ test_expect_success 'submodule update - command\nrun for initial population of su\n        EOF\n        rm -rf super/submodule &&\n        test_must_fail git -C super submodule update 2>actual &&\n-       test_cmp expect actual &&\n+       test_i18ncmp expect actual &&\n        git -C super submodule update --checkout\n '\n\nDo you prefer to use i18ngrep for whatever reason? Seems better to use\ni18ncmp there.\n"},{"id":"318872","messageId":"CAGZ79kaJ-S3-ihj_FKXKO9Bv=y+nrm5LyuQcObKiNDTv7q9-uw@mail.gmail.com","threadId":"45879","inReplyTo":"CACBZZX6ZzrJk77ReJ592rJrNR1xhVCQid6_5KTonwTot5eq-hQ@mail.gmail.com","subject":"Re: [PATCH] t7406: fix i18n expectation of error message","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2017-05-05T17:53:14Z","receivedAt":"2017-05-05T17:53:20Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On Fri, May 5, 2017 at 10:50 AM, Ævar Arnfjörð Bjarmason\n<avarab@gmail.com> wrote:\n>\n> I have a fix for this in my gettext fixup series (so far lingering on\n> the list, not in pu):\n> https://public-inbox.org/git/20170421185757.28978-1-avarab@gmail.com/\n\nOh, should have checked the list more closely before.\n\n>\n> The diff is quite a bit smaller than yours:\n\nI agree that this is the way to fix it best.\n\nSorry for the noise,\nStefan\n"},{"id":"318874","messageId":"20170505181932.14317-1-avarab@gmail.com","threadId":"45879","inReplyTo":"20170505154053.58128-1-larsxschneider@gmail.com","subject":"[PATCH v2] tests: fix tests broken under GETTEXT_POISON=YesPlease","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2017-05-05T18:19:32Z","receivedAt":"2017-05-05T18:19:57Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"The GETTEXT_POISON=YesPlease compile-time testing option added in my\nbb946bba76 (\"i18n: add GETTEXT_POISON to simulate unfriendly\ntranslator\", 2011-02-22) has been slowly bitrotting as strings have\nbeen marked for translation, and new tests have been added without\nrunning it.\n\nI brought this up on the list (\"[BUG] test suite broken with\nGETTEXT_POISON=YesPlease\", [1]) asking whether this mode was useful at\nall anymore. At least one person occasionally uses it, and Lars\nSchneider offered to change one of the the Travis builds to run in\nthis mode, so fix up the failing ones.\n\nMy test setup runs most of the tests, with the notable exception of\nskipping all the p4 tests, so it's possible that there's still some\nlurking regressions I haven't fixed.\n\n1. <CACBZZX62+acvi1dpkknadTL827mtCm_QesGSZ=6+UnyeMpg8+Q@mail.gmail.com>\n\nSigned-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>\n---\n\nOn Fri, May 5, 2017 at 5:40 PM, Lars Schneider <larsxschneider@gmail.com> wrote:\n> Hi,\n>\n> this adds GETTEXT_POISON tests to TravisCI. Patch 1/2 is preparation\n> and 2/2 adds the build job.\n>\n> You can see a test run here:\n> https://travis-ci.org/larsxschneider/git/jobs/229120495\n>\n> On \"next\" this generates a bunch of failures (see below).\n>\n> @Ævar: Are your GETTEXT_POISON fixes in already or are these failures expected?\n\nMy v1 in <20170421185757.28978-1-avarab@gmail.com> didn't get picked\nup, so these are all known failures.\n\nIn addition the t7508-status.sh test was broken on pu. I've just based\nthis version of the patch on pu, it's identical on master except for\nthe addition of the t7508-status.sh fix, meaning if this lands on pu\nGETTEXT_POISON runs will be clean.\n\nJunio: I think between Travis now testing for this & the scary i18n\nreflog regression (not that poison caught that, but that was lack of\ntesting, poisoining catches that class of issue) it makes sense to\ndiscard my patch for removing GETTEXT_POISON & queue this up instead.\n\n t/t1309-early-config.sh          |  2 +-\n t/t1430-bad-ref-name.sh          |  2 +-\n t/t3203-branch-output.sh         |  2 +-\n t/t3404-rebase-interactive.sh    | 14 +++++++-------\n t/t3415-rebase-autosquash.sh     | 10 +++++-----\n t/t3903-stash.sh                 |  4 ++--\n t/t4205-log-pretty-formats.sh    |  4 ++--\n t/t5316-pack-delta-depth.sh      |  8 ++++++--\n t/t6134-pathspec-in-submodule.sh |  4 ++--\n t/t7004-tag.sh                   |  4 ++--\n t/t7406-submodule-update.sh      |  2 +-\n t/t7508-status.sh                |  6 +++---\n t/t7509-commit.sh                |  4 ++--\n t/t7800-difftool.sh              |  4 ++--\n 14 files changed, 37 insertions(+), 33 deletions(-)\n\ndiff --git a/t/t1309-early-config.sh b/t/t1309-early-config.sh\nindex 1af8c454cf..3dda215e8e 100755\n--- a/t/t1309-early-config.sh\n+++ b/t/t1309-early-config.sh\n@@ -77,7 +77,7 @@ test_with_config () {\n \n test_expect_success 'ignore .git/ with incompatible repository version' '\n \ttest_with_config \"[core]repositoryformatversion = 999999\" 2>err &&\n-\tgrep \"warning:.* Expected git repo version <= [1-9]\" err\n+\ttest_i18ngrep \"warning:.* Expected git repo version <= [1-9]\" err\n '\n \n test_expect_failure 'ignore .git/ with invalid repository version' '\ndiff --git a/t/t1430-bad-ref-name.sh b/t/t1430-bad-ref-name.sh\nindex 8937e25e49..e88349c8a0 100755\n--- a/t/t1430-bad-ref-name.sh\n+++ b/t/t1430-bad-ref-name.sh\n@@ -122,7 +122,7 @@ test_expect_success 'push cannot create a badly named ref' '\n \t! grep -e \"broken\\.\\.\\.ref\" output\n '\n \n-test_expect_failure 'push --mirror can delete badly named ref' '\n+test_expect_failure C_LOCALE_OUTPUT 'push --mirror can delete badly named ref' '\n \ttop=$(pwd) &&\n \tgit init src &&\n \tgit init dest &&\ndiff --git a/t/t3203-branch-output.sh b/t/t3203-branch-output.sh\nindex 5778c0afe1..a428ae6703 100755\n--- a/t/t3203-branch-output.sh\n+++ b/t/t3203-branch-output.sh\n@@ -236,7 +236,7 @@ test_expect_success 'git branch --format option' '\n \tRefname is refs/heads/ref-to-remote\n \tEOF\n \tgit branch --format=\"Refname is %(refname)\" >actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_done\ndiff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh\nindex 61113be08a..3b411ea8f1 100755\n--- a/t/t3404-rebase-interactive.sh\n+++ b/t/t3404-rebase-interactive.sh\n@@ -366,7 +366,7 @@ test_expect_success 'verbose flag is heeded, even after --continue' '\n \tgrep \"^ file1 | 2 +-$\" output\n '\n \n-test_expect_success 'multi-squash only fires up editor once' '\n+test_expect_success C_LOCALE_OUTPUT 'multi-squash only fires up editor once' '\n \tbase=$(git rev-parse HEAD~4) &&\n \tset_fake_editor &&\n \tFAKE_COMMIT_AMEND=\"ONCE\" FAKE_LINES=\"1 squash 2 squash 3 squash 4\" \\\n@@ -376,7 +376,7 @@ test_expect_success 'multi-squash only fires up editor once' '\n \ttest 1 = $(git show | grep ONCE | wc -l)\n '\n \n-test_expect_success 'multi-fixup does not fire up editor' '\n+test_expect_success C_LOCALE_OUTPUT 'multi-fixup does not fire up editor' '\n \tgit checkout -b multi-fixup E &&\n \tbase=$(git rev-parse HEAD~4) &&\n \tset_fake_editor &&\n@@ -426,7 +426,7 @@ D\n ONCE\n EOF\n \n-test_expect_success 'squash and fixup generate correct log messages' '\n+test_expect_success C_LOCALE_OUTPUT 'squash and fixup generate correct log messages' '\n \tgit checkout -b squash-fixup E &&\n \tbase=$(git rev-parse HEAD~4) &&\n \tset_fake_editor &&\n@@ -439,7 +439,7 @@ test_expect_success 'squash and fixup generate correct log messages' '\n \tgit branch -D squash-fixup\n '\n \n-test_expect_success 'squash ignores comments' '\n+test_expect_success C_LOCALE_OUTPUT 'squash ignores comments' '\n \tgit checkout -b skip-comments E &&\n \tbase=$(git rev-parse HEAD~4) &&\n \tset_fake_editor &&\n@@ -452,7 +452,7 @@ test_expect_success 'squash ignores comments' '\n \tgit branch -D skip-comments\n '\n \n-test_expect_success 'squash ignores blank lines' '\n+test_expect_success C_LOCALE_OUTPUT 'squash ignores blank lines' '\n \tgit checkout -b skip-blank-lines E &&\n \tbase=$(git rev-parse HEAD~4) &&\n \tset_fake_editor &&\n@@ -860,7 +860,7 @@ test_expect_success 'rebase -ix with several instances of --exec' '\n \ttest_cmp expected actual\n '\n \n-test_expect_success 'rebase -ix with --autosquash' '\n+test_expect_success C_LOCALE_OUTPUT 'rebase -ix with --autosquash' '\n \tgit reset --hard execute &&\n \tgit checkout -b autosquash &&\n \techo second >second.txt &&\n@@ -943,7 +943,7 @@ test_expect_success 'rebase -i --root fixup root commit' '\n \ttest 0 = $(git cat-file commit HEAD | grep -c ^parent\\ )\n '\n \n-test_expect_success 'rebase --edit-todo does not works on non-interactive rebase' '\n+test_expect_success C_LOCALE_OUTPUT 'rebase --edit-todo does not work on non-interactive rebase' '\n \tgit reset --hard &&\n \tgit checkout conflict-branch &&\n \tset_fake_editor &&\ndiff --git a/t/t3415-rebase-autosquash.sh b/t/t3415-rebase-autosquash.sh\nindex 2f88f50c05..e364c12622 100755\n--- a/t/t3415-rebase-autosquash.sh\n+++ b/t/t3415-rebase-autosquash.sh\n@@ -234,23 +234,23 @@ test_auto_fixup_fixup () {\n \tfi\n }\n \n-test_expect_success 'fixup! fixup!' '\n+test_expect_success C_LOCALE_OUTPUT 'fixup! fixup!' '\n \ttest_auto_fixup_fixup fixup fixup\n '\n \n-test_expect_success 'fixup! squash!' '\n+test_expect_success C_LOCALE_OUTPUT 'fixup! squash!' '\n \ttest_auto_fixup_fixup fixup squash\n '\n \n-test_expect_success 'squash! squash!' '\n+test_expect_success C_LOCALE_OUTPUT 'squash! squash!' '\n \ttest_auto_fixup_fixup squash squash\n '\n \n-test_expect_success 'squash! fixup!' '\n+test_expect_success C_LOCALE_OUTPUT 'squash! fixup!' '\n \ttest_auto_fixup_fixup squash fixup\n '\n \n-test_expect_success 'autosquash with custom inst format' '\n+test_expect_success C_LOCALE_OUTPUT 'autosquash with custom inst format' '\n \tgit reset --hard base &&\n \tgit config --add rebase.instructionFormat \"[%an @ %ar] %s\"  &&\n \techo 2 >file1 &&\ndiff --git a/t/t3903-stash.sh b/t/t3903-stash.sh\nindex b71d1e659e..3b4bed5c9a 100755\n--- a/t/t3903-stash.sh\n+++ b/t/t3903-stash.sh\n@@ -865,7 +865,7 @@ test_expect_success 'stash push -p with pathspec shows no changes only once' '\n \tgit stash push -p foo >actual &&\n \techo \"No local changes to save\" >expect &&\n \tgit reset --hard HEAD~ &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success 'stash push with pathspec shows no changes when there are none' '\n@@ -875,7 +875,7 @@ test_expect_success 'stash push with pathspec shows no changes when there are no\n \tgit stash push foo >actual &&\n \techo \"No local changes to save\" >expect &&\n \tgit reset --hard HEAD~ &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success 'stash push with pathspec not in the repository errors out' '\ndiff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh\nindex 21eb8c8587..18aa1b5889 100755\n--- a/t/t4205-log-pretty-formats.sh\n+++ b/t/t4205-log-pretty-formats.sh\n@@ -126,12 +126,12 @@ test_expect_success 'NUL separation with --stat' '\n \ttest_i18ncmp expected actual\n '\n \n-test_expect_failure 'NUL termination with --stat' '\n+test_expect_failure C_LOCALE_OUTPUT 'NUL termination with --stat' '\n \tstat0_part=$(git diff --stat HEAD^ HEAD) &&\n \tstat1_part=$(git diff-tree --no-commit-id --stat --root HEAD^) &&\n \tprintf \"add bar\\n$stat0_part\\n\\0$(commit_msg)\\n$stat1_part\\n0\" >expected &&\n \tgit log -z --stat --pretty=\"tformat:%s\" >actual &&\n-\ttest_i18ncmp expected actual\n+\ttest_cmp expected actual\n '\n \n test_expect_success 'setup more commits' '\ndiff --git a/t/t5316-pack-delta-depth.sh b/t/t5316-pack-delta-depth.sh\nindex 37143ea0ac..2ed479b712 100755\n--- a/t/t5316-pack-delta-depth.sh\n+++ b/t/t5316-pack-delta-depth.sh\n@@ -82,12 +82,16 @@ test_expect_success 'packing produces a long delta' '\n \t# Use --window=0 to make sure we are seeing reused deltas,\n \t# not computing a new long chain.\n \tpack=$(git pack-objects --all --window=0 </dev/null pack) &&\n-\ttest 9 = \"$(max_chain pack-$pack.pack)\"\n+\techo 9 >expect &&\n+\tmax_chain pack-$pack.pack >actual &&\n+\ttest_i18ncmp expect actual\n '\n \n test_expect_success '--depth limits depth' '\n \tpack=$(git pack-objects --all --depth=5 </dev/null pack) &&\n-\ttest 5 = \"$(max_chain pack-$pack.pack)\"\n+\techo 5 >expect &&\n+\tmax_chain pack-$pack.pack >actual &&\n+\ttest_i18ncmp expect actual\n '\n \n test_done\ndiff --git a/t/t6134-pathspec-in-submodule.sh b/t/t6134-pathspec-in-submodule.sh\nindex fd401ca605..99a8982ab1 100755\n--- a/t/t6134-pathspec-in-submodule.sh\n+++ b/t/t6134-pathspec-in-submodule.sh\n@@ -21,7 +21,7 @@ EOF\n test_expect_success 'error message for path inside submodule' '\n \techo a >sub/a &&\n \ttest_must_fail git add sub/a 2>actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n cat <<EOF >expect\n@@ -30,7 +30,7 @@ EOF\n \n test_expect_success 'error message for path inside submodule from within submodule' '\n \ttest_must_fail git -C sub add . 2>actual &&\n-\ttest_cmp expect actual\n+\ttest_i18ncmp expect actual\n '\n \n test_done\ndiff --git a/t/t7004-tag.sh b/t/t7004-tag.sh\nindex bb2e4d704d..0ef7b94394 100755\n--- a/t/t7004-tag.sh\n+++ b/t/t7004-tag.sh\n@@ -87,7 +87,7 @@ test_expect_success 'creating a tag with --create-reflog should create reflog' '\n \tgit tag --create-reflog tag_with_reflog &&\n \tgit reflog exists refs/tags/tag_with_reflog &&\n \tsed -e \"s/^.*\t//\" .git/logs/refs/tags/tag_with_reflog >actual &&\n-\ttest_cmp expected actual\n+\ttest_i18ncmp expected actual\n '\n \n test_expect_success 'annotated tag with --create-reflog has correct message' '\n@@ -98,7 +98,7 @@ test_expect_success 'annotated tag with --create-reflog has correct message' '\n \tgit tag -m \"annotated tag\" --create-reflog tag_with_reflog &&\n \tgit reflog exists refs/tags/tag_with_reflog &&\n \tsed -e \"s/^.*\t//\" .git/logs/refs/tags/tag_with_reflog >actual &&\n-\ttest_cmp expected actual\n+\ttest_i18ncmp expected actual\n '\n \n test_expect_success '--create-reflog does not create reflog on failure' '\ndiff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh\nindex 4ac386d98b..034914a14f 100755\n--- a/t/t7406-submodule-update.sh\n+++ b/t/t7406-submodule-update.sh\n@@ -447,7 +447,7 @@ test_expect_success 'submodule update - command run for initial population of su\n \tEOF\n \trm -rf super/submodule &&\n \ttest_must_fail git -C super submodule update 2>actual &&\n-\ttest_cmp expect actual &&\n+\ttest_i18ncmp expect actual &&\n \tgit -C super submodule update --checkout\n '\n \ndiff --git a/t/t7508-status.sh b/t/t7508-status.sh\nindex 567c4d4bab..79427840a4 100755\n--- a/t/t7508-status.sh\n+++ b/t/t7508-status.sh\n@@ -392,7 +392,7 @@ EOF\n test_expect_success 'status -s -b' '\n \n \tgit status -s -b >output &&\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n \n '\n \n@@ -402,7 +402,7 @@ test_expect_success 'status -s -z -b' '\n \tgit status -s -z -b >output &&\n \tnul_to_q <output >output.q &&\n \tmv output.q output &&\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n '\n \n test_expect_success 'setup dir3' '\n@@ -744,7 +744,7 @@ EOF\n test_expect_success 'status -s -b with color.status' '\n \n \tgit status -s -b | test_decode_color >output &&\n-\ttest_cmp expect output\n+\ttest_i18ncmp expect output\n \n '\n \ndiff --git a/t/t7509-commit.sh b/t/t7509-commit.sh\nindex db9774e345..ddef7ea6b0 100755\n--- a/t/t7509-commit.sh\n+++ b/t/t7509-commit.sh\n@@ -101,7 +101,7 @@ test_expect_success '--amend option with empty author' '\n \techo \"Empty author test\" >>foo &&\n \ttest_tick &&\n \ttest_must_fail git commit -a -m \"empty author\" --amend 2>err &&\n-\tgrep \"empty ident\" err\n+\ttest_i18ngrep \"empty ident\" err\n '\n \n test_expect_success '--amend option with missing author' '\n@@ -114,7 +114,7 @@ test_expect_success '--amend option with missing author' '\n \techo \"Missing author test\" >>foo &&\n \ttest_tick &&\n \ttest_must_fail git commit -a -m \"malformed author\" --amend 2>err &&\n-\tgrep \"empty ident\" err\n+\ttest_i18ngrep \"empty ident\" err\n '\n \n test_expect_success '--reset-author makes the commit ours even with --amend option' '\ndiff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh\nindex 7f09867478..668bbee73c 100755\n--- a/t/t7800-difftool.sh\n+++ b/t/t7800-difftool.sh\n@@ -25,14 +25,14 @@ prompt_given ()\n \n test_expect_success 'basic usage requires no repo' '\n \ttest_expect_code 129 git difftool -h >output &&\n-\tgrep ^usage: output &&\n+\ttest_i18ngrep ^usage: output &&\n \t# create a ceiling directory to prevent Git from finding a repo\n \tmkdir -p not/repo &&\n \ttest_when_finished rm -r not &&\n \ttest_expect_code 129 \\\n \tenv GIT_CEILING_DIRECTORIES=\"$(pwd)/not\" \\\n \tgit -C not/repo difftool -h >output &&\n-\tgrep ^usage: output\n+\ttest_i18ngrep ^usage: output\n '\n \n # Create a file on master and change it on branch\n-- \n2.11.0\n\n"},{"id":"318879","messageId":"CACBZZX7p3cNi6YUef4tRCck2vE5URoNuo1W1TyFK0H2fC_XfDA@mail.gmail.com","threadId":"45879","inReplyTo":"20170505154053.58128-2-larsxschneider@gmail.com","subject":"Re: [PATCH v1 1/2] travis-ci: setup \"prove cache\" in \"script\" step","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2017-05-05T19:26:51Z","receivedAt":"2017-05-05T19:27:18Z","isPatch":true,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"On Fri, May 5, 2017 at 5:40 PM, Lars Schneider <larsxschneider@gmail.com> wrote:\n> The command that made the \"prove cache\" persistent across builds was\n> executed in the \"before_install\" step. Consequently, every job that\n> wanted to make use of the cache had to run this step.\n>\n> The \"prove cache\" is only used in the \"script\" step for the\n> \"make test\" command. Therefore, we should configure the \"prove cache\"\n> in this step.\n>\n> This change is useful for a subsequent patch that adds a job which does\n> not need the \"before_install\" step but wants to run the \"script\" step to\n> execute the tests.\n>\n> Signed-off-by: Lars Schneider <larsxschneider@gmail.com>\n> ---\n>  .travis.yml | 8 +++++---\n>  1 file changed, 5 insertions(+), 3 deletions(-)\n>\n> diff --git a/.travis.yml b/.travis.yml\n> index 48cb00a581..aa03f8eb82 100644\n> --- a/.travis.yml\n> +++ b/.travis.yml\n> @@ -135,12 +135,14 @@ before_install:\n>      p4 -V | grep Rev.;\n>      echo \"$(tput setaf 6)Git-LFS Version$(tput sgr0)\";\n>      git-lfs version;\n> -    mkdir -p $HOME/travis-cache;\n> -    ln -s $HOME/travis-cache/.prove t/.prove;\n>\n>  before_script: make --jobs=2\n>\n> -script: make --quiet test\n> +script:\n> +  - >\n> +    mkdir -p $HOME/travis-cache;\n> +    ln -s $HOME/travis-cache/.prove t/.prove;\n> +    make --quiet test;\n>\n>  after_failure:\n>    - >\n\nThis reminded me to submit a patch to prove itself to allow for\ncustomizing the location of the .prove file:\nhttps://github.com/Perl-Toolchain-Gang/Test-Harness/pull/66\n\nHopefully in the not too distant future we can then do away with this\nminor hack. Doesn't matter much to us, but just inflexible that such\nsymlink hacks are needed.\n"},{"id":"318907","messageId":"4a2318e6-b0c5-5061-15e4-af11b576c079@kdbg.org","threadId":"45879","inReplyTo":"CACBZZX6ZzrJk77ReJ592rJrNR1xhVCQid6_5KTonwTot5eq-hQ@mail.gmail.com","subject":"Re: [PATCH] t7406: fix i18n expectation of error message","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2017-05-05T22:43:31Z","receivedAt":"2017-05-05T22:43:39Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Am 05.05.2017 um 19:50 schrieb Ævar Arnfjörð Bjarmason:\n> On Fri, May 5, 2017 at 7:38 PM, Stefan Beller <sbeller@google.com> wrote:\n>> The error message from \"submodule update\" is internationalized, which\n>> makes sense. The test however did not check for the translated version,\n>> but used a hardcoded string, which breaks the test when run with\n>> GETTEXT_POISON.\n>>\n>> Signed-off-by: Stefan Beller <sbeller@google.com>\n>> ---\n>>  t/t7406-submodule-update.sh | 6 ++----\n>>  1 file changed, 2 insertions(+), 4 deletions(-)\n>>\n>> diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh\n>> index 4ac386d98b..12f6435ab0 100755\n>> --- a/t/t7406-submodule-update.sh\n>> +++ b/t/t7406-submodule-update.sh\n>> @@ -441,13 +441,11 @@ test_expect_success 'submodule update - command in .git/config catches failure -\n>>         test_i18ncmp actual expect\n>>  '\n>>\n>> +sq=\"'\"\n>>  test_expect_success 'submodule update - command run for initial population of submodule' '\n>> -       cat >expect <<-EOF &&\n>> -       Execution of '\\''false $submodulesha1'\\'' failed in submodule path '\\''submodule'\\''\n>> -       EOF\n>>         rm -rf super/submodule &&\n>>         test_must_fail git -C super submodule update 2>actual &&\n>> -       test_cmp expect actual &&\n>> +       test_i18ngrep \"Execution of ${sq}false $submodulesha1${sq} failed in submodule path ${sq}submodule${sq}\" actual &&\n>>         git -C super submodule update --checkout\n>>  '\n>\n> I have a fix for this in my gettext fixup series (so far lingering on\n> the list, not in pu):\n> https://public-inbox.org/git/20170421185757.28978-1-avarab@gmail.com/\n>\n> The diff is quite a bit smaller than yours:\n>\n> diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh\n> index 4ac386d98b..034914a14f 100755\n> --- a/t/t7406-submodule-update.sh\n> +++ b/t/t7406-submodule-update.sh\n> @@ -447,7 +447,7 @@ test_expect_success 'submodule update - command\n> run for initial population of su\n>         EOF\n>         rm -rf super/submodule &&\n>         test_must_fail git -C super submodule update 2>actual &&\n> -       test_cmp expect actual &&\n> +       test_i18ncmp expect actual &&\n>         git -C super submodule update --checkout\n>  '\n>\n> Do you prefer to use i18ngrep for whatever reason? Seems better to use\n> i18ncmp there.\n\nWith grep, you can focus on the important parts. Programs on different \nplatforms or in different environments sometimes poison stderr with \nunexpected stuff (we've observed this recently with the nd/fopen-errors \nseries, also sh -x output can end up in the >2 destination).\n\nAlso, grep allows to write\n\ntest_i18ngrep \"Execution of .false.* failed in submodule path \n.submodule.\" actual\n\nNote the lack of ugly single-quote hacks and volatile object names.\n\n-- Hannes\n\n"},{"id":"319038","messageId":"xmqq8tm8aywd.fsf@gitster.mtv.corp.google.com","threadId":"45879","inReplyTo":"20170505181932.14317-1-avarab@gmail.com","subject":"Re: [PATCH v2] tests: fix tests broken under GETTEXT_POISON=YesPlease","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-05-08T02:02:58Z","receivedAt":"2017-05-08T02:03:04Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:\n\n> Junio: I think between Travis now testing for this & the scary i18n\n> reflog regression (not that poison caught that, but that was lack of\n> testing, poisoining catches that class of issue) it makes sense to\n> discard my patch for removing GETTEXT_POISON & queue this up instead.\n\nLet's queue this and then the travis patches on top.  Thanks.\n"}]}