summaryrefslogtreecommitdiff
path: root/t/t7300-clean.sh
diff options
context:
space:
mode:
Diffstat (limited to 't/t7300-clean.sh')
-rwxr-xr-xt/t7300-clean.sh136
1 files changed, 97 insertions, 39 deletions
diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh
index 2b51c0d7d8..7d8ed68bef 100755
--- a/t/t7300-clean.sh
+++ b/t/t7300-clean.sh
@@ -3,7 +3,7 @@
# Copyright (c) 2007 Michael Spang
#
-test_description='git-clean basic tests'
+test_description='git clean basic tests'
. ./test-lib.sh
@@ -16,17 +16,36 @@ test_expect_success 'setup' '
echo build >.gitignore &&
echo \*.o >>.gitignore &&
git add . &&
- git-commit -m setup &&
+ git commit -m setup &&
touch src/part2.c README &&
git add .
'
-test_expect_success 'git-clean' '
+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
+'
+
+test_expect_success 'git clean' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean &&
+ git clean &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -39,11 +58,11 @@ test_expect_success 'git-clean' '
'
-test_expect_success 'git-clean src/' '
+test_expect_success 'git clean src/' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean src/ &&
+ git clean src/ &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -56,11 +75,11 @@ test_expect_success 'git-clean src/' '
'
-test_expect_success 'git-clean src/ src/' '
+test_expect_success 'git clean src/ src/' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean src/ src/ &&
+ git clean src/ src/ &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -73,11 +92,11 @@ test_expect_success 'git-clean src/ src/' '
'
-test_expect_success 'git-clean with prefix' '
+test_expect_success 'git clean with prefix' '
mkdir -p build docs src/test &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so src/test/1.c &&
- (cd src/ && git-clean) &&
+ (cd src/ && git clean) &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -91,7 +110,7 @@ test_expect_success 'git-clean with prefix' '
'
-test_expect_success 'git-clean with relative prefix' '
+test_expect_success 'git clean with relative prefix' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@@ -106,7 +125,7 @@ test_expect_success 'git-clean with relative prefix' '
}
'
-test_expect_success 'git-clean with absolute path' '
+test_expect_success 'git clean with absolute path' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@@ -121,7 +140,7 @@ test_expect_success 'git-clean with absolute path' '
}
'
-test_expect_success 'git-clean with out of work tree relative path' '
+test_expect_success 'git clean with out of work tree relative path' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@@ -131,7 +150,7 @@ test_expect_success 'git-clean with out of work tree relative path' '
)
'
-test_expect_success 'git-clean with out of work tree absolute path' '
+test_expect_success 'git clean with out of work tree absolute path' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
@@ -142,11 +161,11 @@ test_expect_success 'git-clean with out of work tree absolute path' '
)
'
-test_expect_success 'git-clean -d with prefix and path' '
+test_expect_success 'git clean -d with prefix and path' '
mkdir -p build docs src/feature &&
touch a.out src/part3.c src/feature/file.c docs/manual.txt obj.o build/lib.so &&
- (cd src/ && git-clean -d feature/) &&
+ (cd src/ && git clean -d feature/) &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -160,12 +179,12 @@ test_expect_success 'git-clean -d with prefix and path' '
'
-test_expect_success 'git-clean symbolic link' '
+test_expect_success 'git clean symbolic link' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
ln -s docs/manual.txt src/part4.c
- git-clean &&
+ git clean &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -179,10 +198,10 @@ test_expect_success 'git-clean symbolic link' '
'
-test_expect_success 'git-clean with wildcard' '
+test_expect_success 'git clean with wildcard' '
touch a.clean b.clean other.c &&
- git-clean "*.clean" &&
+ git clean "*.clean" &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -193,11 +212,11 @@ test_expect_success 'git-clean with wildcard' '
'
-test_expect_success 'git-clean -n' '
+test_expect_success 'git clean -n' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean -n &&
+ git clean -n &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -210,11 +229,11 @@ test_expect_success 'git-clean -n' '
'
-test_expect_success 'git-clean -d' '
+test_expect_success 'git clean -d' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean -d &&
+ git clean -d &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -227,11 +246,11 @@ test_expect_success 'git-clean -d' '
'
-test_expect_success 'git-clean -d src/ examples/' '
+test_expect_success 'git clean -d src/ examples/' '
mkdir -p build docs examples &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so examples/1.c &&
- git-clean -d src/ examples/ &&
+ git clean -d src/ examples/ &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -245,11 +264,11 @@ test_expect_success 'git-clean -d src/ examples/' '
'
-test_expect_success 'git-clean -x' '
+test_expect_success 'git clean -x' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean -x &&
+ git clean -x &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -262,11 +281,11 @@ test_expect_success 'git-clean -x' '
'
-test_expect_success 'git-clean -d -x' '
+test_expect_success 'git clean -d -x' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean -d -x &&
+ git clean -d -x &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -279,11 +298,11 @@ test_expect_success 'git-clean -d -x' '
'
-test_expect_success 'git-clean -X' '
+test_expect_success 'git clean -X' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean -X &&
+ git clean -X &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -296,11 +315,11 @@ test_expect_success 'git-clean -X' '
'
-test_expect_success 'git-clean -d -X' '
+test_expect_success 'git clean -d -X' '
mkdir -p build docs &&
touch a.out src/part3.c docs/manual.txt obj.o build/lib.so &&
- git-clean -d -X &&
+ git clean -d -X &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -331,7 +350,7 @@ 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 &&
- git-clean -n &&
+ git clean -n &&
test -f Makefile &&
test -f README &&
test -f src/part1.c &&
@@ -346,7 +365,7 @@ test_expect_success 'clean.requireForce and -n' '
test_expect_success 'clean.requireForce and -f' '
- git-clean -f &&
+ git clean -f &&
test -f README &&
test -f src/part1.c &&
test -f src/part2.c &&
@@ -373,11 +392,50 @@ test_expect_success 'removal failure' '
mkdir foo &&
touch foo/bar &&
- exec <foo/bar &&
- chmod 0 foo &&
- test_must_fail git clean -f -d
+ (exec <foo/bar &&
+ chmod 0 foo &&
+ test_must_fail git clean -f -d)
'
chmod 755 foo
+test_expect_success 'nested git work tree' '
+ rm -fr foo bar &&
+ mkdir foo bar &&
+ (
+ cd foo &&
+ git init &&
+ >hello.world
+ git add . &&
+ git commit -a -m nested
+ ) &&
+ (
+ cd bar &&
+ >goodbye.people
+ ) &&
+ git clean -f -d &&
+ test -f foo/.git/index &&
+ test -f foo/hello.world &&
+ ! test -d bar
+'
+
+test_expect_success 'force removal of nested git work tree' '
+ rm -fr foo bar &&
+ mkdir foo bar &&
+ (
+ cd foo &&
+ git init &&
+ >hello.world
+ git add . &&
+ git commit -a -m nested
+ ) &&
+ (
+ cd bar &&
+ >goodbye.people
+ ) &&
+ git clean -f -f -d &&
+ ! test -d foo &&
+ ! test -d bar
+'
+
test_done