| #!/bin/sh | 
 |  | 
 | test_description='ls-files tests with relative paths | 
 |  | 
 | This test runs git ls-files with various relative path arguments. | 
 | ' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | new_line=' | 
 | ' | 
 | sq=\' | 
 |  | 
 | test_expect_success 'prepare' ' | 
 | 	: >never-mind-me && | 
 | 	git add never-mind-me && | 
 | 	mkdir top && | 
 | 	( | 
 | 		cd top && | 
 | 		mkdir sub && | 
 | 		x="x xa xbc xdef xghij xklmno" && | 
 | 		y=$(echo "$x" | tr x y) && | 
 | 		touch $x && | 
 | 		touch $y && | 
 | 		cd sub && | 
 | 		git add ../x* | 
 | 	) | 
 | ' | 
 |  | 
 | test_expect_success 'ls-files with mixed levels' ' | 
 | 	( | 
 | 		cd top/sub && | 
 | 		cat >expect <<-EOF && | 
 | 		../../never-mind-me | 
 | 		../x | 
 | 		EOF | 
 | 		git ls-files $(cat expect) >actual && | 
 | 		test_cmp expect actual | 
 | 	) | 
 | ' | 
 |  | 
 | test_expect_success 'ls-files -c' ' | 
 | 	( | 
 | 		cd top/sub && | 
 | 		for f in ../y* | 
 | 		do | 
 | 			echo "error: pathspec $sq$f$sq did not match any file(s) known to git." | 
 | 		done >expect.err && | 
 | 		echo "Did you forget to ${sq}git add${sq}?" >>expect.err && | 
 | 		ls ../x* >expect.out && | 
 | 		test_must_fail git ls-files -c --error-unmatch ../[xy]* >actual.out 2>actual.err && | 
 | 		test_cmp expect.out actual.out && | 
 | 		test_cmp expect.err actual.err | 
 | 	) | 
 | ' | 
 |  | 
 | test_expect_success 'ls-files -o' ' | 
 | 	( | 
 | 		cd top/sub && | 
 | 		for f in ../x* | 
 | 		do | 
 | 			echo "error: pathspec $sq$f$sq did not match any file(s) known to git." | 
 | 		done >expect.err && | 
 | 		echo "Did you forget to ${sq}git add${sq}?" >>expect.err && | 
 | 		ls ../y* >expect.out && | 
 | 		test_must_fail git ls-files -o --error-unmatch ../[xy]* >actual.out 2>actual.err && | 
 | 		test_cmp expect.out actual.out && | 
 | 		test_cmp expect.err actual.err | 
 | 	) | 
 | ' | 
 |  | 
 | test_done |