Skip to content

Commit 3d19fac

Browse files
committed
test: add test for single metadata entry always being an array
1 parent 1df0782 commit 3d19fac

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

src/spec-node/imageMetadata.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,8 +498,8 @@ export function getDevcontainerMetadataLabel(devContainerMetadata: SubstitutedCo
498498
return '';
499499
}
500500
const imageMetadataLabelValue = `[${metadata
501-
.map(feature => `\\\n${toLabelString(feature)}`)
502-
.join(',')}\\\n]`;
501+
.map(feature => ` \\\n${toLabelString(feature)}`)
502+
.join(',')} \\\n]`;
503503
return `LABEL ${imageMetadataLabel}="${imageMetadataLabelValue}"`;
504504
}
505505

src/test/imageMetadata.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,22 @@ describe('Image Metadata', function () {
432432
assert.strictEqual(label.replace(/ \\\n/g, ''), `LABEL devcontainer.metadata="${JSON.stringify(expected).replace(/"/g, '\\"')}"`);
433433
});
434434

435+
it('should create array label for single metadata entry (docker-compose with Dockerfile, no features)', () => {
436+
// When there is only one metadata entry, the label should still be a JSON array.
437+
// Regression test for https://github.com/devcontainers/cli/issues/1054
438+
const label = getDevcontainerMetadataLabel(configWithRaw([
439+
{
440+
remoteUser: 'testUser',
441+
}
442+
]));
443+
const expected = [
444+
{
445+
remoteUser: 'testUser',
446+
}
447+
];
448+
assert.strictEqual(label.replace(/ \\\n/g, ''), `LABEL devcontainer.metadata="${JSON.stringify(expected).replace(/"/g, '\\"')}"`);
449+
});
450+
435451
it('should merge metadata from devcontainer.json and features', () => {
436452
const merged = mergeConfiguration({
437453
configFilePath: URI.parse('file:///devcontainer.json'),

0 commit comments

Comments
 (0)