Re: Git 2.8.1 fails test 32 of t7300-clean.sh, breaks profile build
- From
Jan Keromnes <janx@linux.com>
- Date
- May 3, 2016, 09:19 UTC
- Message-ID
- <CAA6PgK4M2Ag6anEFYakW9NJe0ehTtS1UEQmDWe387W_uV-MCXA@mail.gmail.com>
- In-Reply-To
- <CAGZ79kYy=+xz5k0pN+MZTRBALd-sqbQ0TePNjkx6itjQpbRUvA@mail.gmail.com>
Thanks for your replies! I was able to reproduce to failure on Git 2.8.2.
Steps:
# Build Git 2.8.2 and run t/t7300-clean.sh in a Dockerfile based on ubuntu:14.04. RUN mkdir /tmp/git \ && cd /tmp/git \ && curl https://www.kernel.org/pub/software/scm/git/git-2.8.2.tar.xz | tar xJ \ && cd git-2.8.2 \ && make all && cd t && ./t7300-clean.sh -d -i -v -x
Logs:
expecting success:
rm -fr to_clean possible_sub1 &&
mkdir to_clean possible_sub1 &&
test_when_finished "rm -rf possible_sub*" &&
echo "gitdir: foo" >possible_sub1/.git &&
>possible_sub1/hello.world &&
chmod 0 possible_sub1/.git &&
>to_clean/should_clean.this &&
git clean -f -d &&
test_path_is_file possible_sub1/.git &&
test_path_is_file possible_sub1/hello.world &&
test_path_is_missing to_clean+ rm -fr to_clean possible_sub1
+ mkdir to_clean possible_sub1
+ test_when_finished rm -rf possible_sub*
+ test 0 = 0
+ test_cleanup={ rm -rf possible_sub*
} && (exit "$eval_ret"); eval_ret=$?; :
+ echo gitdir: foo
+
+ chmod 0 possible_sub1/.git
+
+ git clean -f -d
Skipping repository baz/boo
Skipping repository foo/
Removing possible_sub1/
Skipping repository repo/
Skipping repository sub2/
Removing to_clean/
+ test_path_is_file possible_sub1/.git
+ test -f possible_sub1/.git
+ echo File possible_sub1/.git doesn't exist.
+ false
error: last command exited with $?=1
File possible_sub1/.git doesn't exist.
not ok 32 - should avoid cleaning possible submodules
#
# rm -fr to_clean possible_sub1 &&
# mkdir to_clean possible_sub1 &&
# test_when_finished "rm -rf possible_sub*" &&
# echo "gitdir: foo" >possible_sub1/.git &&
# >possible_sub1/hello.world &&
# chmod 0 possible_sub1/.git &&
# >to_clean/should_clean.this &&
# git clean -f -d &&
# test_path_is_file possible_sub1/.git &&
# test_path_is_file possible_sub1/hello.world &&
# test_path_is_missing to_clean
#Judging from the line "Removing possible_sub1/", it looks like Git 2.8.2 removes a possible submodule while executing `git clean -f -d`, whereas the test expects it not to.
Is it possible to make Git's output even more verbose, so that it tells why it decides to remove "possible_sub1"? Are you able to reproduce this test fail on your side?
This prevents doing a full profile build.
Best, Jan
On Fri, Apr 29, 2016 at 7:06 PM, Stefan Beller <sbeller@google.com> wrote:
Show 81 quoted lines
> On Fri, Apr 29, 2016 at 5:53 AM, Jan Keromnes <janx@linux.com> wrote: >> Hello, >> >> I tried running a full profile build of Git 2.8.1, but it looks like >> test #32 in `t7300-clean.sh` fails: >> >> Commands: >> >>> curl https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.xz | tar xJ >>> cd git-2.8.1 >>> make prefix=/usr profile-install install-man -j18 >> >> Logs of test-suite that fails: >> >> *** t7300-clean.sh *** >> ok 1 - setup >> ok 2 - git clean with skip-worktree .gitignore >> ok 3 - git clean >> ok 4 - git clean src/ >> ok 5 - git clean src/ src/ >> ok 6 - git clean with prefix >> ok 7 - git clean with relative prefix >> ok 8 - git clean with absolute path >> ok 9 - git clean with out of work tree relative path >> ok 10 - git clean with out of work tree absolute path >> ok 11 - git clean -d with prefix and path >> ok 12 - git clean symbolic link >> ok 13 - git clean with wildcard >> ok 14 - git clean -n >> ok 15 - git clean -d >> ok 16 - git clean -d src/ examples/ >> ok 17 - git clean -x >> ok 18 - git clean -d -x >> ok 19 - git clean -d -x with ignored tracked directory >> ok 20 - git clean -X >> ok 21 - git clean -d -X >> ok 22 - git clean -d -X with ignored tracked directory >> ok 23 - clean.requireForce defaults to true >> ok 24 - clean.requireForce >> ok 25 - clean.requireForce and -n >> ok 26 - clean.requireForce and -f >> ok 27 - core.excludesfile >> ok 28 # skip removal failure (missing SANITY) >> ok 29 - nested git work tree >> ok 30 - should clean things that almost look like git but are not >> ok 31 - should not clean submodules >> not ok 32 - should avoid cleaning possible submodules >> # >> # rm -fr to_clean possible_sub1 && >> # mkdir to_clean possible_sub1 && >> # test_when_finished "rm -rf possible_sub*" && >> # echo "gitdir: foo" >possible_sub1/.git && >> # >possible_sub1/hello.world && >> # chmod 0 possible_sub1/.git && >> # >to_clean/should_clean.this && >> # git clean -f -d && >> # test_path_is_file possible_sub1/.git && >> # test_path_is_file possible_sub1/hello.world && >> # test_path_is_missing to_clean >> # >> >> Best, >> Jan > > Thanks for reporting the bug! > > Have a look at t/README to run the tests with command line arguments. > (I usually run tests as ./tXXXfoo.sh -d -i -v -x with these arguments, > though I cannot remember what each of that does. One of it makes the > test suite stop on a failing test, such that you can cd into the testing > directory and check the state of the file. (Which are present, which are gone?) > > With these arguments it is also very verbose, and it would tell > you what is wrong (is the assertion wrong in the `test_path_is_file/missing` > or is it `git clean` segfaulting?) > > As Johannes said, it makes sense that you debug into that as > no one could reproduce it thus far on their system. > > Thanks, > Stefan