Change:
test('substitute one env variable', () => { if (platform.isWindows) { <del> assert.strictEqual(configurationResolverService.resolve(workspace, 'abc ${workspaceFolder} ${env:key1} xyz'), 'abc VSCodeworkspaceLocation Value for Key1 xyz'); </del> <ins> assert.strictEqual(configurationResolverService.resolve(workspace, 'abc ${workspaceFolder} ${env:key1} xyz'), 'abc VSCodeworkspaceLocation Value for key1 xyz'); </ins> } else { <del> assert.strictEqual(configurationResolverService.resolve(workspace, 'abc ${workspaceFolder} ${env:key1} xyz'), 'abc /VSCode/workspaceLocation Value for Key1 xyz'); </del> <ins> assert.strictEqual(configurationResolverService.resolve(workspace, 'abc ${workspaceFolder} ${env:key1} xyz'), 'abc /VSCode/workspaceLocation Value for key1 xyz'); </ins> } }); test('substitute many env variable', () => { if (platform.isWindows) { <del> assert.strictEqual(configurationResolverService.resolve(workspace, '${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), 'VSCodeworkspaceLocation - VSCodeworkspaceLocation Value for Key1 - Value for Key2'); </del> <ins> assert.strictEqual(configurationResolverService.resolve(workspace, '${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), 'VSCodeworkspaceLocation - VSCodeworkspaceLocation Value for key1 - Value for key2'); </ins> } else { <del> assert.strictEqual(configurationResolverService.resolve(workspace, '${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), '/VSCode/workspaceLocation - /VSCode/workspaceLocation Value for Key1 - Value for Key2'); </del> <ins> assert.strictEqual(configurationResolverService.resolve(workspace, '${workspaceFolder} - ${workspaceFolder} ${env:key1} - ${env:key2}'), '/VSCode/workspaceLocation - /VSCode/workspaceLocation Value for key1 - Value for key2'); } }); test('substitute one env variable using platform case sensitivity', () => { if (platform.isWindows) { assert.strictEqual(configurationResolverService.resolve(workspace, '${env:key1} - ${env:Key1}'), 'Value for key1 - Value for key1'); } else { assert.strictEqual(configurationResolverService.resolve(workspace, '${env:key1} - ${env:Key1}'), 'Value for key1 - '); </ins> } });

Discussion:
VSCode Version:0.10.13 alpha OS Version:Windows 10 Steps to Reproduce: an variable to your ex. ${env.PATH} "command": "echo", "isShellCommand": true, "args": ["${env.PATH}"], the task. This will expand correctly on Linux and OS X but not Windows since the expansion is case sensitive and PATH on Windows is "Path". Env Var expansion shouldn't be case sensitive so that the same task can run on all platform. This bug was requested by in vscode-docs issue
this is done by the resolver service. IMO env variables on all OSes are case insensitive. Should we address this.
Let's keep it open and if some user is passionate he can tackle it
On linux and macOS environment variables are case sensitive, so "Path" and "PATH" are different variables on linux and macOS (but not on Windows). So your statement from above "IMO env variables on all OSes are case insensitive." is not correct, right? so you are asking for making env var lookup case insensitive on Windows only, correct?
I thought they are always case insensitive. So it should be case insensitive then on Windows only
I'm actually about done with a change for this if you want to take a look.
thanks, I will review the PR.
did you want me to squash it or anything (fixed a broken test because I forgot the existing code returned an empty string for missing environment variables)? Different projects have different requirements and I didn't see anything about squashing in your contrib docs.
no need to squash, I will add the comments to the PR directly if something is needed. Thanks