On Thu, Jan 18, 2018 at 08:36:32PM +0700, Duy Nguyen wrote: > On Thu, Jan 18, 2018 at 8:29 PM, Jeff King <peff@xxxxxxxx> wrote: > > On Thu, Jan 18, 2018 at 07:47:50PM +0700, Duy Nguyen wrote: > > > >> I may need help getting that log (or even better the trash directory > >> of t1700). I tried -m32 build, then valgrind on amd64 (because it > >> didn't work with my 32 build), running the tests with dash and even > >> the linux32 docker version that comes with "ci" directory. Everything > >> worked for me. > > > > It fails for me locally if I run it in the linux32 docker environment. > > Here's the end of the "-v -x" output: > > > > + GIT_INDEX_FILE=/usr/src/git/t/trash directory.t1700-split-index/new-index git -C ro update-index --split-index > > + chmod -R u+w ro > > + rm ro/.git/sharedindex.bbdf63f5a51242904dba2ea929ea4f56fcc340b6 > > + GIT_INDEX_FILE=new-index git ls-files > > fatal: .git/sharedindex.bbdf63f5a51242904dba2ea929ea4f56fcc340b6: index file open failed: No such file or directory > > error: last command exited with $?=128 > > not ok 23 - graceful handling splitting index is not allowed > > > > I don't know if the trash state will be helpful, but it's attached. > > Thanks. Somehow my way of forcing mks_tempfile() to fail, well.. > failed in this environment. I see the same output if I remove "chmod > -R u-w ro". I think I have enough to continue from here. The test suite was run as root, no wonder why my removing write access has no effect. I got the test to pass with this, but then it fails with Can't write .prove (Permission denied) at /usr/share/perl/5.22/App/Prove.pm line 542. Some more chown'ing or chmod'ing is required.... -- 8< -- Subject: [PATCH] ci: don't accidentally run the test suite as root This script assigns and adds a user named "ci" in a subshell so the outer CI_USER is not affected. For some reason, CI_USER is actually empty on Travis linux32 builds. This makes the following "su" useless and the test suite is run as root. Some tests may expect file/dir permissions to be respected. But root rules all and ignores all. That could make tests fail. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- ci/run-linux32-build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/run-linux32-build.sh b/ci/run-linux32-build.sh index c19c50c1c9..92b488ff27 100755 --- a/ci/run-linux32-build.sh +++ b/ci/run-linux32-build.sh @@ -21,8 +21,8 @@ linux32 --32bit i386 sh -c ' # If a host user id is given, then create a user "ci" with the host user # id to make everything accessible to the host user. HOST_UID=$1 && -CI_USER=$USER && -test -z $HOST_UID || (CI_USER="ci" && useradd -u $HOST_UID $CI_USER) && +CI_USER=${USER:-ci} && +test -z "$HOST_UID" || useradd -u $HOST_UID $CI_USER && # Build and test linux32 --32bit i386 su -m -l $CI_USER -c ' -- 2.16.0.47.g5ff498d35b -- 8< --