Re: t1308-config-set.sh fails on current master
On Wed, Jun 14, 2017 at 01:02:15AM -0400, Jeff King wrote: > On Wed, Jun 14, 2017 at 04:17:40AM +0200, Øyvind A. Holm wrote: > > > > Interesting. I'm not able to reproduce it, but of course that doesn't > > > mean much. > > > > I'll admit that I have a somewhat special build system, but it's been > > working great since I created it 7 months ago, and I run the test suite > > every time I install a new git. I'm using the Makefile located at > > > > https://gitlab.com/sunny256/src-other/blob/master/devel/git/Makefile > > > > It's only doing regular stuff like "make configure", "./configure", etc, > > but I'm mentioning it in case the Makefile reveals something > > interesting. The git installation is in a non-standard location, the > > newest version of git I've installed is for example located under > > /usr/src-other/pool/git.master.v2.13.1-394-g41dd4330a121/ . > > I couldn't reproduce either with my usual build, but I don't usually use > autoconf. Running: > > make configure > ./configure > make > (cd t && ./t1308-*) > > does fail for me. The problem is that the generated config.mak.autogen > sets the wrong value for FREAD_READS_DIRECTORIES (and overrides the > default entry for Linux from config.mak.uname. So the configure script > needs to be fixed. Actually, I'm not sure if configure.ac is wrong, or the new uses of FREAD_READS_DIRECTORIES. Because the test configure.ac actually checks: FILE *f = fopen(".", "r"); return f && fread(, 1, 1, f); I.e., it sees that not only do we fopen() a directory, but we actually read garbage from it. Whereas on Linux, we fopen the file and then the read gets EISDIR. So it's not true that FREAD_READS_DIRECTORIES; this is more like FOPEN_OPENS_DIRECTORIES. Just looking at how the macro is used, I think we want to handle both cases the same (by doing an fstat check after fopen). So I think it would be OK to continue to use FREAD_READS_DIRECTORIES for both cases, and just fix the configure script. It may be worth updating the macro name for clarity, though. -Peff
Re: t1308-config-set.sh fails on current master
On Wed, Jun 14, 2017 at 04:17:40AM +0200, Øyvind A. Holm wrote: > > Interesting. I'm not able to reproduce it, but of course that doesn't > > mean much. > > I'll admit that I have a somewhat special build system, but it's been > working great since I created it 7 months ago, and I run the test suite > every time I install a new git. I'm using the Makefile located at > > https://gitlab.com/sunny256/src-other/blob/master/devel/git/Makefile > > It's only doing regular stuff like "make configure", "./configure", etc, > but I'm mentioning it in case the Makefile reveals something > interesting. The git installation is in a non-standard location, the > newest version of git I've installed is for example located under > /usr/src-other/pool/git.master.v2.13.1-394-g41dd4330a121/ . I couldn't reproduce either with my usual build, but I don't usually use autoconf. Running: make configure ./configure make (cd t && ./t1308-*) does fail for me. The problem is that the generated config.mak.autogen sets the wrong value for FREAD_READS_DIRECTORIES (and overrides the default entry for Linux from config.mak.uname. So the configure script needs to be fixed. -Peff
Re: t1308-config-set.sh fails on current master
Hi, Jonathan, thanks for having a look at this. On 2017-06-13 18:25:35, Jonathan Nieder wrote: > Øyvind A. Holm wrote: > > t1308-config-set.sh fails on current master > > (v2.13.1-449-g02a2850ad58e). The error is introduced by commit > > e2d90fd1c33a ("config.mak.uname: set FREAD_READS_DIRECTORIES for > > Linux and FreeBSD"). Reverting the commit results in a conflict, but > > the test works on the commit before, 02912f477586. > > > > Tested on > > > > Debian GNU/Linux 8.8 (jessie) > > Linux Mint 18 Sarah > > Interesting. I'm not able to reproduce it, but of course that doesn't > mean much. I'll admit that I have a somewhat special build system, but it's been working great since I created it 7 months ago, and I run the test suite every time I install a new git. I'm using the Makefile located at https://gitlab.com/sunny256/src-other/blob/master/devel/git/Makefile It's only doing regular stuff like "make configure", "./configure", etc, but I'm mentioning it in case the Makefile reveals something interesting. The git installation is in a non-standard location, the newest version of git I've installed is for example located under /usr/src-other/pool/git.master.v2.13.1-394-g41dd4330a121/ . > What is the output of the following command? > > ./t1308-config-set.sh --run=1,23 -x -v -i Initialized empty Git repository in /home/sunny/src/git/src-other/devel/git/git/t/trash directory.t1308-config-set/.git/ expecting success: cat >.git/config <<-\EOF [case] penguin = very blue Movie = BadPhysics UPPERCASE = true MixedCase = true my = foo baz = sam [Cores] WhatEver = Second baz = bar [cores] baz = bat [CORES] baz = ball [my "Foo bAr"] hi = mixed-case [my "FOO BAR"] hi = upper-case [my "foo bar"] hi = lower-case [case] baz = bat baz = hask [lamb] chop = 65 head = none [goat] legs = 4 head = true skin = false nose = 1 horns EOF + cat ok 1 - setup default config skipping test: get value for a simple key check_config get_value case.penguin "very blue" ok 2 # skip get value for a simple key (--run) skipping test: get value for a key with value as an empty string check_config get_value case.my "" ok 3 # skip get value for a key with value as an empty string (--run) skipping test: get value for a key with value as NULL check_config get_value case.foo "(NULL)" ok 4 # skip get value for a key with value as NULL (--run) skipping test: upper case key check_config get_value case.UPPERCASE "true" && check_config get_value case.uppercase "true" ok 5 # skip upper case key (--run) skipping test: mixed case key check_config get_value case.MixedCase "true" && check_config get_value case.MIXEDCASE "true" && check_config get_value case.mixedcase "true" ok 6 # skip mixed case key (--run) skipping test: key and value with mixed case check_config get_value case.Movie "BadPhysics" ok 7 # skip key and value with mixed case (--run) skipping test: key with case sensitive subsection check_config get_value "my.Foo bAr.hi" "mixed-case" && check_config get_value "my.FOO BAR.hi" "upper-case" && check_config get_value "my.foo bar.hi" "lower-case" ok 8 # skip key with case sensitive subsection (--run) skipping test: key with case insensitive section header check_config get_value cores.baz "ball" && check_config get_value Cores.baz "ball" && check_config get_value CORES.baz "ball" && check_config get_value coreS.baz "ball" ok 9 # skip key with case insensitive section header (--run) skipping test: key with case insensitive section header & variable check_config get_value CORES.BAZ "ball" && check_config get_value cores.baz "ball" && check_config get_value cores.BaZ "ball" && check_config get_value cOreS.bAz "ball" ok 10 # skip key with case insensitive section header & variable (--run) skipping test: find value with misspelled key check_config expect_code 1 get_value "my.fOo Bar.hi&quo
Re: t1308-config-set.sh fails on current master
Hi Øyvind, Øyvind A. Holm wrote: > t1308-config-set.sh fails on current master (v2.13.1-449-g02a2850ad58e). > The error is introduced by commit e2d90fd1c33a ("config.mak.uname: set > FREAD_READS_DIRECTORIES for Linux and FreeBSD"). Reverting the commit > results in a conflict, but the test works on the commit before, > 02912f477586. > > Tested on > > Debian GNU/Linux 8.8 (jessie) > Linux Mint 18 Sarah Interesting. I'm not able to reproduce it, but of course that doesn't mean much. > Test output: > > $ ./t1308-config-set.sh > ok 1 - setup default config > ok 2 - get value for a simple key > ok 3 - get value for a key with value as an empty string > ok 4 - get value for a key with value as NULL > ok 5 - upper case key > ok 6 - mixed case key > ok 7 - key and value with mixed case > ok 8 - key with case sensitive subsection > ok 9 - key with case insensitive section header > ok 10 - key with case insensitive section header & variable > ok 11 - find value with misspelled key > ok 12 - find value with the highest priority > ok 13 - find integer value for a key > ok 14 - find string value for a key > ok 15 - check line error when NULL string is queried > ok 16 - find integer if value is non parse-able > ok 17 - find bool value for the entered key > ok 18 - find multiple values > ok 19 - find value from a configset > ok 20 - find value with highest priority from a configset > ok 21 - find value_list for a key from a configset > ok 22 - proper error on non-existent files > 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-config configset_get_value foo.bar > a-directory 2>output && > # grep "^warning:" output && > # grep "^Error" output >actual && > # test_cmp expect actual > # > ok 24 - proper error on non-accessible files > ok 25 - proper error on error in default config files > ok 26 - proper error on error in custom config files > ok 27 - check line errors for malformed values > ok 28 - error on modifying repo config without repo > ok 29 - iteration shows correct origins > # failed 1 among 29 test(s) > 1..29 What is the output of the following command? ./t1308-config-set.sh --run=1,23 -x -v -i Other diagnostics: - what is the output of "env"? - cat ../GIT-BUILD-OPTIONS - if you run that under 'strace -f -o /tmp/strace.out', does the strace.out say anything interesting? Thanks, Jonathan
t1308-config-set.sh fails on current master
t1308-config-set.sh fails on current master (v2.13.1-449-g02a2850ad58e). The error is introduced by commit e2d90fd1c33a ("config.mak.uname: set FREAD_READS_DIRECTORIES for Linux and FreeBSD"). Reverting the commit results in a conflict, but the test works on the commit before, 02912f477586. Tested on Debian GNU/Linux 8.8 (jessie) Linux Mint 18 Sarah Test output: $ ./t1308-config-set.sh ok 1 - setup default config ok 2 - get value for a simple key ok 3 - get value for a key with value as an empty string ok 4 - get value for a key with value as NULL ok 5 - upper case key ok 6 - mixed case key ok 7 - key and value with mixed case ok 8 - key with case sensitive subsection ok 9 - key with case insensitive section header ok 10 - key with case insensitive section header & variable ok 11 - find value with misspelled key ok 12 - find value with the highest priority ok 13 - find integer value for a key ok 14 - find string value for a key ok 15 - check line error when NULL string is queried ok 16 - find integer if value is non parse-able ok 17 - find bool value for the entered key ok 18 - find multiple values ok 19 - find value from a configset ok 20 - find value with highest priority from a configset ok 21 - find value_list for a key from a configset ok 22 - proper error on non-existent files 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-config configset_get_value foo.bar a-directory 2>output && # grep "^warning:" output && # grep "^Error" output >actual && # test_cmp expect actual # ok 24 - proper error on non-accessible files ok 25 - proper error on error in default config files ok 26 - proper error on error in custom config files ok 27 - check line errors for malformed values ok 28 - error on modifying repo config without repo ok 29 - iteration shows correct origins # failed 1 among 29 test(s) 1..29 $ Øyvind N 60.376° E 5.3334° OpenPGP fingerprint: A006 05D6 E676 B319 55E2 E77E FB0C BEE8 94A5 06E5 2daabdde-509d-11e7-a17a-db5caa6d21d3 signature.asc Description: PGP signature