Re: [PATCH] status: add a failing test showing a core.untrackedCache bug
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Dec 27, 2017, 18:50 UTC
- Message-ID
- <87mv24qa2y.fsf@evledraar.gmail.com>
- In-Reply-To
- <xmqqlghoniuk.fsf@gitster.mtv.corp.google.com>
On Wed, Dec 27 2017, Junio C. Hamano jotted:
Show 20 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
>
>> +status_is_clean() {
>> + >../status.expect &&
>> + git status --porcelain >../status.actual &&
>> + test_cmp ../status.expect ../status.actual
>> +}
>> +
>> test_lazy_prereq UNTRACKED_CACHE '
>> { git update-index --test-untracked-cache; ret=$?; } &&
>> test $ret -ne 1
>> @@ -683,4 +689,43 @@ test_expect_success 'untracked cache survives a commit' '
>> test_cmp ../before ../after
>> '
>>
>> +test_expect_success 'teardown worktree' '
>> + cd ..
>> +'
>
> Funny indentation.Thanks. I'll submit a new series with all 3 patches with the issues you brought up mentioned...
Show 18 quoted lines
>> +test_expect_success 'setup worktree for symlink test' ' >> + git init worktree-symlink && >> + cd worktree-symlink && >> + git config core.untrackedCache true && >> + mkdir one two && >> + touch one/file two/file && >> + git add one/file two/file && >> + git commit -m"first commit" && >> + git rm -rf one && >> + ln -s two one && >> + git add one && >> + git commit -m"second commit" >> +' > > This needs SYMLINKS prereq, which in turn means it cannot be tested > on certain platforms. I thought Duy's answer was that this does not > need to involve a symbolic link at all? If so, perhaps we can have > another test that does not need symlink?
... as soon as I figure out how to add such a non-symlink test as well (seems sensible to test both), but I can't bring it to fail without symlinks, I just adjusted my test script to do this instead:
(
rm -rf /tmp/testrepo &&
git init /tmp/testrepo &&
cd /tmp/testrepo &&
mkdir x y &&
touch x/a y/b &&
git add x/a y/b &&
git commit -msnap &&
git rm -rf y &&
mkdir y &&
touch y/c &&
git add y &&
git commit -msnap2 &&
git checkout HEAD~ &&
git status &&
git checkout master &&
sleep 1 &&
git status &&
git status
)Duy, what am I missing here?