On Thu, Jan 18, 2018 at 08:36:32PM +0700, Duy Nguyen wrote:
> On Thu, Jan 18, 2018 at 8:29 PM, Jeff King <[email protected]> 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 <[email protected]>
---
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< --