| #!/bin/sh |
| |
| test_description='git clean -i basic tests' |
| |
| . ./test-lib.sh |
| . "$TEST_DIRECTORY"/lib-terminal.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_expect_success TTY 'git clean -i paints the header in HEADER color' ' |
| >a.out && |
| echo q | |
| test_terminal git clean -i | |
| test_decode_color | |
| head -n 1 >header && |
| # not i18ngrep |
| grep "^<BOLD>" header |
| ' |
| |
| test_done |