# This test checks that VCS information is stamped into Go binaries by default, # controlled with -buildvcs. This test focuses on Subversion specifics. # The Git test covers common functionality. [!exec:svn] skip [!exec:svnadmin] 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 vcs.revision stdout '\s+mod\s+example.com/a\s+\(devel\)' 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 .svn env PATH=$WORK${/}fakebin${:}$oldpath chmod 0755 $WORK/fakebin/svn ! exec svn 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 .svn # Untagged repo. exec svnadmin create repo exec svn checkout file://$PWD/repo workingDir cd workingDir cp ../a/a.go . cp ../a/go.mod . cp ../README . exec svn status exec svn add a.go go.mod README exec svn commit -m 'initial commit' exec svn update go install go version -m $GOBIN/a$GOEXE stdout '^\tbuild\tvcs=svn$' stdout '^\tbuild\tvcs.revision=1$' stdout '^\tbuild\tvcs.time=' stdout '^\tbuild\tvcs.modified=false$' stdout '^\tmod\texample.com/a\tv0.0.0-\d+-\d+\t+' rm $GOBIN/a$GOEXE # Building with -buildvcs=false suppresses the info. go install -buildvcs=false go version -m $GOBIN/a$GOEXE ! stdout vcs.revision stdout '\s+mod\s+example.com/a\s+\(devel\)' rm $GOBIN/a$GOEXE # An untracked file is shown as uncommitted, even if it isn't part of the build. cp ../../outside/empty.txt extra.txt go install go version -m $GOBIN/a$GOEXE stdout '^\tbuild\tvcs.modified=true$' stdout '\s+mod\s+example.com/a\s+v0.0.0-\d+-\d+\+dirty\s+' rm extra.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$' stdout '\s+mod\s+example.com/a\s+v0.0.0-\d+-\d+\+dirty\s+' exec svn revert README rm $GOBIN/a$GOEXE -- $WORK/fakebin/svn -- #!/bin/sh exit 1 -- $WORK/fakebin/svn.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 --