diff --git a/flag_test.go b/flag_test.go index 66836f3..98c2fb9 100644 --- a/flag_test.go +++ b/flag_test.go @@ -2,6 +2,8 @@ package cli import ( "fmt" + "io" + "io/ioutil" "os" "reflect" "regexp" @@ -1291,22 +1293,37 @@ func TestParseGenericFromEnvCascade(t *testing.T) { a.Run([]string{"run"}) } -// func TestFlagFromFile(t *testing.T) { -// temp, err := ioutil.TempFile("", "urfave_cli_test") -// if err != nil { -// t.Error(err) -// return -// } -// io.WriteString(temp, "abc") -// temp.Close() -// defer func() { -// os.Remove(temp.Name()) -// }() -// -// if want, got := flagFromFileEnv("file-does-not-exist", "123"), "123"; want != got { -// t.Errorf("Did not expect %v - Got %v", want, got) -// } -// if want, got := flagFromFile(temp.Name(), "123"), "abc"; want != got { -// t.Errorf("Did not expect %v - Got %v", want, got) -// } -// } +func TestFlagFromFile(t *testing.T) { + os.Clearenv() + os.Setenv("APP_FOO", "123") + + temp, err := ioutil.TempFile("", "urfave_cli_test") + if err != nil { + t.Error(err) + return + } + io.WriteString(temp, "abc") + temp.Close() + defer func() { + os.Remove(temp.Name()) + }() + + var filePathTests = []struct { + path string + name string + expected string + }{ + {"file-does-not-exist", "APP_BAR", ""}, + {"file-does-not-exist", "APP_FOO", "123"}, + {"file-does-not-exist", "APP_FOO,APP_BAR", "123"}, + {temp.Name(), "APP_FOO", "123"}, + {temp.Name(), "APP_BAR", "abc"}, + } + + for _, filePathTest := range filePathTests { + got, _ := flagFromFileEnv(filePathTest.path, filePathTest.name) + if want := filePathTest.expected; got != want { + t.Errorf("Did not expect %v - Want %v", got, want) + } + } +}