# Test that the go command does not panic if it tries to read # a file from the cache that has an index entry, but is missing # an entry for the output. This test creates that situation by # running a go list (creating index and output cache entries for # the module index) and then removing just the output entries. [short] skip 'runs go build' go build -o roe$GOEXE ./remove_output_entries.go # populate new cache env GOCACHE=$WORK/newcache go list runtime # remove output entries and check the panic doesn't happen exec ./roe$GOEXE $WORK/newcache go list runtime -- remove_output_entries.go -- package main import ( "io/fs" "log" "os" "path/filepath" "strings" ) func main() { cachedir := os.Args[1] err := filepath.WalkDir(cachedir, func(path string, d fs.DirEntry, err error) error { if strings.HasSuffix(path, "-d") { // output entries end in "-d" if err := os.RemoveAll(path); err != nil { return err } } return nil }) if err != nil { log.Fatal(err) } }