From 54514c6b2896c6a634a7b8017ade909985172e4d Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Mon, 25 Jan 2021 10:34:28 -0500 Subject: [PATCH] cmd/go: fix TestScript/cgo_path, cgo_path_space when CC set 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 TryBot-Result: Go Bot Trust: Jay Conrod Reviewed-by: Bryan C. Mills --- src/cmd/go/testdata/script/cgo_path.txt | 7 +++++ src/cmd/go/testdata/script/cgo_path_space.txt | 27 ++++++++++--------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/cmd/go/testdata/script/cgo_path.txt b/src/cmd/go/testdata/script/cgo_path.txt index 98c56ff40ecee..be9609e86f0dd 100644 --- a/src/cmd/go/testdata/script/cgo_path.txt +++ b/src/cmd/go/testdata/script/cgo_path.txt @@ -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 diff --git a/src/cmd/go/testdata/script/cgo_path_space.txt b/src/cmd/go/testdata/script/cgo_path_space.txt index 6d203b04d61c8..654295dc692d9 100644 --- a/src/cmd/go/testdata/script/cgo_path_space.txt +++ b/src/cmd/go/testdata/script/cgo_path_space.txt @@ -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 @@ -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 @@ -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 @@ -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