Hi Ævar, Your suggestions are quite helpful, and I'm glad to apply them, especially if it means that this "clean up" patch can actually harden us from similar changes in the future. On Tue, Jan 12, 2021 at 06:11:00PM +0100, Ævar Arnfjörð Bjarmason wrote: > > On Fri, Jan 08 2021, Taylor Blau wrote: > > > For now, sprinkle these locations with a 'grep -v "\.rev$"' to ignore > > them. Once the pack.writeReverseIndex option has been thoroughly > > tested, we will default it to 'true', removing GIT_TEST_WRITE_REV_INDEX, > > and making it possible to revert this patch. > > Maybe some of it we can change/revert, but some of it just seems to be > test warts we can fix: > > > diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh > > index 297de502a9..9696f88c2f 100755 > > --- a/t/t5319-multi-pack-index.sh > > +++ b/t/t5319-multi-pack-index.sh > > @@ -710,7 +710,7 @@ test_expect_success 'expire respects .keep files' ' > > PACKA=$(ls .git/objects/pack/a-pack*\.pack | sed s/\.pack\$//) && > > touch $PACKA.keep && > > git multi-pack-index expire && > > - ls -S .git/objects/pack/a-pack* | grep $PACKA >a-pack-files && > > + ls -S .git/objects/pack/a-pack* | grep $PACKA | grep -v "\.rev$" >a-pack-files && > > This seems to be testing "a *.keep file made my pack not expire". Can't > it just check for *.{pack,idx,keep} or even just *.pack? Yeah, and I think the simplest thing to do here is just check that these files exist at all. Something like: diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh index 9696f88c2f..f5e50508c9 100755 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@ -710,7 +710,9 @@ test_expect_success 'expire respects .keep files' ' PACKA=$(ls .git/objects/pack/a-pack*\.pack | sed s/\.pack\$//) && touch $PACKA.keep && git multi-pack-index expire && - ls -S .git/objects/pack/a-pack* | grep $PACKA | grep -v "\.rev$" >a-pack-files && + test_is_file .git/objects/pack/pack-a-$PACKA.idx && + test_is_file .git/objects/pack/pack-a-$PACKA.keep && + test_is_file .git/objects/pack/pack-a-$PACKA.pack && test_line_count = 3 a-pack-files && test-tool read-midx .git/objects | grep idx >midx-list && test_line_count = 2 midx-list > > diff --git a/t/t5604-clone-reference.sh b/t/t5604-clone-reference.sh > > index 2f7be23044..d064426d03 100755 > > --- a/t/t5604-clone-reference.sh > > +++ b/t/t5604-clone-reference.sh > > @@ -318,7 +318,7 @@ test_expect_success SYMLINKS 'clone repo with symlinked or unknown files at obje > > test_cmp T.objects T$option.objects && > > ( > > cd T$option/.git/objects && > > - find . -type f | sort >../../../T$option.objects-files.raw && > > + find . -type f | grep -v \.rev$ | sort >../../../T$option.objects-files.raw && > > find . -type l | sort >../../../T$option.objects-symlinks.raw > > There's an existing loop just below that where we grep out > /commit-graph/, /multi-pack-index/ etc. whith other test modes add to > the objects directory with sed. Seems like this belongs there, not in > the find above it. Much cleaner! Thank you. > > diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh > > index 7d5b17909b..9ebf045739 100755 > > --- a/t/t5702-protocol-v2.sh > > +++ b/t/t5702-protocol-v2.sh > > @@ -848,7 +848,7 @@ test_expect_success 'part of packfile response provided as URI' ' > > test -f h2found && > > > > # Ensure that there are exactly 6 files (3 .pack and 3 .idx). > > - ls http_child/.git/objects/pack/* >filelist && > > + ls http_child/.git/objects/pack/* | grep -v \.rev$ >filelist && > > test_line_count = 6 filelist > > ' > > Maybe just check *.{pack,idx,keep}. I was looking at that code the other > day and it's really just being overly specific. It really just cares > about the *.pack files. I think here and in t6500 as well as t9300 the easiest thing to do is just diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh index 9ebf045739..73cd9e3ff6 100755 --- a/t/t5702-protocol-v2.sh +++ b/t/t5702-protocol-v2.sh @@ -848,8 +848,10 @@ test_expect_success 'part of packfile response provided as URI' ' test -f h2found && # Ensure that there are exactly 6 files (3 .pack and 3 .idx). - ls http_child/.git/objects/pack/* | grep -v \.rev$ >filelist && - test_line_count = 6 filelist + ls http_child/.git/objects/pack/*.pack >packlist && + ls http_child/.git/objects/pack/*.idx >idxlist && + test_line_count = 3 idxlist && + test_line_count = 3 packlist ' > > diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh > > index 308c1ef42c..100df52a71 100755 > > --- a/t/t9300-fast-import.sh > > +++ b/t/t9300-fast-import.sh > > @@ -1629,7 +1629,7 @@ test_expect_success 'O: blank lines not necessary after other commands' ' > > INPUT_END > > > > git fast-import <input && > > - test 8 = $(find .git/objects/pack -type f | grep -v multi-pack-index | wc -l) && > > + test 8 = $(find .git/objects/pack -type f \( -name "*.idx" -o -name "*.pack" \) | wc -l) && > > Yay, there the existing multi-pack-index case is amended in a > future-proof way :) Here's actually a spot where I'm unhappy with the resulting complexity, and I think that it would be much cleaner if we did the same packlist+idxlist thing and then checked the line count of each. Thanks, Taylor