Skip to content

Commit 593ede1

Browse files
CopilotCrow-Control
andcommitted
fix: use consistent empty string handling for compose labels
Co-authored-by: Crow-Control <7613738+Crow-Control@users.noreply.github.com>
1 parent 47c7c19 commit 593ede1

2 files changed

Lines changed: 41 additions & 4 deletions

File tree

app/watchers/providers/docker/Docker.test.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3000,6 +3000,43 @@ describe('Docker Watcher', () => {
30003000
);
30013001
});
30023002

3003+
test('should treat empty string compose labels as unset and fall back to watcher defaults', async () => {
3004+
const container = await setupContainerDetailTest(docker, {
3005+
registerConfig: {
3006+
compose: {
3007+
backup: true,
3008+
prune: false,
3009+
dryrun: true,
3010+
auto: false,
3011+
threshold: 'minor',
3012+
},
3013+
},
3014+
container: {
3015+
Image: 'nginx:1.0.0',
3016+
Names: ['/test-container-empty-labels'],
3017+
Labels: {
3018+
'dd.compose.file': '/tmp/docker-compose.yml',
3019+
'dd.compose.backup': '',
3020+
'dd.compose.threshold': '',
3021+
},
3022+
},
3023+
});
3024+
3025+
await docker.addImageDetailsToContainer(container);
3026+
3027+
expect(registry.ensureDockercomposeTriggerForContainer).toHaveBeenCalledWith(
3028+
'test-container-empty-labels',
3029+
'/tmp/docker-compose.yml',
3030+
{
3031+
backup: 'true',
3032+
prune: 'false',
3033+
dryrun: 'true',
3034+
auto: 'false',
3035+
threshold: 'minor',
3036+
},
3037+
);
3038+
});
3039+
30033040
test('should pass compose trigger options from wud labels as fallback', async () => {
30043041
const container = await setupContainerDetailTest(docker, {
30053042
container: {

app/watchers/providers/docker/Docker.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -214,28 +214,28 @@ function getDockercomposeTriggerConfigurationFromLabels(
214214
const dockercomposeConfig: Record<string, string> = {};
215215

216216
const backup =
217-
getLabel(labels, ddComposeBackup, wudComposeBackup) ??
217+
getLabel(labels, ddComposeBackup, wudComposeBackup) ||
218218
normalizeComposeDefaultValue(composeDefaults.backup);
219219
if (backup !== undefined) {
220220
dockercomposeConfig.backup = backup;
221221
}
222222

223223
const prune =
224-
getLabel(labels, ddComposePrune, wudComposePrune) ??
224+
getLabel(labels, ddComposePrune, wudComposePrune) ||
225225
normalizeComposeDefaultValue(composeDefaults.prune);
226226
if (prune !== undefined) {
227227
dockercomposeConfig.prune = prune;
228228
}
229229

230230
const dryrun =
231-
getLabel(labels, ddComposeDryrun, wudComposeDryrun) ??
231+
getLabel(labels, ddComposeDryrun, wudComposeDryrun) ||
232232
normalizeComposeDefaultValue(composeDefaults.dryrun);
233233
if (dryrun !== undefined) {
234234
dockercomposeConfig.dryrun = dryrun;
235235
}
236236

237237
const auto =
238-
getLabel(labels, ddComposeAuto, wudComposeAuto) ??
238+
getLabel(labels, ddComposeAuto, wudComposeAuto) ||
239239
normalizeComposeDefaultValue(composeDefaults.auto);
240240
if (auto !== undefined) {
241241
dockercomposeConfig.auto = auto;

0 commit comments

Comments
 (0)