# 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 ' # 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 --