From 3b2eb186bb738a374d9325b18710b19ec270e55f Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 14 Jun 2008 03:25:56 -0400 Subject: [PATCH 1/5] fix whitespace violations in test scripts These violations are simply wrong, but were never caught because whitespace policy checking is turned off in the test scripts. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t3903-stash.sh | 2 +- t/t4014-format-patch.sh | 6 +++--- t/t4150-am.sh | 2 +- t/t5540-http-push.sh | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh index 2d3ee3b78c..54d99ed0c3 100755 --- a/t/t3903-stash.sh +++ b/t/t3903-stash.sh @@ -41,7 +41,7 @@ test_expect_success 'apply needs clean working directory' ' echo 4 > other-file && git add other-file && echo 5 > other-file && - test_must_fail git stash apply + test_must_fail git stash apply ' test_expect_success 'apply stashed changes' ' diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index 3583e68e92..7fe853c20d 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -98,7 +98,7 @@ test_expect_success 'extra headers' ' sed -e "/^$/q" patch2 > hdrs2 && grep "^To: R. E. Cipient $" hdrs2 && grep "^Cc: S. E. Cipient $" hdrs2 - + ' test_expect_success 'extra headers without newlines' ' @@ -109,7 +109,7 @@ test_expect_success 'extra headers without newlines' ' sed -e "/^$/q" patch3 > hdrs3 && grep "^To: R. E. Cipient $" hdrs3 && grep "^Cc: S. E. Cipient $" hdrs3 - + ' test_expect_success 'extra headers with multiple To:s' ' @@ -170,7 +170,7 @@ test_expect_success 'thread cover-letter' ' git checkout side && git format-patch --cover-letter --thread -o patches/ master && FIRST_MID=$(grep "Message-Id:" patches/0000-* | sed "s/^[^<]*\(<[^>]*>\).*$/\1/") && - for i in patches/0001-* patches/0002-* patches/0003-* + for i in patches/0001-* patches/0002-* patches/0003-* do grep "References: $FIRST_MID" $i && grep "In-Reply-To: $FIRST_MID" $i || break diff --git a/t/t4150-am.sh b/t/t4150-am.sh index 722ae96cd5..bc982607d0 100755 --- a/t/t4150-am.sh +++ b/t/t4150-am.sh @@ -110,7 +110,7 @@ test_expect_success 'am applies patch correctly' ' GIT_AUTHOR_NAME="Another Thor" GIT_AUTHOR_EMAIL="a.thor@example.com" -GIT_COMMITTER_NAME="Co M Miter" +GIT_COMMITTER_NAME="Co M Miter" GIT_COMMITTER_EMAIL="c.miter@example.com" export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL diff --git a/t/t5540-http-push.sh b/t/t5540-http-push.sh index 7372439164..f15dd03e4d 100755 --- a/t/t5540-http-push.sh +++ b/t/t5540-http-push.sh @@ -38,7 +38,7 @@ test_expect_success 'setup remote repository' ' cd - && mv test_repo.git $HTTPD_DOCUMENT_ROOT_PATH ' - + test_expect_success 'clone remote repository' ' cd "$ROOT_PATH" && git clone $HTTPD_URL/test_repo.git test_repo_clone From 74f16b0c6fece88f585f9556fa1d3a7406e7a42e Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 14 Jun 2008 03:26:37 -0400 Subject: [PATCH 2/5] mask necessary whitespace policy violations in test scripts All of these violations are necessary parts of the tests (which are generally checking the behavior of trailing whitespace, or contain diff fragments with empty lines). Our solution is two-fold: 1. Process input with whitespace problems using tr. This has the added bonus that it becomes very obvious where the bogus whitespace is intended to go. 2. Move large diff fragments into their own supplemental files. This gets rid of the whitespace problem, since supplemental files are not checked, and it also makes the test script a bit easier to read. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/t3800-mktag.sh | 4 +- t/t4015-diff-whitespace.sh | 8 +-- t/t4109-apply-multifrag.sh | 132 ++----------------------------------- t/t4109/patch1.patch | 28 ++++++++ t/t4109/patch2.patch | 30 +++++++++ t/t4109/patch3.patch | 31 +++++++++ t/t4109/patch4.patch | 30 +++++++++ t/t4119-apply-config.sh | 4 +- 8 files changed, 131 insertions(+), 136 deletions(-) create mode 100644 t/t4109/patch1.patch create mode 100644 t/t4109/patch2.patch create mode 100644 t/t4109/patch3.patch create mode 100644 t/t4109/patch4.patch diff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh index df1fd6f86f..c851db8ca9 100755 --- a/t/t3800-mktag.sh +++ b/t/t3800-mktag.sh @@ -241,11 +241,11 @@ check_verify_failure 'disallow spaces in tag email' \ ############################################################ # 17. disallow missing tag timestamp -cat >tag.sig <tag.sig < +tagger T A Gger __ EOF diff --git a/t/t4015-diff-whitespace.sh b/t/t4015-diff-whitespace.sh index ca0302f41b..b7cc6b28e6 100755 --- a/t/t4015-diff-whitespace.sh +++ b/t/t4015-diff-whitespace.sh @@ -62,16 +62,16 @@ EOF git update-index x -cat << EOF > x +tr '_' ' ' << EOF > x whitespace at beginning whitespace change white space in the middle -whitespace at end +whitespace at end__ unchanged line CR at end EOF -tr 'Q' '\015' << EOF > expect +tr 'Q_' '\015 ' << EOF > expect diff --git a/x b/x index d99af23..8b32fb5 100644 --- a/x @@ -84,7 +84,7 @@ index d99af23..8b32fb5 100644 + whitespace at beginning +whitespace change +white space in the middle -+whitespace at end ++whitespace at end__ unchanged line -CR at endQ +CR at end diff --git a/t/t4109-apply-multifrag.sh b/t/t4109-apply-multifrag.sh index bd40a218cd..ff5fdf35f9 100755 --- a/t/t4109-apply-multifrag.sh +++ b/t/t4109-apply-multifrag.sh @@ -9,134 +9,10 @@ test_description='git apply test patches with multiple fragments. ' . ./test-lib.sh -# setup - -cat > patch1.patch <<\EOF -diff --git a/main.c b/main.c -new file mode 100644 ---- /dev/null -+++ b/main.c -@@ -0,0 +1,23 @@ -+#include -+ -+int func(int num); -+void print_int(int num); -+ -+int main() { -+ int i; -+ -+ for (i = 0; i < 10; i++) { -+ print_int(func(i)); -+ } -+ -+ return 0; -+} -+ -+int func(int num) { -+ return num * num; -+} -+ -+void print_int(int num) { -+ printf("%d", num); -+} -+ -EOF -cat > patch2.patch <<\EOF -diff --git a/main.c b/main.c ---- a/main.c -+++ b/main.c -@@ -1,7 +1,9 @@ -+#include - #include - - int func(int num); - void print_int(int num); -+void print_ln(); - - int main() { - int i; -@@ -10,6 +12,8 @@ - print_int(func(i)); - } - -+ print_ln(); -+ - return 0; - } - -@@ -21,3 +25,7 @@ - printf("%d", num); - } - -+void print_ln() { -+ printf("\n"); -+} -+ -EOF -cat > patch3.patch <<\EOF -diff --git a/main.c b/main.c ---- a/main.c -+++ b/main.c -@@ -1,9 +1,7 @@ --#include - #include - - int func(int num); - void print_int(int num); --void print_ln(); - - int main() { - int i; -@@ -12,8 +10,6 @@ - print_int(func(i)); - } - -- print_ln(); -- - return 0; - } - -@@ -25,7 +21,3 @@ - printf("%d", num); - } - --void print_ln() { -- printf("\n"); --} -- -EOF -cat > patch4.patch <<\EOF -diff --git a/main.c b/main.c ---- a/main.c -+++ b/main.c -@@ -1,13 +1,14 @@ - #include - - int func(int num); --void print_int(int num); -+int func2(int num); - - int main() { - int i; - - for (i = 0; i < 10; i++) { -- print_int(func(i)); -+ printf("%d", func(i)); -+ printf("%d", func3(i)); - } - - return 0; -@@ -17,7 +18,7 @@ - return num * num; - } - --void print_int(int num) { -- printf("%d", num); -+int func2(int num) { -+ return num * num * num; - } - -EOF +cp ../t4109/patch1.patch . +cp ../t4109/patch2.patch . +cp ../t4109/patch3.patch . +cp ../t4109/patch4.patch . test_expect_success "S = git apply (1)" \ 'git apply patch1.patch patch2.patch' diff --git a/t/t4109/patch1.patch b/t/t4109/patch1.patch new file mode 100644 index 0000000000..1d411fc3cc --- /dev/null +++ b/t/t4109/patch1.patch @@ -0,0 +1,28 @@ +diff --git a/main.c b/main.c +new file mode 100644 +--- /dev/null ++++ b/main.c +@@ -0,0 +1,23 @@ ++#include ++ ++int func(int num); ++void print_int(int num); ++ ++int main() { ++ int i; ++ ++ for (i = 0; i < 10; i++) { ++ print_int(func(i)); ++ } ++ ++ return 0; ++} ++ ++int func(int num) { ++ return num * num; ++} ++ ++void print_int(int num) { ++ printf("%d", num); ++} ++ diff --git a/t/t4109/patch2.patch b/t/t4109/patch2.patch new file mode 100644 index 0000000000..8c6b06d536 --- /dev/null +++ b/t/t4109/patch2.patch @@ -0,0 +1,30 @@ +diff --git a/main.c b/main.c +--- a/main.c ++++ b/main.c +@@ -1,7 +1,9 @@ ++#include + #include + + int func(int num); + void print_int(int num); ++void print_ln(); + + int main() { + int i; +@@ -10,6 +12,8 @@ + print_int(func(i)); + } + ++ print_ln(); ++ + return 0; + } + +@@ -21,3 +25,7 @@ + printf("%d", num); + } + ++void print_ln() { ++ printf("\n"); ++} ++ diff --git a/t/t4109/patch3.patch b/t/t4109/patch3.patch new file mode 100644 index 0000000000..d696c55a75 --- /dev/null +++ b/t/t4109/patch3.patch @@ -0,0 +1,31 @@ +cat > patch3.patch <<\EOF +diff --git a/main.c b/main.c +--- a/main.c ++++ b/main.c +@@ -1,9 +1,7 @@ +-#include + #include + + int func(int num); + void print_int(int num); +-void print_ln(); + + int main() { + int i; +@@ -12,8 +10,6 @@ + print_int(func(i)); + } + +- print_ln(); +- + return 0; + } + +@@ -25,7 +21,3 @@ + printf("%d", num); + } + +-void print_ln() { +- printf("\n"); +-} +- diff --git a/t/t4109/patch4.patch b/t/t4109/patch4.patch new file mode 100644 index 0000000000..4b085909b1 --- /dev/null +++ b/t/t4109/patch4.patch @@ -0,0 +1,30 @@ +diff --git a/main.c b/main.c +--- a/main.c ++++ b/main.c +@@ -1,13 +1,14 @@ + #include + + int func(int num); +-void print_int(int num); ++int func2(int num); + + int main() { + int i; + + for (i = 0; i < 10; i++) { +- print_int(func(i)); ++ printf("%d", func(i)); ++ printf("%d", func3(i)); + } + + return 0; +@@ -17,7 +18,7 @@ + return num * num; + } + +-void print_int(int num) { +- printf("%d", num); ++int func2(int num) { ++ return num * num * num; + } + diff --git a/t/t4119-apply-config.sh b/t/t4119-apply-config.sh index b540f7295a..3c73a783a7 100755 --- a/t/t4119-apply-config.sh +++ b/t/t4119-apply-config.sh @@ -19,12 +19,12 @@ test_expect_success setup ' ' # Also handcraft GNU diff output; note this has trailing whitespace. -cat >gpatch.file <<\EOF && +tr '_' ' ' >gpatch.file <<\EOF && --- file1 2007-02-21 01:04:24.000000000 -0800 +++ file1+ 2007-02-21 01:07:44.000000000 -0800 @@ -1 +1 @@ -A -+B ++B_ EOF sed -e 's|file1|sub/&|' gpatch.file >gpatch-sub.file && From 44d86e910d61dab4f059d86705599bbb2747b10f Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 14 Jun 2008 03:27:21 -0400 Subject: [PATCH 3/5] avoid whitespace on empty line in automatic usage message When outputting a usage message with a blank line in the header, we would output a line with four spaces. Make this truly a blank line. This helps us remove trailing whitespace from a test vector. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- parse-options.c | 8 ++++++-- t/t1502-rev-parse-parseopt.sh | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/parse-options.c b/parse-options.c index acf3fe3a1a..8071711e5d 100644 --- a/parse-options.c +++ b/parse-options.c @@ -312,8 +312,12 @@ void usage_with_options_internal(const char * const *usagestr, fprintf(stderr, "usage: %s\n", *usagestr++); while (*usagestr && **usagestr) fprintf(stderr, " or: %s\n", *usagestr++); - while (*usagestr) - fprintf(stderr, " %s\n", *usagestr++); + while (*usagestr) { + fprintf(stderr, "%s%s\n", + **usagestr ? " " : "", + *usagestr); + usagestr++; + } if (opts->type != OPTION_GROUP) fputc('\n', stderr); diff --git a/t/t1502-rev-parse-parseopt.sh b/t/t1502-rev-parse-parseopt.sh index d24a47d114..7cdd70a188 100755 --- a/t/t1502-rev-parse-parseopt.sh +++ b/t/t1502-rev-parse-parseopt.sh @@ -5,7 +5,7 @@ test_description='test git rev-parse --parseopt' cat > expect.err <... - + some-command does foo and bar! -h, --help show the help From 4d9b53591f64a11da0af4c2b8f11fd4730ce52dd Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 14 Jun 2008 03:27:45 -0400 Subject: [PATCH 4/5] avoid trailing whitespace in zero-change diffstat lines In some cases, we produce a diffstat line even though no lines have changed (e.g., because of an exact rename). In this case, there is no +/- "graph" after the number of changed lines. However, we output the space separator unconditionally, meaning that these lines contained a trailing space character. This isn't a huge problem, but in cleaning up the output we are able to eliminate some trailing whitespace from a test vector. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- diff.c | 3 ++- t/t4016-diff-quote.sh | 14 +++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/diff.c b/diff.c index 62fdc5492b..f77f9e9447 100644 --- a/diff.c +++ b/diff.c @@ -922,7 +922,8 @@ static void show_stats(struct diffstat_t* data, struct diff_options *options) total = add + del; } show_name(options->file, prefix, name, len, reset, set); - fprintf(options->file, "%5d ", added + deleted); + fprintf(options->file, "%5d%s", added + deleted, + added + deleted ? " " : ""); show_graph(options->file, '+', add, add_c, reset); show_graph(options->file, '-', del, del_c, reset); fprintf(options->file, "\n"); diff --git a/t/t4016-diff-quote.sh b/t/t4016-diff-quote.sh index 0950250c9b..f07035ab7e 100755 --- a/t/t4016-diff-quote.sh +++ b/t/t4016-diff-quote.sh @@ -53,13 +53,13 @@ test_expect_success 'git diff --summary -M HEAD' ' ' cat >expect <<\EOF - pathname.1 => "Rpathname\twith HT.0" | 0 - pathname.3 => "Rpathname\nwith LF.0" | 0 - "pathname\twith HT.3" => "Rpathname\nwith LF.1" | 0 - pathname.2 => Rpathname with SP.0 | 0 - "pathname\twith HT.2" => Rpathname with SP.1 | 0 - pathname.0 => Rpathname.0 | 0 - "pathname\twith HT.0" => Rpathname.1 | 0 + pathname.1 => "Rpathname\twith HT.0" | 0 + pathname.3 => "Rpathname\nwith LF.0" | 0 + "pathname\twith HT.3" => "Rpathname\nwith LF.1" | 0 + pathname.2 => Rpathname with SP.0 | 0 + "pathname\twith HT.2" => Rpathname with SP.1 | 0 + pathname.0 => Rpathname.0 | 0 + "pathname\twith HT.0" => Rpathname.1 | 0 7 files changed, 0 insertions(+), 0 deletions(-) EOF test_expect_success 'git diff --stat -M HEAD' ' From 9197240de82cb5bc45897860e0e93dc7c0b1a08f Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sat, 14 Jun 2008 03:28:07 -0400 Subject: [PATCH 5/5] enable whitespace checking of test scripts Now that all of the policy violations have been cleaned up, we can turn this on and start checking incoming patches. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- t/.gitattributes | 1 - 1 file changed, 1 deletion(-) diff --git a/t/.gitattributes b/t/.gitattributes index ab6edbf19e..1b97c5465b 100644 --- a/t/.gitattributes +++ b/t/.gitattributes @@ -1,2 +1 @@ -t[0-9][0-9][0-9][0-9]-*.sh -whitespace t[0-9][0-9][0-9][0-9]/* -whitespace