git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "Øyvind A. Holm" <sunny@sunbase.org>
To: Jonathan Nieder <jrnieder@gmail.com>
Cc: "Git mailing list" <git@vger.kernel.org>,
	"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
	"Junio C Hamano" <gitster@pobox.com>
Subject: Re: t1308-config-set.sh fails on current master
Date: Wed, 14 Jun 2017 04:17:40 +0200	[thread overview]
Message-ID: <20170614021739.erkdifufziwiqjxp@sunbase.org> (raw)
In-Reply-To: <20170614012535.GU133952@aiede.mtv.corp.google.com>

[-- Attachment #1: Type: text/plain, Size: 14002 bytes --]

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" "Value not found for \"my.fOo Bar.hi\""

ok 11 # skip find value with misspelled key (--run)

skipping test: find value with the highest priority 
	check_config get_value case.baz "hask"

ok 12 # skip find value with the highest priority (--run)

skipping test: find integer value for a key 
	check_config get_int lamb.chop 65

ok 13 # skip find integer value for a key (--run)

skipping test: find string value for a key 
	check_config get_string case.baz hask &&
	check_config expect_code 1 get_string case.ba "Value not found for \"case.ba\""

ok 14 # skip find string value for a key (--run)

skipping test: check line error when NULL string is queried 
	test_expect_code 128 test-config get_string case.foo 2>result &&
	test_i18ngrep "fatal: .*case\.foo.*\.git/config.*line 7" result

ok 15 # skip check line error when NULL string is queried (--run)

skipping test: find integer if value is non parse-able 
	check_config expect_code 128 get_int lamb.head

ok 16 # skip find integer if value is non parse-able (--run)

skipping test: find bool value for the entered key 
	check_config get_bool goat.head 1 &&
	check_config get_bool goat.skin 0 &&
	check_config get_bool goat.nose 1 &&
	check_config get_bool goat.horns 1 &&
	check_config get_bool goat.legs 1

ok 17 # skip find bool value for the entered key (--run)

skipping test: find multiple values 
	check_config get_value_multi case.baz sam bat hask

ok 18 # skip find multiple values (--run)

skipping test: find value from a configset 
	cat >config2 <<-\EOF &&
	[case]
		baz = lama
	[my]
		new = silk
	[case]
		baz = ball
	EOF
	echo silk >expect &&
	test-config configset_get_value my.new config2 .git/config >actual &&
	test_cmp expect actual

ok 19 # skip find value from a configset (--run)

skipping test: find value with highest priority from a configset 
	echo hask >expect &&
	test-config configset_get_value case.baz config2 .git/config >actual &&
	test_cmp expect actual

ok 20 # skip find value with highest priority from a configset (--run)

skipping test: find value_list for a key from a configset 
	cat >except <<-\EOF &&
	sam
	bat
	hask
	lama
	ball
	EOF
	test-config configset_get_value case.baz config2 .git/config >actual &&
	test_cmp expect actual

ok 21 # skip find value_list for a key from a configset (--run)

skipping test: proper error on non-existent files 
	echo "Error (-1) reading configuration file non-existent-file." >expect &&
	test_expect_code 2 test-config configset_get_value foo.bar non-existent-file 2>actual &&
	test_cmp expect actual

ok 22 # skip proper error on non-existent files (--run)

expecting success: 
	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

+ echo Error (-1) reading configuration file a-directory.
+ mkdir a-directory
+ test_expect_code 2 test-config configset_get_value foo.bar a-directory
Value not found for "foo.bar"
error: last command exited with $?=1
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
#	


> Other diagnostics:
>
> - what is the output of "env"?

GIT_PS1_SHOWDIRTYSTATE=1
SSH_AGENT_PID=22038
XDG_SESSION_ID=31
DSN=svn+ssh://sunny256@developer.skolelinux.no/repos
TERM=screen-256color-bce
SHELL=/bin/bash
SSH_CLIENT=37.253.243.58 43994 22
GL=git@gitlab.com:sunny256
LC_NUMERIC=C
OLDPWD=/home/sunny/src/git/src-other/devel/git/git
AFVROOT=/home/sunny/afvroot
GH=git@github.com:sunny256
LNS=sunny@sunbase.org:/home/sunny/src/git
SSH_TTY=/dev/pts/1
WHOIS_SERVER=whois.dotster.com
USER=sunny
HISTFILESIZE=10000000
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;37;41:ex=01;32:*.bat=01;32:*.btm=01;32:*.cmd=01;32:*.com=01;32:*.csh=01;32:*.exe=01;32:*.sh=01;32:*.Z=01;31:*.arj=01;31:*.bz=01;31:*.bz2=01;31:*.cpio=01;31:*.deb=01;31:*.gz=01;31:*.lzh=01;31:*.rpm=01;31:*.tar=01;31:*.taz=01;31:*.tgz=01;31:*.tz=01;31:*.z=01;31:*.zip=01;31:*.avi=01;35:*.bmp=01;35:*.gif=01;35:*.jpg=01;35:*.mov=01;35:*.mpg=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.html=01;33:*.txt=01;33:*.utf8=01;33:*~=00;34:
MTOOLS_DATE_STRING=yyyy-mm-dd
MTOOLS_TWENTY_FOUR_HOUR_CLOCK=1
SSH_AUTH_SOCK=/tmp/ssh-VdBkCiAwUqdc/agent.22035
TERMCAP=SC|screen-256color-bce|VT 100/ANSI X3.64 virtual terminal:\
	:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\
	:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\
	:do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\
	:le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\
	:li#56:co#180:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\
	:cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\
	:im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\
	:ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\
	:ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\
	:se=\E[23m:mb=\E[5m:md=\E[1m:mh=\E[2m:mr=\E[7m:\
	:me=\E[m:ms:\
	:Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\
	:vb=\Eg:G0:as=\E(0:ae=\E(B:\
	:ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\
	:po=\E[5i:pf=\E[4i:Km=\E[M:k0=\E[10~:k1=\EOP:k2=\EOQ:\
	:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
	:k8=\E[19~:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\
	:F3=\E[1;2P:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:\
	:F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:kb=\x7f:\
	:K2=\EOE:kB=\E[Z:kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:\
	:*7=\E[1;2F:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:\
	:%e=\E[5;2~:%i=\E[1;2C:kh=\E[1~:@1=\E[1~:kH=\E[4~:\
	:@7=\E[4~:kN=\E[6~:kP=\E[5~:kI=\E[2~:kD=\E[3~:ku=\EOA:\
	:kd=\EOB:kr=\EOC:kl=\EOD:km:
GR=sunny@sunbase.org:/home/sunny/repos/Git
PAGER=less -S
NCDU_SHELL=mc
PATH=/home/sunny/bin/Local/sunbase:/home/sunny/bin:/usr/src-other/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/src-other/prg/git/libexec/git-core:/opt/git-annex
MAIL=/home/sunny/mail/inbox
STY=21459.vanl
BC_ENV_ARGS=-l --quiet
LC_COLLATE=C
PP=git@github.com:piratpartiet
PWD=/home/sunny/src/git/src-other/devel/git/git/t
IRCSERVER=irc.homelien.no
MAILDIR=/home/sunny/mail
BMS=sunny@bellmann:/home/sunny/src/git
EDITOR=v
SESS_UUID=,bash_profile/cf9306e4-e476-11e6-ab83-db5caa6d21d3,screen/e9db0984-e476-11e6-b0ae-db5caa6d21d3,ssh-agent/fc7d8b3e-e476-11e6-8155-db5caa6d21d3,
LANG=en_GB.UTF-8
BB=git@bitbucket.org:sunny256
SUUID_LOGDIR=/home/sunny/uuids
TZ=CET
WHOIS_HIDE=1
SLX=svn+ssh://sunny256@svn.skolelinux.no/repos/skolelinux
SVN_SSH=ssh
PS1=\[\033[0m\033[1;33m\]$(date +"%Y-%m-%d %T") \[\033[01;31m\]\u\[\033[1;35m\]@\[\033[01;34m\]\h\[\033[m\]:\[\033[1;32m\]\w\033[1;33m\]$(__git_ps1 " (%s)")\[\033[m\]\n\$ 
GIT_PS1_SHOWUNTRACKEDFILES=1
IRCNAME=sunny
HISTCONTROL=ignoreboth
BM=sunny@bellmann:/home/sunny/repos/Git
NCURSES_NO_UTF8_ACS=1
HOME=/home/sunny
SHLVL=4
IRCNICK=sunny256
LESSCHARSET=utf-8
GIT_PS1_SHOWSTASHSTATE=1
SUUID_EDITOR=vim
LOGNAME=sunny
LESS=-RSX
WINDOW=2
CVS_RSH=ssh
GIT_PS1_SHOWUPSTREAM=verbose
SSH_CONNECTION=37.253.243.58 43994 178.79.142.16 22
PROMPT_COMMAND=history -a
CVSEDITOR=/home/sunny/bin/cvs-editor
TREE_CHARSET=UTF-8
XDG_RUNTIME_DIR=/run/user/1000
SR=svn+ssh://sunny@sunbase.org/home/sunny/repos/Svn
RSYNC_RSH=ssh
LC_TIME=en_DK.UTF-8
HISTTIMEFORMAT=%F %T 
GHH=https://sunny256@github.com/sunny256
_=/usr/local/bin/env


> - cat ../GIT-BUILD-OPTIONS

SHELL_PATH='/bin/sh'
PERL_PATH='/usr/bin/perl'
DIFF='diff'
PYTHON_PATH='/usr/bin/python'
TAR='tar'
NO_CURL=''
NO_EXPAT=''
USE_LIBPCRE=''
NO_PERL=''
NO_PYTHON=''
NO_UNIX_SOCKETS=''
PAGER_ENV='LESS=FRX LV=-c'
DC_SHA1='YesPlease'
NO_GETTEXT=''
GETTEXT_POISON=''


> - if you run that under 'strace -f -o /tmp/strace.out', does the
>   strace.out say anything interesting?

In fact, when running the test under strace, another test fails too, and 
it's also reproducible:

$ strace -f -o /tmp/strace.out ./t1308-config-set.sh
ok 1 - setup default config
[snip]
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
#
not ok 24 - proper error on non-accessible files
#
#               chmod -r .git/config &&
#               test_when_finished "chmod +r .git/config" &&
#               echo "Error (-1) reading configuration file .git/config." >expect &&
#               test_expect_code 2 test-config configset_get_value foo.bar .git/config 2>output &&
#               grep "^warning:" output &&
#               grep "^Error" output >actual &&
#               test_cmp expect actual
#
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 2 among 29 test(s)
1..29
$

I didn't see any red flags in the strace output, but I've put the file 
for download at

  http://sunbase.org/strace.git-v2.13.1-449-g02a2850ad58e.out

Thanks,
Øyvind

N 60.376° E 5.3334°
OpenPGP fingerprint: A006 05D6 E676 B319 55E2  E77E FB0C BEE8 94A5 06E5
6f7b6448-50a2-11e7-8259-db5caa6d21d3

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

  reply	other threads:[~2017-06-14  2:17 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-14  1:15 t1308-config-set.sh fails on current master Øyvind A. Holm
2017-06-14  1:25 ` Jonathan Nieder
2017-06-14  2:17   ` Øyvind A. Holm [this message]
2017-06-14  5:02     ` Jeff King
2017-06-14  5:15       ` Jeff King
2017-06-14  5:30         ` [PATCH] configure.ac: loosen FREAD_READS_DIRECTORIES test program Jeff King
2017-06-14 10:59           ` Øyvind A. Holm

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170614021739.erkdifufziwiqjxp@sunbase.org \
    --to=sunny@sunbase.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jrnieder@gmail.com \
    --cc=pclouds@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).