Text file src/cmd/go/testdata/script/list_issue_70600.txt

     1  # Test that the go command does not panic if it tries to read
     2  # a file from the cache that has an index entry, but is missing
     3  # an entry for the output. This test creates that situation by
     4  # running a go list (creating index and output cache entries for
     5  # the module index) and then removing just the output entries.
     6  
     7  [short] skip 'runs go build'
     8  
     9  go build -o roe$GOEXE ./remove_output_entries.go
    10  
    11  # populate new cache
    12  env GOCACHE=$WORK/newcache
    13  go list runtime
    14  
    15  # remove output entries and check the panic doesn't happen
    16  exec ./roe$GOEXE $WORK/newcache
    17  go list runtime
    18  
    19  -- remove_output_entries.go --
    20  package main
    21  
    22  import (
    23  	"io/fs"
    24  	"log"
    25  	"os"
    26  	"path/filepath"
    27  	"strings"
    28  )
    29  
    30  func main() {
    31  	cachedir := os.Args[1]
    32  	err := filepath.WalkDir(cachedir, func(path string, d fs.DirEntry, err error) error {
    33  		if strings.HasSuffix(path, "-d") { // output entries end in "-d"
    34  			if err := os.RemoveAll(path); err != nil {
    35  				return err
    36  			}
    37  		}
    38  		return nil
    39  	})
    40  	if err != nil {
    41  		log.Fatal(err)
    42  	}
    43  }

View as plain text