tests: fix broken &&-chains in `$(...)` command substitutions
The top-level &&-chain checker built into t/test-lib.sh causes tests to
magically exit with code 117 if the &&-chain is broken. However, it has
the shortcoming that the magic does not work within `{...}` groups,
`(...)` subshells, `$(...)` substitutions, or within bodies of compound
statements, such as `if`, `for`, `while`, `case`, etc. `chainlint.sed`
partly fills in the gap by catching broken &&-chains in `(...)`
subshells, but bugs can still lurk behind broken &&-chains in the other
cases.
Fix broken &&-chains in `$(...)` command substitutions in order to
reduce the number of possible lurking bugs.
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Reviewed-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									74d2f5695d
								
							
						
					
					
						commit
						c576868eaf
					
				|  | @ -1445,7 +1445,7 @@ test_expect_success 'subtree descendant check' ' | ||||||
| 	) && | 	) && | ||||||
| 	test_create_commit "$test_count" folder_subtree/0 && | 	test_create_commit "$test_count" folder_subtree/0 && | ||||||
| 	test_create_commit "$test_count" folder_subtree/b && | 	test_create_commit "$test_count" folder_subtree/b && | ||||||
| 	cherry=$(cd "$test_count"; git rev-parse HEAD) && | 	cherry=$(cd "$test_count" && git rev-parse HEAD) && | ||||||
| 	( | 	( | ||||||
| 		cd "$test_count" && | 		cd "$test_count" && | ||||||
| 		git checkout branch | 		git checkout branch | ||||||
|  |  | ||||||
|  | @ -48,7 +48,7 @@ test_expect_success !MINGW 'a constipated git dies with SIGPIPE' ' | ||||||
| ' | ' | ||||||
|  |  | ||||||
| test_expect_success !MINGW 'a constipated git dies with SIGPIPE even if parent ignores it' ' | test_expect_success !MINGW 'a constipated git dies with SIGPIPE even if parent ignores it' ' | ||||||
| 	OUT=$( ((trap "" PIPE; large_git; echo $? 1>&3) | :) 3>&1 ) && | 	OUT=$( ((trap "" PIPE && large_git; echo $? 1>&3) | :) 3>&1 ) && | ||||||
| 	test_match_signal 13 "$OUT" | 	test_match_signal 13 "$OUT" | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ -216,7 +216,7 @@ test_expect_success SYMLINKS 'real path works on symlinks' ' | ||||||
| 	mkdir second && | 	mkdir second && | ||||||
| 	ln -s ../first second/other && | 	ln -s ../first second/other && | ||||||
| 	mkdir third && | 	mkdir third && | ||||||
| 	dir="$(cd .git; pwd -P)" && | 	dir="$(cd .git && pwd -P)" && | ||||||
| 	dir2=third/../second/other/.git && | 	dir2=third/../second/other/.git && | ||||||
| 	test "$dir" = "$(test-tool path-utils real_path $dir2)" && | 	test "$dir" = "$(test-tool path-utils real_path $dir2)" && | ||||||
| 	file="$dir"/index && | 	file="$dir"/index && | ||||||
|  | @ -224,7 +224,7 @@ test_expect_success SYMLINKS 'real path works on symlinks' ' | ||||||
| 	basename=blub && | 	basename=blub && | ||||||
| 	test "$dir/$basename" = "$(cd .git && test-tool path-utils real_path "$basename")" && | 	test "$dir/$basename" = "$(cd .git && test-tool path-utils real_path "$basename")" && | ||||||
| 	ln -s ../first/file .git/syml && | 	ln -s ../first/file .git/syml && | ||||||
| 	sym="$(cd first; pwd -P)"/file && | 	sym="$(cd first && pwd -P)"/file && | ||||||
| 	test "$sym" = "$(test-tool path-utils real_path "$dir2/syml")" | 	test "$sym" = "$(test-tool path-utils real_path "$dir2/syml")" | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ -211,14 +211,14 @@ done | ||||||
| test_expect_success "--batch-check for a non-existent named object" ' | test_expect_success "--batch-check for a non-existent named object" ' | ||||||
|     test "foobar42 missing |     test "foobar42 missing | ||||||
| foobar84 missing" = \ | foobar84 missing" = \ | ||||||
|     "$( ( echo foobar42; echo_without_newline foobar84; ) | git cat-file --batch-check)" |     "$( ( echo foobar42 && echo_without_newline foobar84 ) | git cat-file --batch-check)" | ||||||
| ' | ' | ||||||
|  |  | ||||||
| test_expect_success "--batch-check for a non-existent hash" ' | test_expect_success "--batch-check for a non-existent hash" ' | ||||||
|     test "0000000000000000000000000000000000000042 missing |     test "0000000000000000000000000000000000000042 missing | ||||||
| 0000000000000000000000000000000000000084 missing" = \ | 0000000000000000000000000000000000000084 missing" = \ | ||||||
|     "$( ( echo 0000000000000000000000000000000000000042; |     "$( ( echo 0000000000000000000000000000000000000042 && | ||||||
| 	 echo_without_newline 0000000000000000000000000000000000000084; ) | | 	 echo_without_newline 0000000000000000000000000000000000000084 ) | | ||||||
|        git cat-file --batch-check)" |        git cat-file --batch-check)" | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | @ -226,8 +226,8 @@ test_expect_success "--batch for an existent and a non-existent hash" ' | ||||||
|     test "$tag_sha1 tag $tag_size |     test "$tag_sha1 tag $tag_size | ||||||
| $tag_content | $tag_content | ||||||
| 0000000000000000000000000000000000000000 missing" = \ | 0000000000000000000000000000000000000000 missing" = \ | ||||||
|     "$( ( echo $tag_sha1; |     "$( ( echo $tag_sha1 && | ||||||
| 	 echo_without_newline 0000000000000000000000000000000000000000; ) | | 	 echo_without_newline 0000000000000000000000000000000000000000 ) | | ||||||
|        git cat-file --batch)" |        git cat-file --batch)" | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | @ -265,7 +265,7 @@ test_expect_success 'choking "git rm" should not let it die with cruft (induce S | ||||||
|  |  | ||||||
| test_expect_success !MINGW 'choking "git rm" should not let it die with cruft (induce and check SIGPIPE)' ' | test_expect_success !MINGW 'choking "git rm" should not let it die with cruft (induce and check SIGPIPE)' ' | ||||||
| 	choke_git_rm_setup && | 	choke_git_rm_setup && | ||||||
| 	OUT=$( ((trap "" PIPE; git rm -n "some-file-*"; echo $? 1>&3) | :) 3>&1 ) && | 	OUT=$( ((trap "" PIPE && git rm -n "some-file-*"; echo $? 1>&3) | :) 3>&1 ) && | ||||||
| 	test_match_signal 13 "$OUT" && | 	test_match_signal 13 "$OUT" && | ||||||
| 	test_path_is_missing .git/index.lock | 	test_path_is_missing .git/index.lock | ||||||
| ' | ' | ||||||
|  |  | ||||||
|  | @ -137,7 +137,7 @@ test_expect_success 'setup deeper work tree' ' | ||||||
|  |  | ||||||
| test_expect_success 'add a directory outside the work tree' '( | test_expect_success 'add a directory outside the work tree' '( | ||||||
| 	cd tester && | 	cd tester && | ||||||
| 	d1="$(cd .. ; pwd)" && | 	d1="$(cd .. && pwd)" && | ||||||
| 	test_must_fail git add "$d1" | 	test_must_fail git add "$d1" | ||||||
| )' | )' | ||||||
|  |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Eric Sunshine
						Eric Sunshine