diff --git a/godotenv.go b/godotenv.go index 69e8b44..e58a80f 100644 --- a/godotenv.go +++ b/godotenv.go @@ -61,7 +61,9 @@ func parseLine(line string) (key string, value string, err error) { splitString := strings.Split(line, "=") key = strings.Trim(splitString[0], " ") - value = strings.Trim(splitString[1], " ") + + value = strings.Trim(splitString[1], " \"'") + value = strings.Replace(value, "\\\"", "\"", -1) return } diff --git a/godotenv_test.go b/godotenv_test.go index 454a54a..44ffe58 100644 --- a/godotenv_test.go +++ b/godotenv_test.go @@ -50,4 +50,17 @@ func TestLoadPlainEnv(t *testing.T) { func TestParsing(t *testing.T) { // unquoted values parseAndCompare(t, "FOO=bar", "FOO", "bar") + + // parses values with spaces around equal sign + parseAndCompare(t, "FOO =bar", "FOO", "bar") + parseAndCompare(t, "FOO= bar", "FOO", "bar") + + // parses double quoted values + parseAndCompare(t, "FOO=\"bar\"", "FOO", "bar") + + // parses single quoted values + parseAndCompare(t, "FOO='bar'", "FOO", "bar") + + // parses escaped double quotes + parseAndCompare(t, "FOO=escaped\\\"bar\"", "FOO", "escaped\"bar") }