From ccf3111e053f6863d5575d82ef1aafb85cc1087b Mon Sep 17 00:00:00 2001 From: ANPewansmith <159851796+ANPewansmith@users.noreply.github.com> Date: Fri, 24 Apr 2026 18:24:55 +0100 Subject: [PATCH 1/2] Update environment.ts Allow use of consul-style forward slash env variables --- src/extension/common/variables/environment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension/common/variables/environment.ts b/src/extension/common/variables/environment.ts index ce67bb8b..866a4dae 100644 --- a/src/extension/common/variables/environment.ts +++ b/src/extension/common/variables/environment.ts @@ -177,7 +177,7 @@ function parseEnvLine(line: string): [string, string] { // We don't use dotenv here because it loses ordering, which is // significant for substitution. // Modified to handle multiline values by using 's' flag so $ matches before newlines in multiline strings - const match = line.match(/^\s*(_*[a-zA-Z]\w*)\s*=\s*(.*?)?\s*$/s); + const match = line.match(/^\s*(_*[a-zA-Z][\w/]*)\s*=\s*(.*?)?\s*$/s); if (!match) { return ['', '']; } From c1ccece842c24b98b05f87df54e14cb97dbd53d3 Mon Sep 17 00:00:00 2001 From: ANPewansmith <159851796+ANPewansmith@users.noreply.github.com> Date: Fri, 24 Apr 2026 18:29:07 +0100 Subject: [PATCH 2/2] Update environment.unit.test.ts Added tests for consul-style env vars --- .../unittest/common/environment.unit.test.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/test/unittest/common/environment.unit.test.ts b/src/test/unittest/common/environment.unit.test.ts index be5353eb..e3e69543 100644 --- a/src/test/unittest/common/environment.unit.test.ts +++ b/src/test/unittest/common/environment.unit.test.ts @@ -102,4 +102,21 @@ suite('Environment File Parsing Tests', () => { expect(result.VAR1).to.equal('value1'); expect(result.VAR2).to.equal('multiline\nvalue'); }); + + test('Should parse keys containing forward slashes (e.g. Consul-style namespaced variables)', () => { + const content = 'routes/my_service=http://localhost:8080\nservices/db/host=localhost'; + const result = parseEnvFile(content); + + expect(result['routes/my_service']).to.equal('http://localhost:8080'); + expect(result['services/db/host']).to.equal('localhost'); + }); + + test('Should parse mixed standard and slash-namespaced keys in the same file', () => { + const content = 'STANDARD_VAR=value1\nroutes/my_service=http://localhost:8080\nANOTHER_VAR=value2'; + const result = parseEnvFile(content); + + expect(result['STANDARD_VAR']).to.equal('value1'); + expect(result['routes/my_service']).to.equal('http://localhost:8080'); + expect(result['ANOTHER_VAR']).to.equal('value2'); + }); });