| #!/bin/sh | 
 |  | 
 | test_description='git clean -i basic tests' | 
 |  | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup' ' | 
 |  | 
 | 	mkdir -p src && | 
 | 	touch src/part1.c Makefile && | 
 | 	echo build >.gitignore && | 
 | 	echo \*.o >>.gitignore && | 
 | 	git add . && | 
 | 	git commit -m setup && | 
 | 	touch src/part2.c README && | 
 | 	git add . | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -i (c: clean hotkey)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	echo c | git clean -i && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test ! -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -i (cl: clean prefix)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	echo cl | git clean -i && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test ! -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -i (quit)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	echo quit | git clean -i && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -i (Ctrl+D)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	echo "\04" | git clean -i && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (filter all)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo f; echo "*"; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (filter patterns)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo f; echo "part3.* *.out"; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test ! -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test ! -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (filter patterns 2)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo f; echo "* !*.out"; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - all)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo "*"; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test ! -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test ! -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - none)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - number)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo 3; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - number 2)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo 2 3; echo 5; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test ! -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - number 3)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo 3,4 5; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - filenames)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out foo.txt bar.txt baz.txt && | 
 | 	(echo s; echo a.out fo ba bar; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test ! -f a.out && | 
 | 	test ! -f foo.txt && | 
 | 	test ! -f bar.txt && | 
 | 	test -f baz.txt && | 
 | 	rm baz.txt | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - range)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo 1,3-4; echo 2; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test ! -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test ! -f docs/manual.txt && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (select - range 2)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo 4- 1; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test ! -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (inverse select)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo s; echo "*"; echo -5- 1 -2; echo; echo c) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (ask)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo a; echo Y; echo y; echo no; echo yes; echo bad; echo) | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test ! -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id (ask - Ctrl+D)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(echo a; echo Y; echo no; echo yes; echo "\04") | \ | 
 | 	git clean -id && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id with prefix and path (filter)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(cd build/ && \ | 
 | 	 (echo f; echo "docs"; echo "*.h"; echo ; echo c) | \ | 
 | 	 git clean -id ..) && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id with prefix and path (select by name)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(cd build/ && \ | 
 | 	 (echo s; echo "../docs/"; echo "../src/part3.c"; \ | 
 | 	  echo "../src/part4.c";  echo; echo c) | \ | 
 | 	 git clean -id ..) && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test -f a.out && | 
 | 	test ! -f docs/manual.txt && | 
 | 	test ! -f src/part3.c && | 
 | 	test -f src/part3.h && | 
 | 	test ! -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_expect_success 'git clean -id with prefix and path (ask)' ' | 
 |  | 
 | 	mkdir -p build docs && | 
 | 	touch a.out src/part3.c src/part3.h src/part4.c src/part4.h \ | 
 | 	docs/manual.txt obj.o build/lib.so && | 
 | 	(cd build/ && \ | 
 | 	 (echo a; echo Y; echo y; echo no; echo yes; echo bad; echo) | \ | 
 | 	 git clean -id ..) && | 
 | 	test -f Makefile && | 
 | 	test -f README && | 
 | 	test -f src/part1.c && | 
 | 	test -f src/part2.c && | 
 | 	test ! -f a.out && | 
 | 	test ! -f docs/manual.txt && | 
 | 	test -f src/part3.c && | 
 | 	test ! -f src/part3.h && | 
 | 	test -f src/part4.c && | 
 | 	test -f src/part4.h && | 
 | 	test -f obj.o && | 
 | 	test -f build/lib.so | 
 |  | 
 | ' | 
 |  | 
 | test_done |