threads / discuss / 32690

Build broken for contrib/remote-helpers...

Subject: Build broken for contrib/remote-helpers...

## tl;dr

4 messages between Jan 22, 2013 and Jan 22, 2013.

replies: 3people: 4as markdown or json

John Szakmeister· Jan 22, 2013, 05:49 UTC · lore
I tried running make in contrib/remote-helpers and it died with:
    :: make
    make -e -C ../../t test
    rm -f -r test-results
    duplicate test numbers: /Users/jszakmeister/sources/git
    make[1]: *** [test-lint-duplicates] Error 1
    make: *** [test] Error 2

The path shown is not quite correct. I have the sources extracted to /Users/jszakmeister/sources/git-1.8.1.1. It appears that the Makefile in contrib/remote-helpers is exporting T, which is causing the duplicate test detection to fail.

Thought you'd like to know!
-John
Jeff King· Jan 22, 2013, 19:41 UTC · re: John Szakmeister · lore

Re: Build broken for contrib/remote-helpers...

On Tue, Jan 22, 2013 at 12:49:31AM -0500, John Szakmeister wrote:
Show 13 quoted lines
> I tried running make in contrib/remote-helpers and it died with:
> 
>     :: make
>     make -e -C ../../t test
>     rm -f -r test-results
>     duplicate test numbers: /Users/jszakmeister/sources/git
>     make[1]: *** [test-lint-duplicates] Error 1
>     make: *** [test] Error 2
> 
> The path shown is not quite correct.  I have the sources extracted to
> /Users/jszakmeister/sources/git-1.8.1.1.  It appears that the Makefile
> in contrib/remote-helpers is exporting T, which is causing the
> duplicate test detection to fail.

It has to set T, because that is how t/Makefile knows what the set of tests is. The problem is that test-lint-duplicates does not understand absolute pathnames, as its regex is too simplistic:

  sed 's/-.*//' | sort | uniq -d

So it finds whatever is before the first "-", which would be the test number in "t0000-basic.sh" or similar, and then looks for duplicates.

We can make the regex more strict to handle full paths, like:
  perl -lne 'print $1 if m{(?:^|/)(t\d{4})-}'

but that still would not help, as the tests in remote-helpers do not follow the tXXXX convention. So I think even running test-lint-duplicates on them is nonsensical.

Maybe something like this would be more appropriate, though it kills off all test-lint checks, not just test-lint-duplicates:

diff --git a/contrib/remote-helpers/Makefile b/contrib/remote-helpers/Makefile
index 9a76575..9c18ed8 100644
--- a/contrib/remote-helpers/Makefile
+++ b/contrib/remote-helpers/Makefile
@@ -3,6 +3,7 @@ export PATH := $(CURDIR):$(PATH)
 export T := $(addprefix $(CURDIR)/,$(TESTS))
 export MAKE := $(MAKE) -e
 export PATH := $(CURDIR):$(PATH)
+export TEST_LINT :=
 
 test:
 	$(MAKE) -C ../../t $@
Torsten Bögershausen· Jan 22, 2013, 20:55 UTC · re: Jeff King · lore

Re: Build broken for contrib/remote-helpers...

On 22.01.13 20:41, Jeff King wrote:
Show 24 quoted lines
> On Tue, Jan 22, 2013 at 12:49:31AM -0500, John Szakmeister wrote:
> 
>> I tried running make in contrib/remote-helpers and it died with:
>>
>>     :: make
>>     make -e -C ../../t test
>>     rm -f -r test-results
>>     duplicate test numbers: /Users/jszakmeister/sources/git
>>     make[1]: *** [test-lint-duplicates] Error 1
>>     make: *** [test] Error 2
>>
>> The path shown is not quite correct.  I have the sources extracted to
>> /Users/jszakmeister/sources/git-1.8.1.1.  It appears that the Makefile
>> in contrib/remote-helpers is exporting T, which is causing the
>> duplicate test detection to fail.
> 
> It has to set T, because that is how t/Makefile knows what the set of
> tests is. The problem is that test-lint-duplicates does not understand
> absolute pathnames, as its regex is too simplistic:
> 
>   sed 's/-.*//' | sort | uniq -d
> 
> So it finds whatever is before the first "-", which would be the test
> number in "t0000-basic.sh" or similar, and then looks for duplicates.
would it help to filter for numbered tests before sorting like this:
sed 's/-.*//' | grep "[0-9][0-9][0-9][0-9]"| sort | uniq -d
Junio C Hamano· Jan 22, 2013, 22:22 UTC · re: Torsten Bögershausen · lore

Re: Build broken for contrib/remote-helpers...

Torsten Bögershausen <tboegi@web.de> writes:
Show 6 quoted lines
>> So it finds whatever is before the first "-", which would be the test
>> number in "t0000-basic.sh" or similar, and then looks for duplicates.
>
> would it help to filter for numbered tests before sorting like this:
>
> sed 's/-.*//' | grep "[0-9][0-9][0-9][0-9]"| sort | uniq -d

If you are using sed you do not need grep. Just do that in a single process, perhaps like

	sed -ne 's|\(.*/\)*t\([0-9][0-9][0-9][0-9]\)-.*|\2|p'

But more importantly, what do we want "duplicate numbers" sanity check to mean in this context? Is this other directory allowed to have a numbered test that shares the same number as the main test suite? Is uniqueness inside the contrib/remote-helpers/ directory sufficient?

Do we envision that perhaps someday the contrib material becomes mature enough and will want to migrate to the main part of the tree? If that is the case, perhaps should the check complain that these tests are not numbered, instead of ignoring?

← back to recent threads