From 84b9d5ea8abd14dc2de228de3a0cb65dca0028ab Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Mon, 21 Sep 2020 13:44:05 +0200 Subject: [PATCH] fix(ec2): `InitFile` does not work on Windows (#10450) Fixes #10390. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../@aws-cdk/aws-ec2/lib/cfn-init-elements.ts | 4 +++- .../aws-ec2/test/cfn-init-element.test.ts | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts b/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts index 73153cd1025a3..ed2aef6fb14ed 100644 --- a/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts +++ b/packages/@aws-cdk/aws-ec2/lib/cfn-init-elements.ts @@ -489,7 +489,9 @@ export abstract class InitFile extends InitElement { if (fileOptions.group || fileOptions.owner || fileOptions.mode) { throw new Error('Owner, group, and mode options not supported for Windows.'); } - return {}; + return { + [this.fileName]: { ...contentVars }, + }; } return { diff --git a/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts b/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts index 1fc7399f63c60..2f81ff04acbbe 100644 --- a/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/cfn-init-element.test.ts @@ -177,6 +177,22 @@ describe('InitFile', () => { }).toThrow('Owner, group, and mode options not supported for Windows.'); }); + test('file renders properly on Windows', () => { + // GIVEN + const file = ec2.InitFile.fromString('/tmp/foo', 'My content'); + + // WHEN + const rendered = getElementConfig(file, InitPlatform.WINDOWS); + + // THEN + expect(rendered).toEqual({ + '/tmp/foo': { + content: 'My content', + encoding: 'plain', + }, + }); + }); + test('symlink throws an error if mode is set incorrectly', () => { expect(() => { ec2.InitFile.symlink('/tmp/foo', '/tmp/bar', {