diff --git a/fixtures/invalid1.env b/fixtures/invalid1.env new file mode 100644 index 0000000..38f7e0e --- /dev/null +++ b/fixtures/invalid1.env @@ -0,0 +1,2 @@ +INVALID LINE +foo=bar diff --git a/godotenv.go b/godotenv.go index 94b2676..a098dd2 100644 --- a/godotenv.go +++ b/godotenv.go @@ -143,13 +143,19 @@ func readFile(filename string) (envMap map[string]string, err error) { lines = append(lines, scanner.Text()) } + if err = scanner.Err(); err != nil { + return + } + for _, fullLine := range lines { if !isIgnoredLine(fullLine) { - key, value, err := parseLine(fullLine) + var key, value string + key, value, err = parseLine(fullLine) - if err == nil { - envMap[key] = value + if err != nil { + return } + envMap[key] = value } } return diff --git a/godotenv_test.go b/godotenv_test.go index e93539e..2d26ee4 100644 --- a/godotenv_test.go +++ b/godotenv_test.go @@ -269,3 +269,20 @@ func TestLinesToIgnore(t *testing.T) { t.Error("ignoring a perfectly valid line to parse") } } + +func TestErrorReadDirectory(t *testing.T) { + envFileName := "fixtures/" + envMap, err := Read(envFileName) + + if err == nil { + t.Errorf("Expected error, got %v", envMap) + } +} + +func TestErrorParsing(t *testing.T) { + envFileName := "fixtures/invalid1.env" + envMap, err := Read(envFileName) + if err == nil { + t.Errorf("Expected error, got %v", envMap) + } +}