# Tests for the telemetry subcommand,

# The script test framework sets TEST_TELEMETRY_DIR (overriding the
# default telemetry dir location) and then checks that at least one
# counter has been written per script tests.
# Run go before unsetting TEST_TELEMETRY_DIR to make the tests happy.
# We want to unset it so the environment we're testing is as close
# to a user's environment.
go help telemetry
env TEST_TELEMETRY_DIR=

# Set userconfig dir, which is determined by os.UserConfigDir.
# The telemetry dir is determined using that.
mkdir $WORK/userconfig
env AppData=$WORK\userconfig # windows
[GOOS:windows] env userconfig=$AppData
env HOME=$WORK/userconfig # darwin,unix,ios
[GOOS:darwin] env userconfig=$HOME'/Library/Application Support'
[GOOS:ios] env userconfig=$HOME'/Library/Application Support'
[!GOOS:windows] [!GOOS:darwin] [!GOOS:ios] [!GOOS:plan9] env userconfig=$HOME/.config
env home=$WORK/userconfig # plan9
[GOOS:plan9] env userconfig=$home/lib

go telemetry
stdout 'local'

go telemetry off
go telemetry
stdout 'off'
go env GOTELEMETRY
stdout 'off'

go telemetry local
go telemetry
stdout 'local'
go env GOTELEMETRY
stdout 'local'

go telemetry on
go telemetry
stdout 'on'
go env GOTELEMETRY
stdout 'on'

go env
stdout 'GOTELEMETRY=''?on''?'
stdout 'GOTELEMETRYDIR=''?'$userconfig'[\\/]go[\\/]telemetry''?'
! go env -w GOTELEMETRY=off
stderr '^go: GOTELEMETRY cannot be modified$'
! go env -w GOTELEMETRYDIR=foo
stderr '^go: GOTELEMETRYDIR cannot be modified$'

# Test issue #69269: 'go telemetry off' should not increment counters.
# Establish that previous commands did write telemetry files.
# Only check for the existence of telemetry data on supported platforms.
[!GOOS:openbsd] [!GOOS:solaris] [!GOOS:android] [!GOOS:illumos] [!GOOS:js] [!GOOS:wasip1] [!GOOS:plan9] [!GOARCH:mips] [!GOARCH:mipsle] exists $userconfig/go/telemetry/local
# Now check for go telemetry off behavior.
rm $userconfig/go/telemetry/local
go telemetry off
! exists $userconfig/go/telemetry/local
# Check for the behavior with -C, the only flag 'go telemetry off' can take.
go telemetry local
go -C $WORK telemetry off
! exists $userconfig/go/telemetry/local
go telemetry local
go telemetry -C=$WORK off
! exists $userconfig/go/telemetry/local
go telemetry local
go help telemetry
[!GOOS:openbsd] [!GOOS:solaris] [!GOOS:android] [!GOOS:illumos] [!GOOS:js] [!GOOS:wasip1] [!GOOS:plan9] [!GOARCH:mips] [!GOARCH:mipsle] exists $userconfig/go/telemetry/local
