Skip to content

Commit

Permalink
cmd/go: fix TestScript/cgo_path, cgo_path_space when CC set
Browse files Browse the repository at this point in the history
These tests failed if CC was set to a path containing a separator
during make.bash. They now set CC explicitly.

Fixes #43897

Change-Id: Ic6e7f192fcb363f0ac9f45b329113255453bf76f
Reviewed-on: https://go-review.googlesource.com/c/go/+/286292
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Trust: Jay Conrod <jayconrod@google.com>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
  • Loading branch information
Jay Conrod committed Jan 25, 2021
1 parent 6de8443 commit 54514c6
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
7 changes: 7 additions & 0 deletions src/cmd/go/testdata/script/cgo_path.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
[!cgo] skip

# Set CC explicitly to something that requires a PATH lookup.
# Normally, the default is gcc or clang, but if CC was set during make.bash,
# that becomes the default.
[exec:clang] env CC=clang
[exec:gcc] env CC=gcc
[!exec:clang] [!exec:gcc] skip 'Unknown C compiler'

env GOCACHE=$WORK/gocache # Looking for compile flags, so need a clean cache.
[!windows] env PATH=.:$PATH
[!windows] chmod 0755 p/gcc p/clang
Expand Down
27 changes: 14 additions & 13 deletions src/cmd/go/testdata/script/cgo_path_space.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# Check that if the PATH directory containing the C compiler has a space,
# we can still use that compiler with cgo.
# Verifies #43808.

[!cgo] skip

# Check if default CC was set by make.bash.
# If it was, this test is not valid.
go env CC
stdout '^(clang|gcc)$'
# Set CC explicitly to something that requires a PATH lookup.
# Normally, the default is gcc or clang, but if CC was set during make.bash,
# that becomes the default.
[exec:clang] env CC=clang
[exec:gcc] env CC=gcc
[!exec:clang] [!exec:gcc] skip 'Unknown C compiler'

[!windows] chmod 0755 $WORK/'program files'/clang
[!windows] chmod 0755 $WORK/'program files'/gcc
Expand All @@ -18,10 +19,10 @@ stdout '^(clang|gcc)$'
[windows] exists -exec $WORK/'program files'/clang.bat
[windows] env PATH=$WORK\'program files';%PATH%

! exists log.txt
! exists $WORK/log.txt
? go build -x
exists log.txt
rm log.txt
exists $WORK/log.txt
rm $WORK/log.txt

# TODO(#41400, #43078): when CC is set explicitly, it should be allowed to
# contain spaces separating arguments, and it should be possible to quote
Expand All @@ -30,7 +31,7 @@ rm log.txt
[!windows] env CC=$WORK/'program files'/gcc
[windows] env CC=$WORK\'program files'\gcc.bat
! go build -x
! exists log.txt
! exists $WORK/log.txt

-- go.mod --
module m
Expand All @@ -44,12 +45,12 @@ import "C"
-- $WORK/program files/gcc --
#!/bin/sh

echo ok >log.txt
echo ok >$WORK/log.txt
-- $WORK/program files/clang --
#!/bin/sh

echo ok >log.txt
echo ok >$WORK/log.txt
-- $WORK/program files/gcc.bat --
echo ok >log.txt
echo ok >%WORK%\log.txt
-- $WORK/program files/clang.bat --
echo ok >log.txt
echo ok >%WORK%\log.txt

0 comments on commit 54514c6

Please sign in to comment.