UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

98 lines 15.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const user_configuration_1 = require("../../lib/cli/user-configuration"); test('can parse string context from command line arguments', () => { // GIVEN const settings1 = (0, user_configuration_1.commandLineArgumentsToSettings)({ context: ['foo=bar'], _: [user_configuration_1.Command.DEPLOY] }); const settings2 = (0, user_configuration_1.commandLineArgumentsToSettings)({ context: ['foo='], _: [user_configuration_1.Command.DEPLOY] }); // THEN expect(settings1.get(['context']).foo).toEqual('bar'); expect(settings2.get(['context']).foo).toEqual(''); }); test('can parse string context from command line arguments with equals sign in value', () => { // GIVEN const settings1 = (0, user_configuration_1.commandLineArgumentsToSettings)({ context: ['foo==bar='], _: [user_configuration_1.Command.DEPLOY] }); const settings2 = (0, user_configuration_1.commandLineArgumentsToSettings)({ context: ['foo=bar='], _: [user_configuration_1.Command.DEPLOY] }); // THEN expect(settings1.get(['context']).foo).toEqual('=bar='); expect(settings2.get(['context']).foo).toEqual('bar='); }); test('can parse tag values from command line arguments', () => { // GIVEN const settings1 = (0, user_configuration_1.commandLineArgumentsToSettings)({ tags: ['foo=bar'], _: [user_configuration_1.Command.DEPLOY] }); const settings2 = (0, user_configuration_1.commandLineArgumentsToSettings)({ tags: ['foo='], _: [user_configuration_1.Command.DEPLOY] }); // THEN expect(settings1.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual('bar'); expect(settings2.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual(''); }); test('can parse tag values from command line arguments with equals sign in value', () => { // GIVEN const settings1 = (0, user_configuration_1.commandLineArgumentsToSettings)({ tags: ['foo==bar='], _: [user_configuration_1.Command.DEPLOY] }); const settings2 = (0, user_configuration_1.commandLineArgumentsToSettings)({ tags: ['foo=bar='], _: [user_configuration_1.Command.DEPLOY] }); // THEN expect(settings1.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual('=bar='); expect(settings2.get(['tags']).find((tag) => tag.Key === 'foo').Value).toEqual('bar='); }); test('bundling stacks defaults to an empty list', () => { // GIVEN const settings = (0, user_configuration_1.commandLineArgumentsToSettings)({ _: [user_configuration_1.Command.LIST], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual([]); }); test('bundling stacks defaults to ** for deploy', () => { // GIVEN const settings = (0, user_configuration_1.commandLineArgumentsToSettings)({ _: [user_configuration_1.Command.DEPLOY], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['**']); }); test('bundling stacks defaults to ** for watch', () => { // GIVEN const settings = (0, user_configuration_1.commandLineArgumentsToSettings)({ _: [user_configuration_1.Command.WATCH], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['**']); }); test('bundling stacks with deploy exclusively', () => { // GIVEN const settings = (0, user_configuration_1.commandLineArgumentsToSettings)({ _: [user_configuration_1.Command.DEPLOY], exclusively: true, STACKS: ['cool-stack'], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['cool-stack']); }); test('bundling stacks with watch exclusively', () => { // GIVEN const settings = (0, user_configuration_1.commandLineArgumentsToSettings)({ _: [user_configuration_1.Command.WATCH], exclusively: true, STACKS: ['cool-stack'], }); // THEN expect(settings.get(['bundlingStacks'])).toEqual(['cool-stack']); }); test('should include outputs-file in settings', () => { // GIVEN const settings = (0, user_configuration_1.commandLineArgumentsToSettings)({ _: [user_configuration_1.Command.DEPLOY], outputsFile: 'my-outputs-file.json', }); // THEN expect(settings.get(['outputsFile'])).toEqual('my-outputs-file.json'); }); test('providing a build arg', () => { // GIVEN const settings = (0, user_configuration_1.commandLineArgumentsToSettings)({ _: [user_configuration_1.Command.SYNTH], build: 'mvn package', }); // THEN expect(settings.get(['build'])).toEqual('mvn package'); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29uZmlndXJhdGlvbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EseUVBQTJGO0FBRTNGLElBQUksQ0FBQyxzREFBc0QsRUFBRSxHQUFHLEVBQUU7SUFDaEUsUUFBUTtJQUNSLE1BQU0sU0FBUyxHQUFHLElBQUEsbURBQThCLEVBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyw0QkFBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRyxNQUFNLFNBQVMsR0FBRyxJQUFBLG1EQUE4QixFQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsNEJBQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFN0YsT0FBTztJQUNQLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBRSxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxnRkFBZ0YsRUFBRSxHQUFHLEVBQUU7SUFDMUYsUUFBUTtJQUNSLE1BQU0sU0FBUyxHQUFHLElBQUEsbURBQThCLEVBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyw0QkFBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRyxNQUFNLFNBQVMsR0FBRyxJQUFBLG1EQUE4QixFQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFD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QUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVGFnIH0gZnJvbSAnLi4vLi4vbGliL2FwaS90YWdzJztcbmltcG9ydCB7IENvbW1hbmQsIGNvbW1hbmRMaW5lQXJndW1lbnRzVG9TZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYi9jbGkvdXNlci1jb25maWd1cmF0aW9uJztcblxudGVzdCgnY2FuIHBhcnNlIHN0cmluZyBjb250ZXh0IGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MxID0gY29tbWFuZExpbmVBcmd1bWVudHNUb1NldHRpbmdzKHsgY29udGV4dDogWydmb289YmFyJ10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG4gIGNvbnN0IHNldHRpbmdzMiA9IGNvbW1hbmRMaW5lQXJndW1lbnRzVG9TZXR0aW5ncyh7IGNvbnRleHQ6IFsnZm9vPSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzMS5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCggJ2JhcicpO1xuICBleHBlY3Qoc2V0dGluZ3MyLmdldChbJ2NvbnRleHQnXSkuZm9vKS50b0VxdWFsKCAnJyk7XG59KTtcblxudGVzdCgnY2FuIHBhcnNlIHN0cmluZyBjb250ZXh0IGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB3aXRoIGVxdWFscyBzaWduIGluIHZhbHVlJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3MoeyBjb250ZXh0OiBbJ2Zvbz09YmFyPSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3MoeyBjb250ZXh0OiBbJ2Zvbz1iYXI9J10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MxLmdldChbJ2NvbnRleHQnXSkuZm9vKS50b0VxdWFsKCAnPWJhcj0nKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWydjb250ZXh0J10pLmZvbykudG9FcXVhbCggJ2Jhcj0nKTtcbn0pO1xuXG50ZXN0KCdjYW4gcGFyc2UgdGFnIHZhbHVlcyBmcm9tIGNvbW1hbmQgbGluZSBhcmd1bWVudHMnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzMSA9IGNvbW1hbmRMaW5lQXJndW1lbnRzVG9TZXR0aW5ncyh7IHRhZ3M6IFsnZm9vPWJhciddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3MoeyB0YWdzOiBbJ2Zvbz0nXSwgXzogW0NvbW1hbmQuREVQTE9ZXSB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5nczEuZ2V0KFsndGFncyddKS5maW5kKCh0YWc6IFRhZykgPT4gdGFnLktleSA9PT0gJ2ZvbycpLlZhbHVlKS50b0VxdWFsKCdiYXInKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWyd0YWdzJ10pLmZpbmQoKHRhZzogVGFnKSA9PiB0YWcuS2V5ID09PSAnZm9vJykuVmFsdWUpLnRvRXF1YWwoJycpO1xufSk7XG5cbnRlc3QoJ2NhbiBwYXJzZSB0YWcgdmFsdWVzIGZyb20gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB3aXRoIGVxdWFscyBzaWduIGluIHZhbHVlJywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5nczEgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3MoeyB0YWdzOiBbJ2Zvbz09YmFyPSddLCBfOiBbQ29tbWFuZC5ERVBMT1ldIH0pO1xuICBjb25zdCBzZXR0aW5nczIgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3MoeyB0YWdzOiBbJ2Zvbz1iYXI9J10sIF86IFtDb21tYW5kLkRFUExPWV0gfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MxLmdldChbJ3RhZ3MnXSkuZmluZCgodGFnOiBUYWcpID0+IHRhZy5LZXkgPT09ICdmb28nKS5WYWx1ZSkudG9FcXVhbCgnPWJhcj0nKTtcbiAgZXhwZWN0KHNldHRpbmdzMi5nZXQoWyd0YWdzJ10pLmZpbmQoKHRhZzogVGFnKSA9PiB0YWcuS2V5ID09PSAnZm9vJykuVmFsdWUpLnRvRXF1YWwoJ2Jhcj0nKTtcbn0pO1xuXG50ZXN0KCdidW5kbGluZyBzdGFja3MgZGVmYXVsdHMgdG8gYW4gZW1wdHkgbGlzdCcsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3Moe1xuICAgIF86IFtDb21tYW5kLkxJU1RdLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIGRlZmF1bHRzIHRvICoqIGZvciBkZXBsb3knLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gY29tbWFuZExpbmVBcmd1bWVudHNUb1NldHRpbmdzKHtcbiAgICBfOiBbQ29tbWFuZC5ERVBMT1ldLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJyoqJ10pO1xufSk7XG5cbnRlc3QoJ2J1bmRsaW5nIHN0YWNrcyBkZWZhdWx0cyB0byAqKiBmb3Igd2F0Y2gnLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gY29tbWFuZExpbmVBcmd1bWVudHNUb1NldHRpbmdzKHtcbiAgICBfOiBbQ29tbWFuZC5XQVRDSF0sXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ2J1bmRsaW5nU3RhY2tzJ10pKS50b0VxdWFsKFsnKionXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIHdpdGggZGVwbG95IGV4Y2x1c2l2ZWx5JywgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBzZXR0aW5ncyA9IGNvbW1hbmRMaW5lQXJndW1lbnRzVG9TZXR0aW5ncyh7XG4gICAgXzogW0NvbW1hbmQuREVQTE9ZXSxcbiAgICBleGNsdXNpdmVseTogdHJ1ZSxcbiAgICBTVEFDS1M6IFsnY29vbC1zdGFjayddLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSkudG9FcXVhbChbJ2Nvb2wtc3RhY2snXSk7XG59KTtcblxudGVzdCgnYnVuZGxpbmcgc3RhY2tzIHdpdGggd2F0Y2ggZXhjbHVzaXZlbHknLCAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IHNldHRpbmdzID0gY29tbWFuZExpbmVBcmd1bWVudHNUb1NldHRpbmdzKHtcbiAgICBfOiBbQ29tbWFuZC5XQVRDSF0sXG4gICAgZXhjbHVzaXZlbHk6IHRydWUsXG4gICAgU1RBQ0tTOiBbJ2Nvb2wtc3RhY2snXSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnYnVuZGxpbmdTdGFja3MnXSkpLnRvRXF1YWwoWydjb29sLXN0YWNrJ10pO1xufSk7XG5cbnRlc3QoJ3Nob3VsZCBpbmNsdWRlIG91dHB1dHMtZmlsZSBpbiBzZXR0aW5ncycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3Moe1xuICAgIF86IFtDb21tYW5kLkRFUExPWV0sXG4gICAgb3V0cHV0c0ZpbGU6ICdteS1vdXRwdXRzLWZpbGUuanNvbicsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHNldHRpbmdzLmdldChbJ291dHB1dHNGaWxlJ10pKS50b0VxdWFsKCdteS1vdXRwdXRzLWZpbGUuanNvbicpO1xufSk7XG5cbnRlc3QoJ3Byb3ZpZGluZyBhIGJ1aWxkIGFyZycsICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgc2V0dGluZ3MgPSBjb21tYW5kTGluZUFyZ3VtZW50c1RvU2V0dGluZ3Moe1xuICAgIF86IFtDb21tYW5kLlNZTlRIXSxcbiAgICBidWlsZDogJ212biBwYWNrYWdlJyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3Qoc2V0dGluZ3MuZ2V0KFsnYnVpbGQnXSkpLnRvRXF1YWwoJ212biBwYWNrYWdlJyk7XG59KTtcbiJdfQ==