From 5b8b0ce6cc69da1713b40934d68d7b8a72a74743 Mon Sep 17 00:00:00 2001 From: Fazlul Shahriar Date: Sat, 1 Sep 2018 00:14:33 -0400 Subject: [PATCH] go/packages: pass TestConfigDefaultEnv on Plan 9 Change-Id: Ice0d44c97dc76bf0ebfe433577d55eb6763cb6d3 Reviewed-on: https://go-review.googlesource.com/c/132601 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- go/packages/packages_test.go | 47 ++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/go/packages/packages_test.go b/go/packages/packages_test.go index f2399e84..9b096fc5 100644 --- a/go/packages/packages_test.go +++ b/go/packages/packages_test.go @@ -1414,24 +1414,41 @@ func testPatternPassthrough(t *testing.T, exporter packagestest.Exporter) { func TestConfigDefaultEnv(t *testing.T) { packagestest.TestAll(t, testConfigDefaultEnv) } func testConfigDefaultEnv(t *testing.T, exporter packagestest.Exporter) { - if runtime.GOOS == "windows" { + const driverJSON = `{ + "Roots": ["gopackagesdriver"], + "Packages": [{"ID": "gopackagesdriver", "Name": "gopackagesdriver"}] +}` + var ( + pathKey string + driverScript packagestest.Writer + ) + switch runtime.GOOS { + case "windows": // TODO(jayconrod): write an equivalent batch script for windows. // Hint: "type" can be used to read a file to stdout. t.Skip("test requires sh") + case "plan9": + pathKey = "path" + driverScript = packagestest.Script(`#!/bin/rc + +cat <<'EOF' +` + driverJSON + ` +EOF +`) + default: + pathKey = "PATH" + driverScript = packagestest.Script(`#!/bin/sh + +cat - <<'EOF' +` + driverJSON + ` +EOF +`) } exported := packagestest.Export(t, exporter, []packagestest.Module{{ Name: "golang.org/fake", Files: map[string]interface{}{ - "bin/gopackagesdriver": packagestest.Script(`#!/bin/sh - -cat - <<'EOF' -{ - "Roots": ["gopackagesdriver"], - "Packages": [{"ID": "gopackagesdriver", "Name": "gopackagesdriver"}] -} -EOF -`), - "golist/golist.go": "package golist", + "bin/gopackagesdriver": driverScript, + "golist/golist.go": "package golist", }}}) defer exported.Cleanup() driver := exported.File("golang.org/fake", "bin/gopackagesdriver") @@ -1440,7 +1457,7 @@ EOF t.Fatal(err) } - path, ok := os.LookupEnv("PATH") + path, ok := os.LookupEnv(pathKey) var pathWithDriver string if ok { pathWithDriver = binDir + string(os.PathListSeparator) + path @@ -1472,9 +1489,9 @@ EOF }, } { t.Run(test.desc, func(t *testing.T) { - oldPath := os.Getenv("PATH") - os.Setenv("PATH", test.path) - defer os.Setenv("PATH", oldPath) + oldPath := os.Getenv(pathKey) + os.Setenv(pathKey, test.path) + defer os.Setenv(pathKey, oldPath) exported.Config.Env = append(coreEnv, "GOPACKAGESDRIVER="+test.driver) pkgs, err := packages.Load(exported.Config, "golist") if err != nil {