]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: avoid ssh known_hosts prompts on test
authorDaniel Martí <mvdan@mvdan.cc>
Sat, 5 Oct 2019 14:08:07 +0000 (15:08 +0100)
committerDaniel Martí <mvdan@mvdan.cc>
Sat, 5 Oct 2019 22:17:49 +0000 (22:17 +0000)
TestScripts/mod_get_svn would stop with the following prompt if the real
user didn't have vcs-test.golang.org in their known_hosts file:

The authenticity of host 'vcs-test.golang.org (35.184.38.56)' can't be established.
ECDSA key fingerprint is SHA256:[...]
Are you sure you want to continue connecting (yes/no/[fingerprint])?

This was bad because it relied on the user's real ssh known_hosts file.
Worse even, if the user didn't expert or notice the prompt, it could
hang a 'go test' run for quite a while.

Work around that by forcing svn to not use ssh at all. Other potentially
better approaches were tried, but none worked on svn 1.12.2 with openssh
8.0p1.

Fixes #33883.

Change-Id: I2f925fa892f2fa53c77d86b0034141162517ee69
Reviewed-on: https://go-review.googlesource.com/c/go/+/199142
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/go/testdata/script/mod_get_svn.txt

index cd19d99dbccbbf27076af73c02b417118291ebc2..1a5376dec0cb81f80415377cca37f565f2fa830c 100644 (file)
@@ -1,6 +1,19 @@
 [!net] skip
 [!exec:svn] skip
 
+# 'go get' will fall back to svn+ssh once svn fails over protocols like https.
+# If vcs-test.golang.org isn't in the user's known_hosts file, this will result
+# in an ssh prompt, which will stop 'go test' entirely
+#
+# Unfortunately, there isn't a way to globally disable host checking for ssh,
+# without modifying the real system's or user's configs. Changing $HOME won't
+# affect ssh either, as it ignores the environment variable entirely.
+#
+# However, a useful trick is pointing SVN_SSH to a program that doesn't exist,
+# resulting in svn skipping ssh entirely. Alternatives like
+# SVN_SSH="ssh -o StrictHostKeyChecking=no" didn't avoid the prompt.
+env SVN_SSH="svn_do_not_use_ssh"
+
 env GO111MODULE=on
 env GOPROXY=direct
 env GOSUMDB=off