mirror of https://github.com/golang/go.git
all: replace build tags in tests with testenv helper
Many tool features, particularly modules-related, require particular Go versions. Build tags are unwieldy, requiring one-off test files which break up test organization. Add a suite of testenv functions that check what Go version is in use. Note that this is the logical Go version, as denoted by the release tags; it should be updated at the beginning of the release cycle per issue golang/go#38704. For ease of reviewing, I'll merge/delete files in a followup CL. Change-Id: Id85ce0f83387b3c45d68465161cf88447325d4f2 Reviewed-on: https://go-review.googlesource.com/c/tools/+/234882 Run-TryBot: Heschi Kreinick <heschi@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
7527cb292c
commit
8e7acdbce8
|
|
@ -2,8 +2,6 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.11
|
|
||||||
|
|
||||||
package gcimporter
|
package gcimporter
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -11,6 +9,8 @@ import (
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
var importedObjectTests = []struct {
|
var importedObjectTests = []struct {
|
||||||
|
|
@ -38,6 +38,7 @@ var importedObjectTests = []struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestImportedTypes(t *testing.T) {
|
func TestImportedTypes(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 11)
|
||||||
skipSpecialPlatforms(t)
|
skipSpecialPlatforms(t)
|
||||||
|
|
||||||
// This package only handles gc export data.
|
// This package only handles gc export data.
|
||||||
|
|
@ -112,6 +113,7 @@ func verifyInterfaceMethodRecvs(t *testing.T, named *types.Named, level int) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func TestIssue25301(t *testing.T) {
|
func TestIssue25301(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 11)
|
||||||
skipSpecialPlatforms(t)
|
skipSpecialPlatforms(t)
|
||||||
|
|
||||||
// This package only handles gc export data.
|
// This package only handles gc export data.
|
||||||
|
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !go1.11
|
|
||||||
|
|
||||||
package packages_test
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
usesOldGolist = true
|
|
||||||
}
|
|
||||||
|
|
@ -2,8 +2,6 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.14
|
|
||||||
|
|
||||||
package packages_test
|
package packages_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -13,13 +11,14 @@ import (
|
||||||
|
|
||||||
"golang.org/x/tools/go/packages"
|
"golang.org/x/tools/go/packages"
|
||||||
"golang.org/x/tools/go/packages/packagestest"
|
"golang.org/x/tools/go/packages/packagestest"
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
// These tests check fixes that are only available in Go 1.14.
|
// These tests check fixes that are only available in Go 1.14.
|
||||||
// They can be moved into packages_test.go when we no longer support 1.13.
|
|
||||||
// See golang/go#35973 for more information.
|
// See golang/go#35973 for more information.
|
||||||
func TestInvalidFilesInOverlay(t *testing.T) { packagestest.TestAll(t, testInvalidFilesInOverlay) }
|
func TestInvalidFilesInOverlay(t *testing.T) { packagestest.TestAll(t, testInvalidFilesInOverlay) }
|
||||||
func testInvalidFilesInOverlay(t *testing.T, exporter packagestest.Exporter) {
|
func testInvalidFilesInOverlay(t *testing.T, exporter packagestest.Exporter) {
|
||||||
|
testenv.NeedsGo1Point(t, 14)
|
||||||
exported := packagestest.Export(t, exporter, []packagestest.Module{
|
exported := packagestest.Export(t, exporter, []packagestest.Module{
|
||||||
{
|
{
|
||||||
Name: "golang.org/fake",
|
Name: "golang.org/fake",
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.15
|
|
||||||
|
|
||||||
package packages_test
|
package packages_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -16,10 +14,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestInvalidFilesInXTest checks the fix for golang/go#37971.
|
// TestInvalidFilesInXTest checks the fix for golang/go#37971.
|
||||||
func TestInvalidFilesInXTest(t *testing.T) {
|
func TestInvalidFilesInXTest(t *testing.T) { packagestest.TestAll(t, testInvalidFilesInXTest) }
|
||||||
packagestest.TestAll(t, testInvalidFilesInXTest)
|
|
||||||
}
|
|
||||||
func testInvalidFilesInXTest(t *testing.T, exporter packagestest.Exporter) {
|
func testInvalidFilesInXTest(t *testing.T, exporter packagestest.Exporter) {
|
||||||
|
testenv.NeedsGo1Point(t, 15)
|
||||||
exported := packagestest.Export(t, exporter, []packagestest.Module{
|
exported := packagestest.Export(t, exporter, []packagestest.Module{
|
||||||
{
|
{
|
||||||
Name: "golang.org/fake",
|
Name: "golang.org/fake",
|
||||||
|
|
@ -44,11 +41,9 @@ func testInvalidFilesInXTest(t *testing.T, exporter packagestest.Exporter) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTypecheckCgo(t *testing.T) {
|
func TestTypecheckCgo(t *testing.T) { packagestest.TestAll(t, testTypecheckCgo) }
|
||||||
packagestest.TestAll(t, testTypecheckCgo)
|
|
||||||
}
|
|
||||||
|
|
||||||
func testTypecheckCgo(t *testing.T, exporter packagestest.Exporter) {
|
func testTypecheckCgo(t *testing.T, exporter packagestest.Exporter) {
|
||||||
|
testenv.NeedsGo1Point(t, 15)
|
||||||
testenv.NeedsTool(t, "cgo")
|
testenv.NeedsTool(t, "cgo")
|
||||||
|
|
||||||
const cgo = `package cgo
|
const cgo = `package cgo
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build go1.11
|
|
||||||
|
|
||||||
package packagestest_test
|
package packagestest_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -11,9 +9,11 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"golang.org/x/tools/go/packages/packagestest"
|
"golang.org/x/tools/go/packages/packagestest"
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestModulesExport(t *testing.T) {
|
func TestModulesExport(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 11)
|
||||||
exported := packagestest.Export(t, packagestest.Modules, testdata)
|
exported := packagestest.Export(t, packagestest.Modules, testdata)
|
||||||
defer exported.Cleanup()
|
defer exported.Cleanup()
|
||||||
// Check that the cfg contains all the right bits
|
// Check that the cfg contains all the right bits
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
// +build go1.12
|
|
||||||
|
|
||||||
package imports
|
package imports
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Tests that we handle GO111MODULE=on with no go.mod file. See #30855.
|
// Tests that we handle GO111MODULE=on with no go.mod file. See #30855.
|
||||||
func TestNoMainModule(t *testing.T) {
|
func TestNoMainModule(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 12)
|
||||||
mt := setup(t, `
|
mt := setup(t, `
|
||||||
-- x.go --
|
-- x.go --
|
||||||
package x
|
package x
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
// +build go1.14
|
|
||||||
|
|
||||||
package imports
|
package imports
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestModVendorAuto_114(t *testing.T) {
|
func TestModVendorAuto_114(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 14)
|
||||||
testModVendorAuto(t, true)
|
testModVendorAuto(t, true)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
// +build !go1.14
|
|
||||||
|
|
||||||
package imports
|
package imports
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestModVendorAuto_Pre114(t *testing.T) {
|
func TestModVendorAuto_Pre114(t *testing.T) {
|
||||||
|
testenv.SkipAfterGo1Point(t, 13)
|
||||||
testModVendorAuto(t, false)
|
testModVendorAuto(t, false)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
// +build go1.11
|
|
||||||
|
|
||||||
package imports
|
package imports
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -21,6 +19,7 @@ import (
|
||||||
"golang.org/x/mod/module"
|
"golang.org/x/mod/module"
|
||||||
"golang.org/x/tools/internal/gocommand"
|
"golang.org/x/tools/internal/gocommand"
|
||||||
"golang.org/x/tools/internal/gopathwalk"
|
"golang.org/x/tools/internal/gopathwalk"
|
||||||
|
"golang.org/x/tools/internal/proxydir"
|
||||||
"golang.org/x/tools/internal/testenv"
|
"golang.org/x/tools/internal/testenv"
|
||||||
"golang.org/x/tools/txtar"
|
"golang.org/x/tools/txtar"
|
||||||
)
|
)
|
||||||
|
|
@ -647,6 +646,7 @@ type modTest struct {
|
||||||
// in testdata/mod, along the lines of TestScript in cmd/go.
|
// in testdata/mod, along the lines of TestScript in cmd/go.
|
||||||
func setup(t *testing.T, main, wd string) *modTest {
|
func setup(t *testing.T, main, wd string) *modTest {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
testenv.NeedsGo1Point(t, 11)
|
||||||
testenv.NeedsTool(t, "go")
|
testenv.NeedsTool(t, "go")
|
||||||
|
|
||||||
proxyOnce.Do(func() {
|
proxyOnce.Do(func() {
|
||||||
|
|
@ -674,7 +674,7 @@ func setup(t *testing.T, main, wd string) *modTest {
|
||||||
GOROOT: build.Default.GOROOT,
|
GOROOT: build.Default.GOROOT,
|
||||||
GOPATH: filepath.Join(dir, "gopath"),
|
GOPATH: filepath.Join(dir, "gopath"),
|
||||||
GO111MODULE: "on",
|
GO111MODULE: "on",
|
||||||
GOPROXY: proxyDirToURL(proxyDir),
|
GOPROXY: proxydir.ToURL(proxyDir),
|
||||||
GOSUMDB: "off",
|
GOSUMDB: "off",
|
||||||
WorkingDir: filepath.Join(mainDir, wd),
|
WorkingDir: filepath.Join(mainDir, wd),
|
||||||
GocmdRunner: &gocommand.Runner{},
|
GocmdRunner: &gocommand.Runner{},
|
||||||
|
|
@ -834,6 +834,7 @@ import _ "rsc.io/quote"
|
||||||
|
|
||||||
// Tests that crud in the module cache is ignored.
|
// Tests that crud in the module cache is ignored.
|
||||||
func TestInvalidModCache(t *testing.T) {
|
func TestInvalidModCache(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 11)
|
||||||
dir, err := ioutil.TempDir("", t.Name())
|
dir, err := ioutil.TempDir("", t.Name())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
|
|
@ -920,6 +921,7 @@ import _ "rsc.io/quote"
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkScanModCache(b *testing.B) {
|
func BenchmarkScanModCache(b *testing.B) {
|
||||||
|
testenv.NeedsGo1Point(b, 11)
|
||||||
env := &ProcessEnv{
|
env := &ProcessEnv{
|
||||||
GOPATH: build.Default.GOPATH,
|
GOPATH: build.Default.GOPATH,
|
||||||
GOROOT: build.Default.GOROOT,
|
GOROOT: build.Default.GOROOT,
|
||||||
|
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
// +build !go1.13
|
|
||||||
|
|
||||||
// Copyright 2019 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package imports
|
|
||||||
|
|
||||||
import "path/filepath"
|
|
||||||
|
|
||||||
// TODO: use proxy functionality in golang.org/x/tools/go/packages/packagestest
|
|
||||||
// instead of copying it here.
|
|
||||||
|
|
||||||
func proxyDirToURL(dir string) string {
|
|
||||||
// Prior to go1.13, the Go command on Windows only accepted GOPROXY file URLs
|
|
||||||
// of the form file://C:/path/to/proxy. This was incorrect: when parsed, "C:"
|
|
||||||
// is interpreted as the host. See golang.org/issue/6027. This has been
|
|
||||||
// fixed in go1.13, but we emit the old format for old releases.
|
|
||||||
return "file://" + filepath.ToSlash(dir)
|
|
||||||
}
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
// +build go1.13
|
|
||||||
|
|
||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package imports
|
|
||||||
|
|
||||||
import (
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// TODO: use proxy functionality in golang.org/x/tools/go/packages/packagestest
|
|
||||||
// instead of copying it here.
|
|
||||||
|
|
||||||
func proxyDirToURL(dir string) string {
|
|
||||||
// file URLs on Windows must start with file:///. See golang.org/issue/6027.
|
|
||||||
path := filepath.ToSlash(dir)
|
|
||||||
if !strings.HasPrefix(path, "/") {
|
|
||||||
path = "/" + path
|
|
||||||
}
|
|
||||||
return "file://" + path
|
|
||||||
}
|
|
||||||
|
|
@ -2,8 +2,6 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//+build go1.14
|
|
||||||
|
|
||||||
package regtest
|
package regtest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
@ -12,6 +10,7 @@ import (
|
||||||
"golang.org/x/tools/internal/lsp"
|
"golang.org/x/tools/internal/lsp"
|
||||||
"golang.org/x/tools/internal/lsp/fake"
|
"golang.org/x/tools/internal/lsp/fake"
|
||||||
"golang.org/x/tools/internal/lsp/protocol"
|
"golang.org/x/tools/internal/lsp/protocol"
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
const ardanLabsProxy = `
|
const ardanLabsProxy = `
|
||||||
|
|
@ -28,6 +27,7 @@ var ErrHelpWanted error
|
||||||
// -modfile flag that is used to provide modfile diagnostics is only available
|
// -modfile flag that is used to provide modfile diagnostics is only available
|
||||||
// with 1.14.
|
// with 1.14.
|
||||||
func Test_Issue38211(t *testing.T) {
|
func Test_Issue38211(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 14)
|
||||||
const ardanLabs = `
|
const ardanLabs = `
|
||||||
-- go.mod --
|
-- go.mod --
|
||||||
module mod.com
|
module mod.com
|
||||||
|
|
@ -91,6 +91,7 @@ func main() {
|
||||||
|
|
||||||
// Test for golang/go#38207.
|
// Test for golang/go#38207.
|
||||||
func TestNewModule_Issue38207(t *testing.T) {
|
func TestNewModule_Issue38207(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 14)
|
||||||
const emptyFile = `
|
const emptyFile = `
|
||||||
-- go.mod --
|
-- go.mod --
|
||||||
module mod.com
|
module mod.com
|
||||||
|
|
@ -125,6 +126,7 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNewFileBadImports_Issue36960(t *testing.T) {
|
func TestNewFileBadImports_Issue36960(t *testing.T) {
|
||||||
|
testenv.NeedsGo1Point(t, 14)
|
||||||
const simplePackage = `
|
const simplePackage = `
|
||||||
-- go.mod --
|
-- go.mod --
|
||||||
module mod.com
|
module mod.com
|
||||||
|
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
// +build !go1.13
|
|
||||||
|
|
||||||
// Copyright 2020 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package proxydir
|
|
||||||
|
|
||||||
import "path/filepath"
|
|
||||||
|
|
||||||
// ToURL returns the file uri for a proxy directory.
|
|
||||||
func ToURL(dir string) string {
|
|
||||||
// Prior to go1.13, the Go command on Windows only accepted GOPROXY file URLs
|
|
||||||
// of the form file://C:/path/to/proxy. This was incorrect: when parsed, "C:"
|
|
||||||
// is interpreted as the host. See golang.org/issue/6027. This has been
|
|
||||||
// fixed in go1.13, but we emit the old format for old releases.
|
|
||||||
return "file://" + filepath.ToSlash(dir)
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
// +build go1.13
|
|
||||||
|
|
||||||
// Copyright 2020 The Go Authors. All rights reserved.
|
// Copyright 2020 The Go Authors. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
@ -9,14 +7,24 @@ package proxydir
|
||||||
import (
|
import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"golang.org/x/tools/internal/testenv"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ToURL returns the file uri for a proxy directory.
|
// ToURL returns the file uri for a proxy directory.
|
||||||
func ToURL(dir string) string {
|
func ToURL(dir string) string {
|
||||||
// file URLs on Windows must start with file:///. See golang.org/issue/6027.
|
if testenv.Go1Point() >= 13 {
|
||||||
path := filepath.ToSlash(dir)
|
// file URLs on Windows must start with file:///. See golang.org/issue/6027.
|
||||||
if !strings.HasPrefix(path, "/") {
|
path := filepath.ToSlash(dir)
|
||||||
path = "/" + path
|
if !strings.HasPrefix(path, "/") {
|
||||||
|
path = "/" + path
|
||||||
|
}
|
||||||
|
return "file://" + path
|
||||||
|
} else {
|
||||||
|
// Prior to go1.13, the Go command on Windows only accepted GOPROXY file URLs
|
||||||
|
// of the form file://C:/path/to/proxy. This was incorrect: when parsed, "C:"
|
||||||
|
// is interpreted as the host. See golang.org/issue/6027. This has been
|
||||||
|
// fixed in go1.13, but we emit the old format for old releases.
|
||||||
|
return "file://" + filepath.ToSlash(dir)
|
||||||
}
|
}
|
||||||
return "file://" + path
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ package testenv
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"go/build"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
@ -233,3 +234,37 @@ func ExitIfSmallMachine() {
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Go1Point returns the x in Go 1.x.
|
||||||
|
func Go1Point() int {
|
||||||
|
for i := len(build.Default.ReleaseTags) - 1; i >= 0; i-- {
|
||||||
|
var version int
|
||||||
|
if _, err := fmt.Sscanf(build.Default.ReleaseTags[i], "go1.%d", &version); err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return version
|
||||||
|
}
|
||||||
|
panic("bad release tags")
|
||||||
|
}
|
||||||
|
|
||||||
|
// NeedsGo1Point skips t if the Go version used to run the test is older than
|
||||||
|
// 1.x.
|
||||||
|
func NeedsGo1Point(t Testing, x int) {
|
||||||
|
if t, ok := t.(helperer); ok {
|
||||||
|
t.Helper()
|
||||||
|
}
|
||||||
|
if Go1Point() < x {
|
||||||
|
t.Skipf("running Go version %q is version 1.%d, older than required 1.%d", runtime.Version(), Go1Point(), x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// SkipAfterGo1Point skips t if the Go version used to run the test is newer than
|
||||||
|
// 1.x.
|
||||||
|
func SkipAfterGo1Point(t Testing, x int) {
|
||||||
|
if t, ok := t.(helperer); ok {
|
||||||
|
t.Helper()
|
||||||
|
}
|
||||||
|
if Go1Point() > x {
|
||||||
|
t.Skipf("running Go version %q is version 1.%d, newer than maximum 1.%d", runtime.Version(), Go1Point(), x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue