From: Paschalis Tsilias Date: Tue, 26 May 2020 14:45:11 +0000 (+0300) Subject: cmd/go: clean -cache -n should not delete cache X-Git-Tag: go1.15beta1~104 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c0e8e405c02388fb8e7d3bea092f5aa8b19b2ad9;p=gostls13.git cmd/go: clean -cache -n should not delete cache Uses the `cfg.BuildN` flag to avoid deleting inside the `if cleanCache` block. Introduces a test in src/cmd/go/testdata/script. Fixes #39250 Change-Id: I857c441b1d7aa7c68cfd646d6833e6eaca5b18d1 Reviewed-on: https://go-review.googlesource.com/c/go/+/235140 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- diff --git a/src/cmd/go/internal/clean/clean.go b/src/cmd/go/internal/clean/clean.go index d5028de970..99704cb2b1 100644 --- a/src/cmd/go/internal/clean/clean.go +++ b/src/cmd/go/internal/clean/clean.go @@ -137,20 +137,27 @@ func runClean(cmd *base.Command, args []string) { if cfg.BuildN || cfg.BuildX { b.Showcmd("", "rm -r %s", strings.Join(subdirs, " ")) } - for _, d := range subdirs { - // Only print the first error - there may be many. - // This also mimics what os.RemoveAll(dir) would do. - if err := os.RemoveAll(d); err != nil && !printedErrors { - printedErrors = true - base.Errorf("go clean -cache: %v", err) + if !cfg.BuildN { + for _, d := range subdirs { + // Only print the first error - there may be many. + // This also mimics what os.RemoveAll(dir) would do. + if err := os.RemoveAll(d); err != nil && !printedErrors { + printedErrors = true + base.Errorf("go clean -cache: %v", err) + } } } } logFile := filepath.Join(dir, "log.txt") - if err := os.RemoveAll(logFile); err != nil && !printedErrors { - printedErrors = true - base.Errorf("go clean -cache: %v", err) + if cfg.BuildN || cfg.BuildX { + b.Showcmd("", "rm -f %s", logFile) + } + if !cfg.BuildN { + if err := os.RemoveAll(logFile); err != nil && !printedErrors { + printedErrors = true + base.Errorf("go clean -cache: %v", err) + } } } } diff --git a/src/cmd/go/testdata/script/clean_cache_n.txt b/src/cmd/go/testdata/script/clean_cache_n.txt new file mode 100644 index 0000000000..4497b36bc3 --- /dev/null +++ b/src/cmd/go/testdata/script/clean_cache_n.txt @@ -0,0 +1,25 @@ +# We're testing cache behavior, so start with a clean GOCACHE. +env GOCACHE=$WORK/cache + +# Build something so that the cache gets populates +go build main.go + +# Check that cache contains directories before running +exists $GOCACHE/00 + +# Run go clean -cache -n and ensure that directories weren't deleted +go clean -cache -n +exists $GOCACHE/00 + +# Re-run go clean cache without the -n flag go ensure that directories were properly removed +go clean -cache +! exists $GOCACHE/00 + +-- main.go -- +package main + +import "fmt" + +func main() { + fmt.Println("hello!") +}