Re: [PATCH 1/3] t7300: add tests to document behavior of clean and nested git
will fix!
On Tue, Apr 7, 2015 at 12:06 AM, Eric Sunshine <sunshine@sunshineco.com> wrote:
Show 126 quoted lines
> On Mon, Apr 6, 2015 at 7:48 AM, Erik Elfström <erik.elfstrom@gmail.com> wrote:
>> Signed-off-by: Erik Elfström <erik.elfstrom@gmail.com>
>> ---
>> 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 &&
>
>> + git clean -f -d &&
>> + test -f foo/.git/HEAD &&
>> + ! test -d bar
>
> Here and elsewhere, you could instead use test_path_is_file() and
> test_path_is_missing(), respectively.
>
>> +'
>> +
>> +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 &&
>
>> + 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()
>
>> + ! 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()
>
>> + 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