git/t/t7301-clean-interactive.sh
Junio C Hamano 512f41cfac clean.c: use designated initializer
This is another test balloon to see if we get complaints from people
whose compilers do not support designated initializer for arrays.

The use of the feature is not all that interesting for cases like
the one this patch touches, where the initialized elements of the
array is dense, but it would be nice if we can use the feature to
initialize an array that has elements initialized to interesting
values only sparsely.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-07-18 12:45:20 -07:00

486 lines
11 KiB
Bash
Executable file

#!/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_expect_success 'git clean -i paints the header in HEADER color' '
>a.out &&
echo q |
git -c color.ui=always clean -i |
test_decode_color |
head -n 1 >header &&
# not i18ngrep
grep "^<BOLD>" header
'
test_done