Files
coolify/tests/Unit/ComposeEnvFileEscapingTest.php
T
6b07f03107 feat(terminal): interactive console mode for containers (docker attach) (#11538)
Co-authored-by: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Co-authored-by: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: rosslh <ross@rosshill.ca>
2026-10-14 14:32:02 +02:00

35 lines
1.4 KiB
PHP

<?php
test('escapeComposeEnvFileValue wraps simple values in double quotes', function () {
expect(escapeComposeEnvFileValue('runtime-only-value'))->toBe('"runtime-only-value"');
});
test('escapeComposeEnvFileValue keeps mixed quotes and dollars literal when interpolation is off', function () {
$value = 'hello world; quotes" \'$`';
$escaped = escapeComposeEnvFileValue($value, allowInterpolation: false);
expect($escaped)->toBe('"hello world; quotes\\" \'\\$`"');
});
test('escapeComposeEnvFileValue blocks command substitution when interpolation is off', function () {
$escaped = escapeComposeEnvFileValue('$(touch /tmp/should-not-exist)', allowInterpolation: false);
expect($escaped)->toBe('"\\$(touch /tmp/should-not-exist)"');
});
test('escapeComposeEnvFileValue leaves $VAR intact when interpolation is on', function () {
expect(escapeComposeEnvFileValue('$BOTH_PHASES', allowInterpolation: true))->toBe('"$BOTH_PHASES"');
});
test('escapeComposeEnvFileValue preserves multiline literals', function () {
$escaped = escapeComposeEnvFileValue("line one\nline two", allowInterpolation: false);
expect($escaped)->toBe("\"line one\nline two\"");
});
test('escapeComposeEnvFileValue escapes backslashes and double quotes', function () {
expect(escapeComposeEnvFileValue('C:\\path\\"quoted"'))
->toBe('"C:\\\\path\\\\\\"quoted\\""');
});