| # Regression test for #60939: when 'go tool dist' is missing, |
| # 'go tool dist list' should inject its output. |
| |
| |
| # Set GOROOT to a directory that definitely does not include |
| # a compiled 'dist' tool. 'go tool dist list' should still |
| # work, because 'cmd/go' itself can impersonate this command. |
| |
| mkdir $WORK/goroot/bin |
| mkdir $WORK/goroot/pkg/tool/${GOOS}_${GOARCH} |
| env GOROOT=$WORK/goroot |
| |
| ! go tool -n dist |
| stderr 'go: no such tool "dist"' |
| |
| go tool dist list |
| stdout linux/amd64 |
| cp stdout tool.txt |
| |
| go tool dist list -v |
| stdout linux/amd64 |
| cp stdout tool-v.txt |
| |
| go tool dist list -broken |
| stdout $GOOS/$GOARCH |
| cp stdout tool-broken.txt |
| |
| go tool dist list -json |
| stdout '"GOOS": "linux",\n\s*"GOARCH": "amd64",\n' |
| cp stdout tool-json.txt |
| |
| go tool dist list -json -broken |
| stdout '"GOOS": "'$GOOS'",\n\s*"GOARCH": "'$GOARCH'",\n' |
| cp stdout tool-json-broken.txt |
| |
| [short] stop |
| |
| |
| # Check against the real cmd/dist as the source of truth. |
| |
| env GOROOT=$TESTGO_GOROOT |
| go build -o dist.exe cmd/dist |
| |
| exec ./dist.exe list |
| cmp stdout tool.txt |
| |
| exec ./dist.exe list -v |
| cmp stdout tool-v.txt |
| |
| exec ./dist.exe list -broken |
| cmp stdout tool-broken.txt |
| |
| exec ./dist.exe list -json |
| cmp stdout tool-json.txt |
| |
| exec ./dist.exe list -json -broken |
| cmp stdout tool-json-broken.txt |