Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / go / internal / gccgoimporter / testenv_test.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/go/internal/gccgoimporter/testenv_test.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/go/internal/gccgoimporter/testenv_test.go
new file mode 100644 (file)
index 0000000..7afa464
--- /dev/null
@@ -0,0 +1,69 @@
+// 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.
+
+// This file contains testing utilities copied from $GOROOT/src/internal/testenv/testenv.go.
+
+package gccgoimporter
+
+import (
+       "runtime"
+       "strings"
+       "testing"
+)
+
+// HasGoBuild reports whether the current system can build programs with ``go build''
+// and then run them with os.StartProcess or exec.Command.
+func HasGoBuild() bool {
+       switch runtime.GOOS {
+       case "android", "nacl":
+               return false
+       case "darwin":
+               if strings.HasPrefix(runtime.GOARCH, "arm") {
+                       return false
+               }
+       }
+       return true
+}
+
+// HasExec reports whether the current system can start new processes
+// using os.StartProcess or (more commonly) exec.Command.
+func HasExec() bool {
+       switch runtime.GOOS {
+       case "nacl", "js":
+               return false
+       case "darwin":
+               if strings.HasPrefix(runtime.GOARCH, "arm") {
+                       return false
+               }
+       }
+       return true
+}
+
+// MustHaveGoBuild checks that the current system can build programs with ``go build''
+// and then run them with os.StartProcess or exec.Command.
+// If not, MustHaveGoBuild calls t.Skip with an explanation.
+func MustHaveGoBuild(t *testing.T) {
+       if !HasGoBuild() {
+               t.Skipf("skipping test: 'go build' not available on %s/%s", runtime.GOOS, runtime.GOARCH)
+       }
+}
+
+// MustHaveExec checks that the current system can start new processes
+// using os.StartProcess or (more commonly) exec.Command.
+// If not, MustHaveExec calls t.Skip with an explanation.
+func MustHaveExec(t *testing.T) {
+       if !HasExec() {
+               t.Skipf("skipping test: cannot exec subprocess on %s/%s", runtime.GOOS, runtime.GOARCH)
+       }
+}
+
+var testenv = struct {
+       HasGoBuild      func() bool
+       MustHaveGoBuild func(*testing.T)
+       MustHaveExec    func(*testing.T)
+}{
+       HasGoBuild:      HasGoBuild,
+       MustHaveGoBuild: MustHaveGoBuild,
+       MustHaveExec:    MustHaveExec,
+}