Re: [PATCH 1/3] t7300: add tests to document behavior of clean and nested git
From: erik elfström <hidden>
Date: 2016-06-15 23:04:23
will fix! On Tue, Apr 7, 2015 at 12:06 AM, Eric Sunshine [off-list ref] wrote:
On Mon, Apr 6, 2015 at 7:48 AM, Erik Elfström [off-list ref] wrote:quoted
Signed-off-by: Erik Elfström <redacted> ---diff --git a/t/t7300-clean.sh b/t/t7300-clean.sh index 99be5d9..cfdf6d4 100755 --- a/t/t7300-clean.sh +++ b/t/t7300-clean.sh@@ -455,6 +455,88 @@ test_expect_success 'nested git work tree' ' ! test -d bar ' +test_expect_failure 'nested git (only init) should be kept' ' + rm -fr foo bar && + mkdir foo bar && + ( + cd foo && + git init + ) && + ( + cd bar && + >goodbye.people + ) &&(minor; ignore if desired) The above could be simplified to: rm -fr foo bar && git init foo && mkdir bar && >bar/goodbye.people &"ed
+ git clean -f -d && + test -f foo/.git/HEAD && + ! test -d barHere and elsewhere, you could instead use test_path_is_file() and test_path_is_missing(), respectively.quoted
+' + +test_expect_failure 'nested git (bare) should be kept' ' + rm -fr foo bar && + mkdir foo bar && + ( + cd foo && + git init --bare + ) && + ( + cd bar && + >goodbye.people + ) &&Simplified: rm -fr foo bar && git init --bare foo && mkdir bar && >bar/goodbye.people &"ed
+ git clean -f -d && + test -f foo/HEAD && + ! test -d bar +' + +test_expect_success 'giving path in nested git work tree will remove it' ' + rm -fr foo && + mkdir foo && + ( + cd foo && + git init && + mkdir -p bar/baz && + cd bar/baz && + >hello.world + git add . && + git commit -a -m nested + ) && + git clean -f -d foo/bar/baz && + test -f foo/.git/HEAD && + test -d foo/bar/ &&Alternative, here and elsewhere: test_path_is_dir()quoted
+ ! test -d foo/bar/baz +' + +test_expect_success 'giving path to nested .git will not remove it' ' + rm -fr foo && + mkdir foo bar && + ( + cd foo && + git init && + >hello.world + git add . && + git commit -a -m nested + ) && + git clean -f -d foo/.git && + test -f foo/.git/HEAD && + test -d foo/.git/refs && + test -d foo/.git/objects && + test -d bar/ +' + +test_expect_success 'giving path to nested .git/ will remove contents' ' + rm -fr foo bar && + mkdir foo bar && + ( + cd foo && + git init && + >hello.world + git add . && + git commit -a -m nested + ) && + git clean -f -d foo/.git/ && + test 0 = $(ls -A foo/.git | wc -l) &&Although in the latest POSIX, -A may not be portable. Alternative: test_dir_is_empty()quoted
+ test -d foo/.git +' + test_expect_success 'force removal of nested git work tree' ' rm -fr foo bar baz && mkdir -p foo bar baz/boo && -- 2.4.0.rc0.37.ga3b75b3