From bf2ef26be3593d24487311576d85ec601185fbf4 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 11 Jul 2022 15:12:06 -0400 Subject: [PATCH] cmd/go: in script tests, avoid checking non-main packages for staleness Non-main packages in module mode should not be installed to GOPATH/pkg, but due to #37015 they were installed there anyway. Lacking a proper install location, 'go install' becomes a no-op for non-main packages in module mode. This change switches the 'go install' commands in the test_fuzz_cache and build_overlay tests to instead use 'go build', using the '-x' flag to check for compile commands instead of querying 'go list' about staleness. For #37015. Change-Id: I56d80cf2a43efb6163c62082c86cd3e4f0ff73c1 Reviewed-on: https://go-review.googlesource.com/c/go/+/417095 Run-TryBot: Bryan Mills TryBot-Result: Gopher Robot Auto-Submit: Bryan Mills Reviewed-by: Russ Cox --- src/cmd/go/testdata/script/build_overlay.txt | 20 +++++++++++-------- .../go/testdata/script/test_fuzz_cache.txt | 11 ++++------ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/cmd/go/testdata/script/build_overlay.txt b/src/cmd/go/testdata/script/build_overlay.txt index 56e812f44b..70cd7f8c7a 100644 --- a/src/cmd/go/testdata/script/build_overlay.txt +++ b/src/cmd/go/testdata/script/build_overlay.txt @@ -47,20 +47,24 @@ go build -overlay overlay.json -o main_call_asm$GOEXE ./call_asm exec ./main_call_asm$GOEXE ! stdout . -# Change the contents of a file in the overlay and ensure that makes the target stale -go install -overlay overlay.json ./test_cache -go list -overlay overlay.json -f '{{.Stale}}' ./test_cache -stdout '^false$' -cp overlay/test_cache_different.go overlay/test_cache.go -go list -overlay overlay.json -f '{{.Stale}}' ./test_cache -stdout '^true$' - [cgo] go list -compiled -overlay overlay.json -f '{{range .CompiledGoFiles}}{{. | printf "%s\n"}}{{end}}' ./cgo_hello_replace [cgo] cp stdout compiled_cgo_sources.txt [cgo] go run ../print_line_comments.go compiled_cgo_sources.txt [cgo] stdout $GOPATH[/\\]src[/\\]m[/\\]cgo_hello_replace[/\\]cgo_hello_replace.go [cgo] ! stdout $GOPATH[/\\]src[/\\]m[/\\]overlay[/\\]hello.c +# Change the contents of a file in the overlay and ensure that makes the target stale +env OLD_GOCACHE=$GOCACHE +env GOCACHE=$WORK/cache # use a fresh cache so that multiple runs of the test don't interfere +go build -x -overlay overlay.json ./test_cache +stderr '(compile|gccgo)( |\.exe).*test_cache.go' +go build -x -overlay overlay.json ./test_cache +! stderr '(compile|gccgo)( |\.exe).*test_cache.go' # cached +cp overlay/test_cache_different.go overlay/test_cache.go +go build -x -overlay overlay.json ./test_cache +stderr '(compile|gccgo)( |\.exe).*test_cache.go' # not cached +env CACHE=$OLD_GOCACHE + # Run same tests but with gccgo. env GO111MODULE=off [!exec:gccgo] stop diff --git a/src/cmd/go/testdata/script/test_fuzz_cache.txt b/src/cmd/go/testdata/script/test_fuzz_cache.txt index 552966b06b..19fb764add 100644 --- a/src/cmd/go/testdata/script/test_fuzz_cache.txt +++ b/src/cmd/go/testdata/script/test_fuzz_cache.txt @@ -17,15 +17,12 @@ go clean -cache exists $GOCACHE/fuzz # 'go clean -fuzzcache' should delete the fuzz cache but not the build cache. -go list -f {{.Stale}} ./empty -stdout true -go install ./empty -go list -f {{.Stale}} ./empty -stdout false +go build -x ./empty +stderr '(compile|gccgo)( |\.exe).*empty.go' go clean -fuzzcache ! exists $GOCACHE/fuzz -go list -f {{.Stale}} ./empty -stdout false +go build -x ./empty +! stderr '(compile|gccgo)( |\.exe).*empty.go' # Fuzzing indicates that one new interesting value was found with an empty # corpus, and the total size of the cache is now 1.