mirror of
https://github.com/golang/go
synced 2024-11-23 11:30:06 -07:00
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 <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
parent
b2ce3931d8
commit
c0e8e405c0
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
25
src/cmd/go/testdata/script/clean_cache_n.txt
vendored
Normal file
25
src/cmd/go/testdata/script/clean_cache_n.txt
vendored
Normal file
@ -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!")
|
||||
}
|
Loading…
Reference in New Issue
Block a user