2017-07-25 15:46:40 -06:00
|
|
|
// Copyright 2017 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.
|
|
|
|
|
2017-11-29 12:51:57 -07:00
|
|
|
// +build !plan9
|
|
|
|
|
2017-07-25 15:46:40 -06:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestAppendPath(t *testing.T) {
|
|
|
|
tmpd, err := ioutil.TempDir("", "go")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
defer os.RemoveAll(tmpd)
|
|
|
|
|
|
|
|
if err := os.Setenv("HOME", tmpd); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
GOPATH := os.Getenv("GOPATH")
|
|
|
|
if err := appendToPATH(filepath.Join(GOPATH, "bin")); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
shellConfig, err := shellConfigFile()
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
b, err := ioutil.ReadFile(shellConfig)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
expected := "export PATH=" + pathVar + envSeparator + filepath.Join(GOPATH, "bin")
|
|
|
|
if strings.TrimSpace(string(b)) != expected {
|
|
|
|
t.Fatalf("expected: %q, got %q", expected, strings.TrimSpace(string(b)))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check that appendToPATH is idempotent.
|
|
|
|
if err := appendToPATH(filepath.Join(GOPATH, "bin")); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
b, err = ioutil.ReadFile(shellConfig)
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
if strings.TrimSpace(string(b)) != expected {
|
|
|
|
t.Fatalf("expected: %q, got %q", expected, strings.TrimSpace(string(b)))
|
|
|
|
}
|
|
|
|
}
|