| #!/bin/sh | 
 |  | 
 | test_description='git add --all' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success setup ' | 
 | 	( | 
 | 		echo .gitignore | 
 | 		echo will-remove | 
 | 	) >expect && | 
 | 	( | 
 | 		echo actual | 
 | 		echo expect | 
 | 		echo ignored | 
 | 	) >.gitignore && | 
 | 	git --literal-pathspecs add --all && | 
 | 	>will-remove && | 
 | 	git add --all && | 
 | 	test_tick && | 
 | 	git commit -m initial && | 
 | 	git ls-files >actual && | 
 | 	test_cmp expect actual | 
 | ' | 
 |  | 
 | test_expect_success 'git add --all' ' | 
 | 	( | 
 | 		echo .gitignore | 
 | 		echo not-ignored | 
 | 		echo "M	.gitignore" | 
 | 		echo "A	not-ignored" | 
 | 		echo "D	will-remove" | 
 | 	) >expect && | 
 | 	>ignored && | 
 | 	>not-ignored && | 
 | 	echo modification >>.gitignore && | 
 | 	rm -f will-remove && | 
 | 	git add --all && | 
 | 	git update-index --refresh && | 
 | 	git ls-files >actual && | 
 | 	git diff-index --name-status --cached HEAD >>actual && | 
 | 	test_cmp expect actual | 
 | ' | 
 |  | 
 | test_expect_success 'Just "git add" is a no-op' ' | 
 | 	git reset --hard && | 
 | 	echo >will-remove && | 
 | 	>will-not-be-added && | 
 | 	git add && | 
 | 	git diff-index --name-status --cached HEAD >actual && | 
 | 	>expect && | 
 | 	test_cmp expect actual | 
 | ' | 
 |  | 
 | test_done |