diff --git a/src/spec-common/variableSubstitution.ts b/src/spec-common/variableSubstitution.ts index d973f0cd6..27f2496dc 100644 --- a/src/spec-common/variableSubstitution.ts +++ b/src/spec-common/variableSubstitution.ts @@ -85,7 +85,8 @@ function evaluateSingleVariable(replace: Replace, match: string, variable: strin const parts = variable.split(':'); if (parts.length > 1) { variable = parts[0]; - args = parts.slice(1); + // Preserve colons in the default value (e.g. `${localEnv:VAR:image:tag}`). + args = parts.length > 2 ? [parts[1], parts.slice(2).join(':')] : [parts[1]]; } return replace(match, variable, args); diff --git a/src/test/variableSubstitution.test.ts b/src/test/variableSubstitution.test.ts index e95002464..221fa32d8 100644 --- a/src/test/variableSubstitution.test.ts +++ b/src/test/variableSubstitution.test.ts @@ -131,7 +131,7 @@ describe('Variable substitution', function () { env: { }, }, raw); - assert.strictEqual(result.foo, 'bardefaultbar'); + assert.strictEqual(result.foo, 'bardefault:a:b:cbar'); }); it(`container environment variables with default value if they do not exist`, async () => {