1 # This test checks that VCS information is stamped into Go binaries by default,
2 # controlled with -buildvcs. This test focuses on Fossil specifics.
3 # The Git test covers common functionality.
4
5 # "fossil" is the Fossil file server on Plan 9.
6 [GOOS:plan9] skip
7 [!exec:fossil] skip
8 [short] skip
9 env GOBIN=$WORK/gopath/bin
10 env oldpath=$PATH
11 env HOME=$WORK
12 env USER=gopher
13 [!GOOS:windows] env fslckout=.fslckout
14 [GOOS:windows] env fslckout=_FOSSIL_
15 exec pwd
16 exec fossil init repo.fossil
17 cd repo/a
18
19 # If there's no local repository, there's no VCS info.
20 go install
21 go version -m $GOBIN/a$GOEXE
22 ! stdout vcs.revision
23 rm $GOBIN/a$GOEXE
24
25 # If there is a repository, but it can't be used for some reason,
26 # there should be an error. It should hint about -buildvcs=false.
27 cd ..
28 mv fslckout $fslckout
29 env PATH=$WORK${/}fakebin${:}$oldpath
30 chmod 0755 $WORK/fakebin/fossil
31 ! exec fossil help
32 cd a
33 ! go install
34 stderr '^error obtaining VCS status: exit status 1\n\tUse -buildvcs=false to disable VCS stamping.$'
35 rm $GOBIN/a$GOEXE
36 cd ..
37 env PATH=$oldpath
38 rm $fslckout
39
40 # Revision and commit time are tagged for repositories with commits.
41 exec fossil open ../repo.fossil -f
42 exec fossil add a README
43 exec fossil commit -m 'initial commit'
44 cd a
45 go install
46 go version -m $GOBIN/a$GOEXE
47 stdout '^\tbuild\tvcs=fossil\n'
48 stdout '^\tbuild\tvcs.revision='
49 stdout '^\tbuild\tvcs.time='
50 stdout '^\tbuild\tvcs.modified=false$'
51 rm $GOBIN/a$GOEXE
52
53 # Building with -buildvcs=false suppresses the info.
54 go install -buildvcs=false
55 go version -m $GOBIN/a$GOEXE
56 ! stdout vcs.revision
57 rm $GOBIN/a$GOEXE
58
59 # An untracked file is shown as modified, even if it isn't part of the build.
60 cp ../../outside/empty.txt .
61 go install
62 go version -m $GOBIN/a$GOEXE
63 stdout '^\tbuild\tvcs=fossil\n'
64 stdout '^\tbuild\tvcs.modified=true$'
65 rm empty.txt
66 rm $GOBIN/a$GOEXE
67
68 # An edited file is shown as modified, even if it isn't part of the build.
69 cp ../../outside/empty.txt ../README
70 go install
71 go version -m $GOBIN/a$GOEXE
72 stdout '^\tbuild\tvcs=fossil\n'
73 stdout '^\tbuild\tvcs.modified=true$'
74 exec fossil revert ../README
75 rm $GOBIN/a$GOEXE
76
77 -- $WORK/fakebin/fossil --
78 #!/bin/sh
79 exit 1
80 -- $WORK/fakebin/fossil.bat --
81 exit 1
82 -- repo/README --
83 Far out in the uncharted backwaters of the unfashionable end of the western
84 spiral arm of the Galaxy lies a small, unregarded yellow sun.
85 -- repo/fslckout --
86 -- repo/a/go.mod --
87 module example.com/a
88
89 go 1.18
90 -- repo/a/a.go --
91 package main
92
93 func main() {}
94 -- outside/empty.txt --
95
View as plain text