From a135f8e251120e89520bb2c226266b8256f81de0 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 18 Jul 2022 17:01:20 -0400 Subject: [PATCH] cmd/go: convert TestAccidentalGitCheckout to a script test As far as I can determine, this is the only existing non-script test that relies on vcs-test.golang.org. I am attempting to eliminate the vcs-test server, and to keep configuration straightforward I would like to only set up its replacement for script tests. For #27494. Change-Id: Ib978228b9c3f403af5f1c445e08942cbe7915b62 Reviewed-on: https://go-review.googlesource.com/c/go/+/418103 Reviewed-by: Ian Lance Taylor TryBot-Result: Gopher Robot Auto-Submit: Bryan Mills Run-TryBot: Bryan Mills --- src/cmd/go/go_test.go | 23 ------------------- src/cmd/go/testdata/script/get_issue22125.txt | 14 +++++++++++ 2 files changed, 14 insertions(+), 23 deletions(-) create mode 100644 src/cmd/go/testdata/script/get_issue22125.txt diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index d573a7aecc8..a96ff1e3228 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -1042,29 +1042,6 @@ func TestGetGitDefaultBranch(t *testing.T) { tg.grepStdout(`\* another-branch`, "not on correct default branch") } -// Security issue. Don't disable. See golang.org/issue/22125. -func TestAccidentalGitCheckout(t *testing.T) { - testenv.MustHaveExternalNetwork(t) - testenv.MustHaveExecPath(t, "git") - testenv.MustHaveExecPath(t, "svn") - - tg := testgo(t) - defer tg.cleanup() - tg.parallel() - tg.tempDir("src") - - tg.setenv("GOPATH", tg.path(".")) - - tg.runFail("get", "-u", "vcs-test.golang.org/go/test1-svn-git") - tg.grepStderr("src[\\\\/]vcs-test.* uses git, but parent .*src[\\\\/]vcs-test.* uses svn", "get did not fail for right reason") - - if _, err := os.Stat(tg.path("SrC")); err == nil { - // This case only triggers on a case-insensitive file system. - tg.runFail("get", "-u", "vcs-test.golang.org/go/test2-svn-git/test2main") - tg.grepStderr("src[\\\\/]vcs-test.* uses git, but parent .*src[\\\\/]vcs-test.* uses svn", "get did not fail for right reason") - } -} - func TestPackageMainTestCompilerFlags(t *testing.T) { tg := testgo(t) defer tg.cleanup() diff --git a/src/cmd/go/testdata/script/get_issue22125.txt b/src/cmd/go/testdata/script/get_issue22125.txt new file mode 100644 index 00000000000..6fdbe81cd30 --- /dev/null +++ b/src/cmd/go/testdata/script/get_issue22125.txt @@ -0,0 +1,14 @@ +# This test verifies a fix for a security issue; see https://go.dev/issue/22125. + +[!net] skip +[!exec:git] skip +[!exec:svn] skip + +env GO111MODULE=off + +cd $GOPATH +! go get -u vcs-test.golang.org/go/test1-svn-git +stderr 'src'${/}'vcs-test.* uses git, but parent .*src'${/}'vcs-test.* uses svn' + +[!case-sensitive] ! go get -u vcs-test.golang.org/go/test2-svn-git/test2main +[!case-sensitive] stderr 'src'${/}'vcs-test.* uses git, but parent .*src'${/}'vcs-test.* uses svn'