From 10efaec64ac401f8116e2277c783483f8cd63148 Mon Sep 17 00:00:00 2001 From: Jon Steinich Date: Wed, 20 Jan 2021 04:22:44 +0000 Subject: [PATCH] use tokens rather than casts --- packages/cdktf/lib/terraform-hcl-module.ts | 11 +++--- .../terraform-hcl-module.test.js.snap | 36 +++++++++++++++++++ .../cdktf/test/terraform-hcl-module.test.ts | 16 +++++++++ 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/packages/cdktf/lib/terraform-hcl-module.ts b/packages/cdktf/lib/terraform-hcl-module.ts index 7b1bc3300a..56d8a00f5c 100644 --- a/packages/cdktf/lib/terraform-hcl-module.ts +++ b/packages/cdktf/lib/terraform-hcl-module.ts @@ -1,5 +1,6 @@ import { Construct } from "constructs"; import { TerraformModuleOptions, TerraformModule } from "./terraform-module"; +import { Token } from "./tokens"; export interface TerraformHclModuleOptions extends TerraformModuleOptions { readonly variables?: {[key: string]: any}; @@ -26,23 +27,23 @@ export class TerraformHclModule extends TerraformModule { } public get(output: string): any { - return this.interpolationForOutput(output); + return Token.asAny(this.interpolationForOutput(output)); } public getString(output: string): string { - return this.get(output); + return Token.asString(this.interpolationForOutput(output)); } public getNumber(output: string): number { - return this.get(output); + return Token.asNumber(this.interpolationForOutput(output)); } public getBoolean(output: string): boolean { - return this.get(output); + return Token.asString(this.interpolationForOutput(output)) as any as boolean; } public getList(output: string): string[] { - return this.get(output); + return Token.asList(this.interpolationForOutput(output)); } protected synthesizeAttributes(): { [name: string]: any } { diff --git a/packages/cdktf/test/__snapshots__/terraform-hcl-module.test.js.snap b/packages/cdktf/test/__snapshots__/terraform-hcl-module.test.js.snap index e9dbd10dd9..d87b192029 100644 --- a/packages/cdktf/test/__snapshots__/terraform-hcl-module.test.js.snap +++ b/packages/cdktf/test/__snapshots__/terraform-hcl-module.test.js.snap @@ -282,6 +282,42 @@ exports[`reference module 1`] = ` }" `; +exports[`reference module list 1`] = ` +"{ + \\"//\\": { + \\"metadata\\": { + \\"version\\": \\"stubbed\\", + \\"stackName\\": \\"test\\" + } + }, + \\"module\\": { + \\"test\\": { + \\"source\\": \\"./foo\\", + \\"//\\": { + \\"metadata\\": { + \\"path\\": \\"test/test\\", + \\"uniqueId\\": \\"test\\" + } + } + } + }, + \\"resource\\": { + \\"test_resource\\": { + \\"resource\\": { + \\"name\\": \\"test\\", + \\"names\\": \\"\${module.test.names}\\", + \\"//\\": { + \\"metadata\\": { + \\"path\\": \\"test/resource\\", + \\"uniqueId\\": \\"resource\\" + } + } + } + } + } +}" +`; + exports[`set variable 1`] = ` "{ \\"//\\": { diff --git a/packages/cdktf/test/terraform-hcl-module.test.ts b/packages/cdktf/test/terraform-hcl-module.test.ts index 7a49bd7cb2..a0d0d204d6 100644 --- a/packages/cdktf/test/terraform-hcl-module.test.ts +++ b/packages/cdktf/test/terraform-hcl-module.test.ts @@ -104,6 +104,22 @@ test('reference module', () => { expect(Testing.synth(stack)).toMatchSnapshot(); }); +test('reference module list', () => { + const app = Testing.app(); + const stack = new TerraformStack(app, 'test'); + + const module = new TerraformHclModule(stack, 'test', { + source: './foo' + }); + + const resource = new TestResource(stack, 'resource', { + name: 'test' + }); + resource.names = module.getList('names'); + + expect(Testing.synth(stack)).toMatchSnapshot(); +}); + test('set variable', () => { const app = Testing.app(); const stack = new TerraformStack(app, 'test');