threads / discuss / 50443

[Possible Breakage] t1308 - Bad return value from test-tool

Subject: [Possible Breakage] t1308 - Bad return value from test-tool

## tl;dr

5 messages between Feb 8, 2019 and Feb 10, 2019.

replies: 4people: 2as markdown or json

Randall S. Becker· Feb 8, 2019, 21:42 UTC · lore

t1308 has me perplexed - this is an old breakage on the NonStop platform, that I have just gotten around to checking with the new bash version we have. When running sub-test 23, the following was reported:

Value not found for "foo.bar" test_expect_code: command exited with 1, we wanted 2 test-tool config configset_get_value foo.bar a-directory

However, when I looked inside t/helper/test-config.c, every path reporting "Value not found" has a goto exit1 not exit2. It seems, from the code, that the test is actually incorrect and should be expecting 1 not 2, and that it is working properly on NonStop (but the test fails as a result).

What is perplexing is that someone else should be seeing this. The test-config.c code is about 5 years old, but the test was modified a year or two ago. What am I missing here?

Cheers, Randall

Jeff King· Feb 9, 2019, 04:24 UTC · re: Randall S. Becker · lore

Re: [Possible Breakage] t1308 - Bad return value from test-tool

On Fri, Feb 08, 2019 at 04:42:19PM -0500, Randall S. Becker wrote:
Show 12 quoted lines
> t1308 has me perplexed - this is an old breakage on the NonStop platform,
> that I have just gotten around to checking with the new bash version we
> have. When running sub-test 23, the following was reported:
> 
> Value not found for "foo.bar"
> test_expect_code: command exited with 1, we wanted 2 test-tool config
> configset_get_value foo.bar a-directory
> 
> However, when I looked inside t/helper/test-config.c, every path reporting
> "Value not found" has a goto exit1 not exit2. It seems, from the code, that
> the test is actually incorrect and should be expecting 1 not 2, and that it
> is working properly on NonStop (but the test fails as a result).

We're expecting it to report an error reading the directory, not "value not found". Which would yield code 2.

It sounds like you might need to set FREAD_READS_DIRECTORIES in your config.mak.

-Peff
Randall S. Becker· Feb 9, 2019, 18:08 UTC · re: Jeff King · lore

RE: [Possible Breakage] t1308 - Bad return value from test-tool

On February 8, 2019 23:24, Jeff King wrote:
Show 21 quoted lines
> On Fri, Feb 08, 2019 at 04:42:19PM -0500, Randall S. Becker wrote:
> 
> > t1308 has me perplexed - this is an old breakage on the NonStop
> > platform, that I have just gotten around to checking with the new bash
> > version we have. When running sub-test 23, the following was reported:
> >
> > Value not found for "foo.bar"
> > test_expect_code: command exited with 1, we wanted 2 test-tool config
> > configset_get_value foo.bar a-directory
> >
> > However, when I looked inside t/helper/test-config.c, every path
> > reporting "Value not found" has a goto exit1 not exit2. It seems, from
> > the code, that the test is actually incorrect and should be expecting
> > 1 not 2, and that it is working properly on NonStop (but the test fails as a
> result).
> 
> We're expecting it to report an error reading the directory, not "value not
> found". Which would yield code 2.
> 
> It sounds like you might need to set FREAD_READS_DIRECTORIES in your
> config.mak.
Setting FREAD_READS_DIRECTORIES = UnfortunatelyYes
still results in 

Value not found for "foo.bar" test_expect_code: command exited with 1, we wanted 2 test-tool config configset_get_value foo.bar a-directory not ok 23 - proper error on directory "files" # # echo "Error (-1) reading configuration file a-directory." >expect && # mkdir a-directory && # test_expect_code 2 test-tool config configset_get_value foo.bar a-directory 2>output && # grep "^warning:" output && # grep "^Error" output >actual && # test_cmp expect actual #

I don't think that helped. While fopen can open a directory, fread does not return any data in this platform. readdir or nftw/ftw are pretty much the only options. However, the code still goes down the goto exit1 path in this situation. 

Perplexed, Randall

Jeff King· Feb 9, 2019, 23:32 UTC · re: Randall S. Becker · lore

Re: [Possible Breakage] t1308 - Bad return value from test-tool

On Sat, Feb 09, 2019 at 01:08:01PM -0500, Randall S. Becker wrote:
> > It sounds like you might need to set FREAD_READS_DIRECTORIES in your
> > config.mak.
> 
> Setting FREAD_READS_DIRECTORIES = UnfortunatelyYes

Silly question, but you did rebuild after setting that, not just re-run the tests, right?

Show 18 quoted lines
> still results in 
> 
> Value not found for "foo.bar"
> test_expect_code: command exited with 1, we wanted 2 test-tool config configset_get_value foo.bar a-directory
> not ok 23 - proper error on directory "files"
> #
> #               echo "Error (-1) reading configuration file a-directory." >expect &&
> #               mkdir a-directory &&
> #               test_expect_code 2 test-tool config configset_get_value foo.bar a-directory 2>output &&
> #               grep "^warning:" output &&
> #               grep "^Error" output >actual &&
> #               test_cmp expect actual
> #
> 
> I don't think that helped. While fopen can open a directory, fread
> does not return any data in this platform. readdir or nftw/ftw are
> pretty much the only options. However, the code still goes down the
> goto exit1 path in this situation.

Hrm. That's the exact case FREAD_READS_DIRECTORIES is supposed to help. It does an fstat() after fopen()ing the file to see if it points to a directory, and if so closes it immediately and returns EISDIR.

Can you confirm via debugger (or printf statements) that we make it into git_fopen, and what the resulting st.st_mode we see looks like?

-Peff
Randall S. Becker· Feb 10, 2019, 00:15 UTC · re: Jeff King · lore

RE: [Possible Breakage] t1308 - Bad return value from test-tool

On February 9, 2019 18:33, Jeff King wrote:
Show 9 quoted lines
> On Sat, Feb 09, 2019 at 01:08:01PM -0500, Randall S. Becker wrote:
> 
> > > It sounds like you might need to set FREAD_READS_DIRECTORIES in your
> > > config.mak.
> >
> > Setting FREAD_READS_DIRECTORIES = UnfortunatelyYes
> 
> Silly question, but you did rebuild after setting that, not just re-run the tests,
> right?
Yes make was run, but some doofus (me) did not run make tests first, so test-tool was out of date, post reconfigure. When just a code change is made, test-tool gets build. I was/am confused.
Show 28 quoted lines
> > still results in
> >
> > Value not found for "foo.bar"
> > test_expect_code: command exited with 1, we wanted 2 test-tool config
> > configset_get_value foo.bar a-directory not ok 23 - proper error on
> directory "files"
> > #
> > #               echo "Error (-1) reading configuration file a-directory." >expect
> &&
> > #               mkdir a-directory &&
> > #               test_expect_code 2 test-tool config configset_get_value foo.bar
> a-directory 2>output &&
> > #               grep "^warning:" output &&
> > #               grep "^Error" output >actual &&
> > #               test_cmp expect actual
> > #
> >
> > I don't think that helped. While fopen can open a directory, fread
> > does not return any data in this platform. readdir or nftw/ftw are
> > pretty much the only options. However, the code still goes down the
> > goto exit1 path in this situation.
> 
> Hrm. That's the exact case FREAD_READS_DIRECTORIES is supposed to help.
> It does an fstat() after fopen()ing the file to see if it points to a directory, and
> if so closes it immediately and returns EISDIR.
> 
> Can you confirm via debugger (or printf statements) that we make it into
> git_fopen, and what the resulting st.st_mode we see looks like?
It did not get into git_fopen at all. Subtest 1 did, but that's no surprise.
t1308 is passes now, finally. Patch coming.

Thanks for the help, Randall

← back to recent threads