package source import ( "fmt" "os" "path/filepath" ) // These Bazel env vars are documented here: // https://bazel.build/reference/test-encyclopedia // Signifies test executable is being driven by `bazel test`. // // Due to Bazel's compilation and sandboxing strategy, // some care is required to handle resolving the original *.go source file. var inBazelTest = os.Getenv("BAZEL_TEST") == "1" // The name of the target being tested (ex: //some_package:some_package_test) var bazelTestTarget = os.Getenv("TEST_TARGET") // Absolute path to the base of the runfiles tree var bazelTestSrcdir = os.Getenv("TEST_SRCDIR") // The local repository's workspace name (ex: __main__) var bazelTestWorkspace = os.Getenv("TEST_WORKSPACE") func bazelSourcePath(filename string) (string, error) { // Use the env vars to resolve the test source files, // which must be provided as test data in the respective go_test target. filename = filepath.Join(bazelTestSrcdir, bazelTestWorkspace, filename) _, err := os.Stat(filename) if os.IsNotExist(err) { return "", fmt.Errorf(bazelMissingSourceMsg, filename, bazelTestTarget) } return filename, nil } var bazelMissingSourceMsg = ` the test source file does not exist: %s It appears that you are running this test under Bazel (target: %s). Check that your test source files are added as test data in your go_test targets. Example: go_test( name = "your_package_test", srcs = ["your_test.go"], deps = ["@tools_gotest_v3//assert"], data = glob(["*_test.go"]) )" `