summaryrefslogtreecommitdiffstats
path: root/src/cmd/go/testdata/script/gopath_install.txt
blob: 6c572eae619f067eac3ec44681314e1706a851f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Regression test for 'go install' locations in GOPATH mode.
env GO111MODULE=off
[short] skip

# Without $GOBIN set, binaries should be installed into the GOPATH bin directory.
env GOBIN=
rm $GOPATH/bin/go-cmd-test$GOEXE
go install go-cmd-test
exists $GOPATH/bin/go-cmd-test$GOEXE

# With $GOBIN set, binaries should be installed to $GOBIN.
env GOBIN=$WORK/bin1
mkdir -p $GOBIN
go install go-cmd-test
exists $GOBIN/go-cmd-test$GOEXE

# Issue 11065: installing to the current directory should create an executable.
cd go-cmd-test
env GOBIN=$PWD
go install
exists ./go-cmd-test$GOEXE
cd ..

# Without $GOBIN set, installing a program outside $GOPATH should fail
# (there is nowhere to install it).
env GOPATH= # reset to default ($HOME/go, which does not exist)
env GOBIN=
! go install go-cmd-test/helloworld.go
stderr '^go: no install location for \.go files listed on command line \(GOBIN not set\)$'

# With $GOBIN set, should install there.
env GOBIN=$WORK/bin1
go install go-cmd-test/helloworld.go
exists $GOBIN/helloworld$GOEXE

# We can't assume that we can write to GOROOT, because it may not be writable.
# However, we can check its install location using 'go list'.
# cmd/fix should be installed to GOROOT/pkg, not GOPATH/bin.
env GOPATH=$PWD
go list -f '{{.Target}}' cmd/fix
stdout $GOROOT'[/\\]pkg[/\\]tool[/\\]'$GOOS'_'$GOARCH'[/\\]fix'$GOEXE'$'

# GOBIN should not affect toolchain install locations.
env GOBIN=$WORK/bin1
go list -f '{{.Target}}' cmd/fix
stdout $GOROOT'[/\\]pkg[/\\]tool[/\\]'$GOOS'_'$GOARCH'[/\\]fix'$GOEXE'$'

-- go-cmd-test/helloworld.go --
package main

func main() {
	println("hello world")
}