2007-05-06 21:50:54 +02:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
|
|
|
# Copyright (c) 2007 Michael Spang
|
|
|
|
#
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_description='git clean basic tests'
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
. ./test-lib.sh
|
|
|
|
|
2007-11-02 01:32:04 +01:00
|
|
|
git config clean.requireForce no
|
|
|
|
|
2007-05-06 21:50:54 +02:00
|
|
|
test_expect_success 'setup' '
|
|
|
|
|
|
|
|
mkdir -p src &&
|
|
|
|
touch src/part1.c Makefile &&
|
|
|
|
echo build >.gitignore &&
|
|
|
|
echo \*.o >>.gitignore &&
|
2007-07-03 07:52:14 +02:00
|
|
|
git add . &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git commit -m setup &&
|
2007-05-06 21:50:54 +02:00
|
|
|
touch src/part2.c README &&
|
2007-07-03 07:52:14 +02:00
|
|
|
git add .
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
'
|
|
|
|
|
2009-08-20 15:47:01 +02:00
|
|
|
test_expect_success 'git clean with skip-worktree .gitignore' '
|
|
|
|
git update-index --skip-worktree .gitignore &&
|
|
|
|
rm .gitignore &&
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
|
|
|
git clean &&
|
|
|
|
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 docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so &&
|
|
|
|
git update-index --no-skip-worktree .gitignore &&
|
|
|
|
git checkout .gitignore
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean' '
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean src/' '
|
2007-11-05 05:28:12 +01:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean src/ &&
|
2007-11-05 05:28:12 +01:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean src/ src/' '
|
2007-11-05 05:28:12 +01:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean src/ src/ &&
|
2007-11-05 05:28:12 +01:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean with prefix' '
|
2007-11-05 05:28:12 +01:00
|
|
|
|
2008-04-14 01:49:38 +02:00
|
|
|
mkdir -p build docs src/test &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&
|
2008-09-03 10:59:33 +02:00
|
|
|
(cd src/ && git clean) &&
|
2007-11-05 05:28:12 +01:00
|
|
|
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 &&
|
2008-04-14 01:49:38 +02:00
|
|
|
test -f src/test/1.c &&
|
2007-11-05 05:28:12 +01:00
|
|
|
test -f docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
2008-03-08 06:56:56 +01:00
|
|
|
|
2011-02-23 00:42:21 +01:00
|
|
|
test_expect_success C_LOCALE_OUTPUT 'git clean with relative prefix' '
|
2008-03-08 06:56:56 +01:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
|
|
|
would_clean=$(
|
|
|
|
cd docs &&
|
|
|
|
git clean -n ../src |
|
|
|
|
sed -n -e "s|^Would remove ||p"
|
|
|
|
) &&
|
2015-03-20 11:09:00 +01:00
|
|
|
verbose test "$would_clean" = ../src/part3.c
|
2008-03-08 06:56:56 +01:00
|
|
|
'
|
|
|
|
|
2011-02-23 00:42:21 +01:00
|
|
|
test_expect_success C_LOCALE_OUTPUT 'git clean with absolute path' '
|
2008-03-08 06:56:56 +01:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
|
|
|
would_clean=$(
|
|
|
|
cd docs &&
|
2008-05-04 07:37:59 +02:00
|
|
|
git clean -n "$(pwd)/../src" |
|
2008-03-08 06:56:56 +01:00
|
|
|
sed -n -e "s|^Would remove ||p"
|
|
|
|
) &&
|
2015-03-20 11:09:00 +01:00
|
|
|
verbose test "$would_clean" = ../src/part3.c
|
2008-03-08 06:56:56 +01:00
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean with out of work tree relative path' '
|
2008-03-08 06:56:56 +01:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
|
|
|
(
|
|
|
|
cd docs &&
|
|
|
|
test_must_fail git clean -n ../..
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean with out of work tree absolute path' '
|
2008-03-08 06:56:56 +01:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
|
|
|
dd=$(cd .. && pwd) &&
|
|
|
|
(
|
|
|
|
cd docs &&
|
|
|
|
test_must_fail git clean -n $dd
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -d with prefix and path' '
|
2007-11-05 05:28:12 +01:00
|
|
|
|
|
|
|
mkdir -p build docs src/feature &&
|
|
|
|
touch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
(cd src/ && git clean -d feature/) &&
|
2007-11-05 05:28:12 +01:00
|
|
|
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/feature/file.c &&
|
|
|
|
test -f docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2010-11-25 09:03:39 +01:00
|
|
|
test_expect_success SYMLINKS 'git clean symbolic link' '
|
2007-11-05 05:28:12 +01:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2010-10-31 08:30:58 +01:00
|
|
|
ln -s docs/manual.txt src/part4.c &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean &&
|
2007-11-05 05:28:12 +01:00
|
|
|
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/part4.c &&
|
|
|
|
test -f docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean with wildcard' '
|
2007-12-06 04:28:06 +01:00
|
|
|
|
|
|
|
touch a.clean b.clean other.c &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean "*.clean" &&
|
2007-12-06 04:28:06 +01:00
|
|
|
test -f Makefile &&
|
|
|
|
test -f README &&
|
|
|
|
test -f src/part1.c &&
|
|
|
|
test -f src/part2.c &&
|
|
|
|
test ! -f a.clean &&
|
|
|
|
test ! -f b.clean &&
|
|
|
|
test -f other.c
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -n' '
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -n &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -d' '
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -d &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 ! -d docs &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -d src/ examples/' '
|
2007-11-05 05:28:12 +01:00
|
|
|
|
|
|
|
mkdir -p build docs examples &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -d src/ examples/ &&
|
2007-11-05 05:28:12 +01:00
|
|
|
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 examples/1.c &&
|
|
|
|
test -f docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -x' '
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -x &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test ! -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -d -x' '
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -d -x &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 ! -d docs &&
|
|
|
|
test ! -f obj.o &&
|
|
|
|
test ! -d build
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2013-04-15 21:10:05 +02:00
|
|
|
test_expect_success 'git clean -d -x with ignored tracked directory' '
|
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
|
|
|
git clean -d -x -e src &&
|
|
|
|
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 ! -d docs &&
|
|
|
|
test ! -f obj.o &&
|
|
|
|
test ! -d build
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -X' '
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -X &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test ! -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
test_expect_success 'git clean -d -X' '
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -d -X &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test ! -f obj.o &&
|
|
|
|
test ! -d build
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2013-04-15 21:10:05 +02:00
|
|
|
test_expect_success 'git clean -d -X with ignored tracked directory' '
|
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
|
|
|
git clean -d -X -e src &&
|
|
|
|
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 docs/manual.txt &&
|
|
|
|
test ! -f obj.o &&
|
|
|
|
test ! -d build
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2007-11-02 01:32:04 +01:00
|
|
|
test_expect_success 'clean.requireForce defaults to true' '
|
|
|
|
|
|
|
|
git config --unset clean.requireForce &&
|
2008-07-12 17:47:52 +02:00
|
|
|
test_must_fail git clean
|
2007-11-02 01:32:04 +01:00
|
|
|
|
|
|
|
'
|
|
|
|
|
2007-05-06 21:50:54 +02:00
|
|
|
test_expect_success 'clean.requireForce' '
|
|
|
|
|
2007-07-03 07:52:14 +02:00
|
|
|
git config clean.requireForce true &&
|
2008-07-12 17:47:52 +02:00
|
|
|
test_must_fail git clean
|
2007-05-06 21:50:54 +02:00
|
|
|
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'clean.requireForce and -n' '
|
|
|
|
|
|
|
|
mkdir -p build docs &&
|
|
|
|
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -n &&
|
2007-05-06 21:50:54 +02:00
|
|
|
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 docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'clean.requireForce and -f' '
|
|
|
|
|
2008-09-03 10:59:33 +02:00
|
|
|
git clean -f &&
|
2007-05-06 21:50:54 +02:00
|
|
|
test -f README &&
|
|
|
|
test -f src/part1.c &&
|
|
|
|
test -f src/part2.c &&
|
|
|
|
test ! -f a.out &&
|
|
|
|
test ! -f src/part3.c &&
|
|
|
|
test -f docs/manual.txt &&
|
|
|
|
test -f obj.o &&
|
|
|
|
test -f build/lib.so
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2011-02-23 00:42:21 +01:00
|
|
|
test_expect_success C_LOCALE_OUTPUT 'core.excludesfile' '
|
2007-11-14 10:54:43 +01:00
|
|
|
|
|
|
|
echo excludes >excludes &&
|
|
|
|
echo included >included &&
|
|
|
|
git config core.excludesfile excludes &&
|
|
|
|
output=$(git clean -n excludes included 2>&1) &&
|
|
|
|
expr "$output" : ".*included" >/dev/null &&
|
|
|
|
! expr "$output" : ".*excludes" >/dev/null
|
|
|
|
|
|
|
|
'
|
|
|
|
|
2010-08-07 00:09:09 +02:00
|
|
|
test_expect_success SANITY 'removal failure' '
|
2008-02-21 02:44:46 +01:00
|
|
|
|
|
|
|
mkdir foo &&
|
|
|
|
touch foo/bar &&
|
2014-07-02 20:44:30 +02:00
|
|
|
test_when_finished "chmod 755 foo" &&
|
2009-03-11 17:58:32 +01:00
|
|
|
(exec <foo/bar &&
|
|
|
|
chmod 0 foo &&
|
2014-07-02 20:44:30 +02:00
|
|
|
test_must_fail git clean -f -d)
|
2008-02-21 02:44:46 +01:00
|
|
|
'
|
|
|
|
|
2009-07-01 00:33:45 +02:00
|
|
|
test_expect_success 'nested git work tree' '
|
2012-03-15 09:04:12 +01:00
|
|
|
rm -fr foo bar baz &&
|
|
|
|
mkdir -p foo bar baz/boo &&
|
2009-07-01 00:33:45 +02:00
|
|
|
(
|
|
|
|
cd foo &&
|
|
|
|
git init &&
|
|
|
|
>hello.world
|
|
|
|
git add . &&
|
|
|
|
git commit -a -m nested
|
|
|
|
) &&
|
|
|
|
(
|
|
|
|
cd bar &&
|
|
|
|
>goodbye.people
|
|
|
|
) &&
|
2012-03-15 09:04:12 +01:00
|
|
|
(
|
|
|
|
cd baz/boo &&
|
|
|
|
git init &&
|
|
|
|
>deeper.world
|
|
|
|
git add . &&
|
|
|
|
git commit -a -m deeply.nested
|
|
|
|
) &&
|
2009-07-01 00:33:45 +02:00
|
|
|
git clean -f -d &&
|
|
|
|
test -f foo/.git/index &&
|
|
|
|
test -f foo/hello.world &&
|
2012-03-15 09:04:12 +01:00
|
|
|
test -f baz/boo/.git/index &&
|
|
|
|
test -f baz/boo/deeper.world &&
|
2009-07-01 00:33:45 +02:00
|
|
|
! test -d bar
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'force removal of nested git work tree' '
|
2012-03-15 09:04:12 +01:00
|
|
|
rm -fr foo bar baz &&
|
|
|
|
mkdir -p foo bar baz/boo &&
|
2009-07-01 00:33:45 +02:00
|
|
|
(
|
|
|
|
cd foo &&
|
|
|
|
git init &&
|
|
|
|
>hello.world
|
|
|
|
git add . &&
|
|
|
|
git commit -a -m nested
|
|
|
|
) &&
|
|
|
|
(
|
|
|
|
cd bar &&
|
|
|
|
>goodbye.people
|
|
|
|
) &&
|
2012-03-15 09:04:12 +01:00
|
|
|
(
|
|
|
|
cd baz/boo &&
|
|
|
|
git init &&
|
|
|
|
>deeper.world
|
|
|
|
git add . &&
|
|
|
|
git commit -a -m deeply.nested
|
|
|
|
) &&
|
2009-07-01 00:33:45 +02:00
|
|
|
git clean -f -f -d &&
|
|
|
|
! test -d foo &&
|
2012-03-15 09:04:12 +01:00
|
|
|
! test -d bar &&
|
|
|
|
! test -d baz
|
2009-07-01 00:33:45 +02:00
|
|
|
'
|
|
|
|
|
2010-07-20 21:36:21 +02:00
|
|
|
test_expect_success 'git clean -e' '
|
|
|
|
rm -fr repo &&
|
|
|
|
mkdir repo &&
|
|
|
|
(
|
|
|
|
cd repo &&
|
|
|
|
git init &&
|
2010-09-15 22:58:22 +02:00
|
|
|
touch known 1 2 3 &&
|
2010-07-20 21:36:21 +02:00
|
|
|
git add known &&
|
|
|
|
git clean -f -e 1 -e 2 &&
|
|
|
|
test -e 1 &&
|
|
|
|
test -e 2 &&
|
|
|
|
! (test -e 3) &&
|
|
|
|
test -e known
|
|
|
|
)
|
|
|
|
'
|
|
|
|
|
2011-04-01 10:29:16 +02:00
|
|
|
test_expect_success SANITY 'git clean -d with an unreadable empty directory' '
|
|
|
|
mkdir foo &&
|
|
|
|
chmod a= foo &&
|
|
|
|
git clean -dfx foo &&
|
|
|
|
! test -d foo
|
|
|
|
'
|
|
|
|
|
2014-03-10 21:37:30 +01:00
|
|
|
test_expect_success 'git clean -d respects pathspecs (dir is prefix of pathspec)' '
|
|
|
|
mkdir -p foo &&
|
|
|
|
mkdir -p foobar &&
|
|
|
|
git clean -df foobar &&
|
|
|
|
test_path_is_dir foo &&
|
|
|
|
test_path_is_missing foobar
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'git clean -d respects pathspecs (pathspec is prefix of dir)' '
|
|
|
|
mkdir -p foo &&
|
|
|
|
mkdir -p foobar &&
|
|
|
|
git clean -df foo &&
|
|
|
|
test_path_is_missing foo &&
|
|
|
|
test_path_is_dir foobar
|
|
|
|
'
|
|
|
|
|
2007-05-06 21:50:54 +02:00
|
|
|
test_done
|