| # This test checks that VCS information is stamped into Go binaries by default, |
| # controlled with -buildvcs. This test focuses on Bazaar specifics. |
| # The Git test covers common functionality. |
| |
| [!exec:bzr] skip |
| [short] skip |
| env GOBIN=$WORK/gopath/bin |
| env oldpath=$PATH |
| env HOME=$WORK |
| cd repo/a |
| exec bzr whoami 'J.R. Gopher <gopher@golang.org>' |
| |
| # If there's no local repository, there's no VCS info. |
| go install |
| go version -m $GOBIN/a$GOEXE |
| ! stdout bzrrevision |
| rm $GOBIN/a$GOEXE |
| |
| # If there is a repository, but it can't be used for some reason, |
| # there should be an error. It should hint about -buildvcs=false. |
| cd .. |
| mkdir .bzr |
| env PATH=$WORK${/}fakebin${:}$oldpath |
| chmod 0755 $WORK/fakebin/bzr |
| ! exec bzr help |
| cd a |
| ! go install |
| stderr '^error obtaining VCS status: exit status 1\n\tUse -buildvcs=false to disable VCS stamping.$' |
| rm $GOBIN/a$GOEXE |
| cd .. |
| env PATH=$oldpath |
| rm .bzr |
| |
| # If there is an empty repository in a parent directory, only "modified" is tagged. |
| exec bzr init |
| cd a |
| go install |
| go version -m $GOBIN/a$GOEXE |
| stdout '^\tbuild\tvcs=bzr$' |
| ! stdout vcs.revision |
| ! stdout vcs.time |
| stdout '^\tbuild\tvcs.modified=true$' |
| cd .. |
| |
| # Revision and commit time are tagged for repositories with commits. |
| exec bzr add a README |
| exec bzr commit -m 'initial commit' |
| cd a |
| go install |
| go version -m $GOBIN/a$GOEXE |
| stdout '^\tbuild\tvcs=bzr$' |
| stdout '^\tbuild\tvcs.revision=' |
| stdout '^\tbuild\tvcs.time=' |
| stdout '^\tbuild\tvcs.modified=false$' |
| rm $GOBIN/a$GOEXE |
| |
| # Building an earlier commit should still build clean. |
| cp ../../outside/empty.txt ../NEWS |
| exec bzr add ../NEWS |
| exec bzr commit -m 'add NEWS' |
| exec bzr update -r1 |
| go install |
| go version -m $GOBIN/a$GOEXE |
| stdout '^\tbuild\tvcs=bzr$' |
| stdout '^\tbuild\tvcs.revision=' |
| stdout '^\tbuild\tvcs.time=' |
| stdout '^\tbuild\tvcs.modified=false$' |
| |
| # Building with -buildvcs=false suppresses the info. |
| go install -buildvcs=false |
| go version -m $GOBIN/a$GOEXE |
| ! stdout vcs.revision |
| rm $GOBIN/a$GOEXE |
| |
| # An untracked file is shown as modified, even if it isn't part of the build. |
| cp ../../outside/empty.txt . |
| go install |
| go version -m $GOBIN/a$GOEXE |
| stdout '^\tbuild\tvcs.modified=true$' |
| rm empty.txt |
| rm $GOBIN/a$GOEXE |
| |
| # An edited file is shown as modified, even if it isn't part of the build. |
| cp ../../outside/empty.txt ../README |
| go install |
| go version -m $GOBIN/a$GOEXE |
| stdout '^\tbuild\tvcs.modified=true$' |
| exec bzr revert ../README |
| rm $GOBIN/a$GOEXE |
| |
| -- $WORK/fakebin/bzr -- |
| #!/bin/sh |
| exit 1 |
| -- $WORK/fakebin/bzr.bat -- |
| exit 1 |
| -- repo/README -- |
| Far out in the uncharted backwaters of the unfashionable end of the western |
| spiral arm of the Galaxy lies a small, unregarded yellow sun. |
| -- repo/a/go.mod -- |
| module example.com/a |
| |
| go 1.18 |
| -- repo/a/a.go -- |
| package main |
| |
| func main() {} |
| -- outside/empty.txt -- |