This file is indexed.

/usr/share/gocode/src/github.com/coreos/pkg/flagutil/file_env_test.go is in golang-github-coreos-pkg-dev 3-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
package flagutil

import (
	"flag"
	"io/ioutil"
	"os"
	"testing"
)

var envFile = `
# some secret env vars
MYPROJ_A=foo		
MYPROJ_C=woof
`

func TestSetFlagsFromEnvFile(t *testing.T) {
	fs := flag.NewFlagSet("testing", flag.ExitOnError)
	fs.String("a", "", "")
	fs.String("b", "", "")
	fs.String("c", "", "")
	fs.Parse([]string{})

	// add command-line flags
	if err := fs.Set("b", "bar"); err != nil {
		t.Fatal(err)
	}
	if err := fs.Set("c", "quack"); err != nil {
		t.Fatal(err)
	}

	// first verify that flags are as expected before reading the env
	for f, want := range map[string]string{
		"a": "",
		"b": "bar",
		"c": "quack",
	} {
		if got := fs.Lookup(f).Value.String(); got != want {
			t.Fatalf("flag %q=%q, want %q", f, got, want)
		}
	}

	file, err := ioutil.TempFile("", "env-file")
	if err != nil {
		t.Fatal(err)
	}
	defer os.Remove(file.Name())
	file.Write([]byte(envFile))

	// read env file and verify flags were updated as expected
	err = SetFlagsFromEnvFile(fs, "MYPROJ", file.Name())
	if err != nil {
		t.Errorf("err=%v, want nil", err)
	}
	for f, want := range map[string]string{
		"a": "foo",
		"b": "bar",
		"c": "quack",
	} {
		if got := fs.Lookup(f).Value.String(); got != want {
			t.Errorf("flag %q=%q, want %q", f, got, want)
		}
	}
}

func TestSetFlagsFromEnvFile_FlagSetError(t *testing.T) {
	// now verify that an error is propagated
	fs := flag.NewFlagSet("testing", flag.ExitOnError)
	fs.Int("x", 0, "")
	file, err := ioutil.TempFile("", "env-file")
	if err != nil {
		t.Fatal(err)
	}
	defer os.Remove(file.Name())
	file.Write([]byte("MYPROJ_X=not_a_number"))
	if err := SetFlagsFromEnvFile(fs, "MYPROJ", file.Name()); err == nil {
		t.Errorf("err=nil, want != nil")
	}
}

func TestParseLine(t *testing.T) {
	cases := []struct {
		line        string
		expectedKey string
		expectedVal string
		nilErr      bool
	}{
		{"key=value", "key", "value", true},
		{" key  =  value  	", "key", "value", true},
		{"key='#gopher' #blah", "key", "'#gopher' #blah", true},
		// invalid
		{"key:value", "", "", false},
		{"keyvalue", "", "", false},
	}
	for _, c := range cases {
		key, val, err := parseLine(c.line)
		if (err == nil) != c.nilErr {
			if c.nilErr {
				t.Errorf("got %s, want err=nil", err)
			} else {
				t.Errorf("got err=nil, want err!=nil")
			}
		}
		if c.expectedKey != key || c.expectedVal != val {
			t.Errorf("got %q=%q, want %q=%q", key, val, c.expectedKey, c.expectedVal)
		}
	}
}