From 8bc87130c6d9efc0ad8d424c347888f28203aeb0 Mon Sep 17 00:00:00 2001 From: Nicolas De Loof Date: Tue, 17 Sep 2024 08:40:22 +0200 Subject: [PATCH] Reapply "accept dashes in variable names" This reverts commit aa1db26a987c000b7842013d6f64f0f294d2caf8. Signed-off-by: Nicolas De Loof --- dotenv/fixtures/special.env | 3 +++ dotenv/godotenv_test.go | 8 ++++++++ dotenv/parser.go | 2 +- dotenv/parser_test.go | 10 +++++----- 4 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 dotenv/fixtures/special.env diff --git a/dotenv/fixtures/special.env b/dotenv/fixtures/special.env new file mode 100644 index 00000000..5499b0cd --- /dev/null +++ b/dotenv/fixtures/special.env @@ -0,0 +1,3 @@ +VAR.WITH.DOTS=dots +VAR_WITH_UNDERSCORES=underscores +VAR-WITH-DASHES=dashes diff --git a/dotenv/godotenv_test.go b/dotenv/godotenv_test.go index 84f443ef..0d77906c 100644 --- a/dotenv/godotenv_test.go +++ b/dotenv/godotenv_test.go @@ -691,6 +691,14 @@ func TestUTF8BOM(t *testing.T) { loadEnvAndCompareValues(t, Load, envFileName, expectedValues, noopPresets) } +func TestDash(t *testing.T) { + loadEnvAndCompareValues(t, Load, "fixtures/special.env", map[string]string{ + "VAR-WITH-DASHES": "dashes", + "VAR.WITH.DOTS": "dots", + "VAR_WITH_UNDERSCORES": "underscores", + }, noopPresets) +} + func TestGetEnvFromFile(t *testing.T) { wd := t.TempDir() f := filepath.Join(wd, ".env") diff --git a/dotenv/parser.go b/dotenv/parser.go index b1055c96..85dda738 100644 --- a/dotenv/parser.go +++ b/dotenv/parser.go @@ -119,7 +119,7 @@ loop: offset = i + 1 inherited = rune == '\n' break loop - case '_', '.', '[', ']': + case '_', '.', '-', '[', ']': default: // variable name should match [A-Za-z0-9_.-] if unicode.IsLetter(rune) || unicode.IsNumber(rune) { diff --git a/dotenv/parser_test.go b/dotenv/parser_test.go index 6764d583..54580e2a 100644 --- a/dotenv/parser_test.go +++ b/dotenv/parser_test.go @@ -13,17 +13,17 @@ var testInput = ` a=b a[1]=c a.propertyKey=d -árvíztűrőTÜKÖRFÚRÓGÉP=ÁRVÍZTŰRŐtükörfúrógép +árvíztűrő-TÜKÖRFÚRÓGÉP=ÁRVÍZTŰRŐ-tükörfúrógép ` func TestParseBytes(t *testing.T) { p := newParser() expectedOutput := map[string]string{ - "a": "b", - "a[1]": "c", - "a.propertyKey": "d", - "árvíztűrőTÜKÖRFÚRÓGÉP": "ÁRVÍZTŰRŐtükörfúrógép", + "a": "b", + "a[1]": "c", + "a.propertyKey": "d", + "árvíztűrő-TÜKÖRFÚRÓGÉP": "ÁRVÍZTŰRŐ-tükörfúrógép", } out := map[string]string{}