| # This test checks that VCS information is stamped into Go binaries by default, |
| # controlled with -buildvcs. This test focuses on Mercurial specifics. |
| # The Git test covers common functionality. |
| |
| [!exec:hg] skip |
| [short] skip |
| env GOBIN=$WORK/gopath/bin |
| env oldpath=$PATH |
| cd repo/a |
| |
| # If there's no local repository, there's no VCS info. |
| go install |
| go version -m $GOBIN/a$GOEXE |
| ! stdout hgrevision |
| 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 .hg |
| env PATH=$WORK${/}fakebin${:}$oldpath |
| chmod 0755 $WORK/fakebin/hg |
| ! exec hg 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 .hg |
| |
| # If there is an empty repository in a parent directory, only "uncommitted" is tagged. |
| exec hg init |
| cd a |
| go install |
| go version -m $GOBIN/a$GOEXE |
| ! stdout vcs.revision |
| ! stdout vcs.time |
| stdout '^\tbuild\tvcs.modified=true$' |
| cd .. |
| |
| # Revision and commit time are tagged for repositories with commits. |
| exec hg add a README |
| exec hg commit -m 'initial commit' |
| cd a |
| go install |
| go version -m $GOBIN/a$GOEXE |
| stdout '^\tbuild\tvcs.revision=' |
| stdout '^\tbuild\tvcs.time=' |
| stdout '^\tbuild\tvcs.modified=false$' |
| rm $GOBIN/a$GOEXE |
| |
| # Building with -buildvcs=false suppresses the info. |
| go install -buildvcs=false |
| go version -m $GOBIN/a$GOEXE |
| ! stdout hgrevision |
| rm $GOBIN/a$GOEXE |
| |
| # An untracked file is shown as uncommitted, 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 uncommitted, 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 hg revert ../README |
| rm $GOBIN/a$GOEXE |
| |
| -- $WORK/fakebin/hg -- |
| #!/bin/sh |
| exit 1 |
| -- $WORK/fakebin/hg.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 -- |