github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/cmd/getgo/path_test.go (about)

     1  // Copyright 2017 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  //go:build !plan9
     6  // +build !plan9
     7  
     8  package main
     9  
    10  import (
    11  	"io/ioutil"
    12  	"os"
    13  	"path/filepath"
    14  	"strings"
    15  	"testing"
    16  )
    17  
    18  func TestAppendPath(t *testing.T) {
    19  	tmpd, err := ioutil.TempDir("", "go")
    20  	if err != nil {
    21  		t.Fatal(err)
    22  	}
    23  	defer os.RemoveAll(tmpd)
    24  
    25  	if err := os.Setenv("HOME", tmpd); err != nil {
    26  		t.Fatal(err)
    27  	}
    28  
    29  	GOPATH := os.Getenv("GOPATH")
    30  	if err := appendToPATH(filepath.Join(GOPATH, "bin")); err != nil {
    31  		t.Fatal(err)
    32  	}
    33  
    34  	shellConfig, err := shellConfigFile()
    35  	if err != nil {
    36  		t.Fatal(err)
    37  	}
    38  	b, err := ioutil.ReadFile(shellConfig)
    39  	if err != nil {
    40  		t.Fatal(err)
    41  	}
    42  
    43  	expected := "export PATH=" + pathVar + envSeparator + filepath.Join(GOPATH, "bin")
    44  	if strings.TrimSpace(string(b)) != expected {
    45  		t.Fatalf("expected: %q, got %q", expected, strings.TrimSpace(string(b)))
    46  	}
    47  
    48  	// Check that appendToPATH is idempotent.
    49  	if err := appendToPATH(filepath.Join(GOPATH, "bin")); err != nil {
    50  		t.Fatal(err)
    51  	}
    52  	b, err = ioutil.ReadFile(shellConfig)
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  	if strings.TrimSpace(string(b)) != expected {
    57  		t.Fatalf("expected: %q, got %q", expected, strings.TrimSpace(string(b)))
    58  	}
    59  }