# This test checks that VCS information is stamped into Go binaries by default,
# controlled with -buildvcs. This test focuses on Fossil specifics.
# The Git test covers common functionality.

# "fossil" is the Fossil file server on Plan 9.
[plan9] skip
[!exec:fossil] skip
[short] skip
env GOBIN=$WORK/gopath/bin
env oldpath=$PATH
env HOME=$WORK
env USER=gopher
[!windows] env fslckout=.fslckout
[windows] env fslckout=_FOSSIL_
exec pwd
exec fossil init repo.fossil
cd repo/a

# If there's no local repository, there's no VCS info.
go install
go version -m $GOBIN/a$GOEXE
! stdout fossilrevision
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 $fslckout
env PATH=$WORK${/}fakebin${:}$oldpath
chmod 0755 $WORK/fakebin/fossil
! exec fossil 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 $fslckout

# Revision and commit time are tagged for repositories with commits.
exec fossil open ../repo.fossil -f
exec fossil add a README
exec fossil commit -m 'initial commit'
cd a
go install
go version -m $GOBIN/a$GOEXE
stdout '^\tbuild\tfossilrevision\t'
stdout '^\tbuild\tfossilcommittime\t'
stdout '^\tbuild\tfossiluncommitted\tfalse$'
rm $GOBIN/a$GOEXE

# Building with -buildvcs=false suppresses the info.
go install -buildvcs=false
go version -m $GOBIN/a$GOEXE
! stdout fossilrevision
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\tfossiluncommitted\ttrue$'
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\tfossiluncommitted\ttrue$'
exec fossil revert ../README
rm $GOBIN/a$GOEXE

-- $WORK/fakebin/fossil --
#!/bin/sh
exit 1
-- $WORK/fakebin/fossil.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 --
