# Test listing with overlays # Overlay in an existing directory go list -overlay overlay.json -f '{{.GoFiles}}' . stdout '^\[f.go\]$' # Overlays in a non-existing directory go list -overlay overlay.json -f '{{.GoFiles}}' ./dir stdout '^\[g.go\]$' # Overlays in an existing directory with already existing files go list -overlay overlay.json -f '{{.GoFiles}}' ./dir2 stdout '^\[h.go i.go\]$' # Overlay that removes a file from a directory ! go list ./dir3 # contains a file without a package statement go list -overlay overlay.json -f '{{.GoFiles}}' ./dir3 # overlay removes that file # Walking through an overlay go list -overlay overlay.json ./... cmp stdout want-list.txt # TODO(#39958): assembly files, C files, files that require cgo preprocessing -- want-list.txt -- m m/dir m/dir2 m/dir3 -- go.mod -- // TODO(#39958): Support and test overlays including go.mod itself (especially if mod=readonly) module m go 1.16 -- dir2/h.go -- package dir2 -- dir3/good.go -- package dir3 -- dir3/bad.go -- // no package statement -- overlay.json -- { "Replace": { "f.go": "overlay/f_go", "dir/g.go": "overlay/dir_g_go", "dir2/i.go": "overlay/dir2_i_go", "dir3/bad.go": "" } } -- overlay/f_go -- package m func f() { } -- overlay/dir_g_go -- package m func g() { } -- overlay/dir2_i_go -- package dir2