diff --git a/src/builder.ts b/src/builder.ts index 14eef7f7cb3..d5397d28476 100644 --- a/src/builder.ts +++ b/src/builder.ts @@ -68,15 +68,15 @@ export function normalizeOptions(args: CliOptions): BuildOptions { } function commonArch(): Array { - if (args.ia32) { + if (args.ia32 && args.x64) { + return [Arch.x64, Arch.ia32] + } + else if (args.ia32) { return [Arch.ia32] } else if (args.x64) { return [Arch.x64] } - else if (args.ia32 && args.x64) { - return [Arch.x64, Arch.ia32] - } else { return [archFromString(process.arch)] } @@ -128,7 +128,12 @@ export function normalizeOptions(args: CliOptions): BuildOptions { } if (targets.size === 0) { - targets = createTargets(normalizePlatforms(args.platform), null, args.arch) + if (args.platform == null) { + processTargets(Platform.current(), []) + } + else { + targets = createTargets(normalizePlatforms(args.platform), null, args.arch) + } } const result = Object.assign({}, args) @@ -158,7 +163,7 @@ export function createTargets(platforms: Array, type?: string | null, const targets = new Map>>() for (let platform of platforms) { const archs = platform === Platform.OSX ? [Arch.x64] : (arch === "all" ? [Arch.x64, Arch.ia32] : [archFromString(arch == null ? process.arch : arch)]) - let archToType = new Map>() + const archToType = new Map>() targets.set(platform, archToType) for (let arch of archs) { diff --git a/src/metadata.ts b/src/metadata.ts index f530e944572..6d7afb12815 100755 --- a/src/metadata.ts +++ b/src/metadata.ts @@ -369,8 +369,16 @@ export class Platform { return this.name } - public createTarget(type?: string | null, arch: Arch = archFromString(process.arch)): Map>> { - return new Map([[this, new Map([[arch, type == null ? [] : [type]]])]]) + public createTarget(type?: string | null, ...archs: Array): Map>> { + const archToType = new Map() + for (let arch of (archs == null || archs.length === 0 ? [archFromString(process.arch)] : archs)) { + archToType.set(arch, type == null ? [] : [type]) + } + return new Map([[this, archToType]]) + } + + public static current(): Platform { + return Platform.fromString(process.platform) } public static fromString(name: string): Platform { diff --git a/test/src/BuildTest.ts b/test/src/BuildTest.ts index 4c62df34268..70d40db3a92 100755 --- a/test/src/BuildTest.ts +++ b/test/src/BuildTest.ts @@ -27,6 +27,7 @@ test("cli", () => { } assertThat(parse("--osx")).isEqualTo(expected({targets: Platform.OSX.createTarget()})) + assertThat(parse("--ia32 --x64")).isEqualTo(expected({targets: Platform.current().createTarget(null, Arch.x64, Arch.ia32)})) assertThat(parse("--linux")).isEqualTo(expected({targets: Platform.LINUX.createTarget()})) assertThat(parse("--win")).isEqualTo(expected({targets: Platform.WINDOWS.createTarget()})) assertThat(parse("-owl")).isEqualTo(expected({targets: createTargets([Platform.OSX, Platform.WINDOWS, Platform.LINUX])})) diff --git a/test/src/helpers/fileAssert.ts b/test/src/helpers/fileAssert.ts index 893f7f2a895..697f3cd4e83 100644 --- a/test/src/helpers/fileAssert.ts +++ b/test/src/helpers/fileAssert.ts @@ -26,8 +26,12 @@ class Assertions { isEqualTo(expected: any) { if (!json8.equal(this.actual, expected)) { + const actualJson = JSON.stringify(this.actual, jsonReplacer, 2) + const expectedJson = JSON.stringify(expected, jsonReplacer, 2) throw new AssertionError({ - message: prettyDiff(JSON.parse(JSON.stringify(this.actual, jsonReplacer)), JSON.parse(JSON.stringify(expected, jsonReplacer))) + message: `Expected \n${expectedJson}\n\nis not equal to\n\n${actualJson}\n\n${prettyDiff(JSON.parse(actualJson), JSON.parse(expectedJson))}`, + actual: this.actual, + expected: expected, }) } }