test.ifNotCiOsx("nsis boring, MUI_HEADER", () => { let installerHeaderPath: string | null = null return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(["nsis"]), devMetadata: { build: { nsis: { oneClick: false, } } }, effectiveOptionComputed: options => { const defines = options[0] assertThat(defines.MUI_HEADERIMAGE).isEqualTo(null) assertThat(defines.MUI_HEADERIMAGE_BITMAP).isEqualTo(installerHeaderPath) assertThat(defines.MUI_HEADERIMAGE_RIGHT).isEqualTo(null) // speedup, do not build - another MUI_HEADER test will test build return true } }, { tempDirCreated: projectDir => { installerHeaderPath = path.join(projectDir, "build", "installerHeader.bmp") return copy(getTestAsset("installerHeader.bmp"), installerHeaderPath) } } ) })
test("detect install-spinner, certificateFile/password", () => { let platformPackager: CheckingWinPackager = null let loadingGifPath: string = null return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget("squirrel"), platformPackagerFactory: (packager, platform, cleanupTasks) => platformPackager = new CheckingWinPackager(packager), config: { win: { certificatePassword: "******", } } }, { projectDirCreated: it => { loadingGifPath = path.join(it, "build", "install-spinner.gif") return BluebirdPromise.all([ copyTestAsset("install-spinner.gif", loadingGifPath), modifyPackageJson(it, data => { data.build.win = { certificateFile: "secretFile", certificatePassword: "******", } })]) }, packed: async () => { expect(platformPackager.effectiveDistOptions.loadingGif).toEqual(loadingGifPath) expect(platformPackager.signOptions.cert).toEqual("secretFile") expect(platformPackager.signOptions.password).toEqual("pass") }, }) })
test.ifNotCiOsx("nsis boring, MUI_HEADER as option", () => { let installerHeaderPath: string | null = null return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(["nsis"]), devMetadata: { build: { nsis: { oneClick: false, installerHeader: "foo.bmp" } } }, effectiveOptionComputed: options => { const defines = options[0] assertThat(defines.MUI_HEADERIMAGE).isEqualTo(null) assertThat(defines.MUI_HEADERIMAGE_BITMAP).isEqualTo(installerHeaderPath) assertThat(defines.MUI_HEADERIMAGE_RIGHT).isEqualTo(null) // test that we can build such installer return false } }, { tempDirCreated: projectDir => { installerHeaderPath = path.join(projectDir, "foo.bmp") return rename(path.join(projectDir, "installerHeader.bmp"), installerHeaderPath) } } ) })
test("detect install-spinner", () => { let platformPackager: CheckingWinPackager = null let loadingGifPath: string = null // todo all PackagerOptions should be optional otherwise it is not possible to pass only several to override dev package.json const devMetadata: any = { build: { win: { certificatePassword: "******", } } } return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(), platformPackagerFactory: (packager, platform, cleanupTasks) => platformPackager = new CheckingWinPackager(packager, cleanupTasks), devMetadata: devMetadata }, { tempDirCreated: it => { loadingGifPath = path.join(it, "build", "install-spinner.gif") return BluebirdPromise.all([ move(path.join(it, "install-spinner.gif"), loadingGifPath), modifyPackageJson(it, data => { data.build.win = { certificateFile: "secretFile", certificatePassword: "******", } })]) }, packed: () => { assertThat(platformPackager.effectiveDistOptions.loadingGif).equal(loadingGifPath) assertThat(platformPackager.effectiveDistOptions.certificateFile).equal("secretFile") return BluebirdPromise.resolve(null) }, }) })
test.ifNotCiMac("boring, MUI_HEADER as option", () => { let installerHeaderPath: string | null = null return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(["nsis"], Arch.ia32, Arch.x64), config: { nsis: { oneClick: false, installerHeader: "foo.bmp" } }, effectiveOptionComputed: async (it) => { const defines = it[0] expect(defines.MUI_HEADERIMAGE).toBeNull() expect(defines.MUI_HEADERIMAGE_BITMAP).toEqual(installerHeaderPath) expect(defines.MUI_HEADERIMAGE_RIGHT).toBeNull() // test that we can build such installer return false } }, { projectDirCreated: projectDir => { installerHeaderPath = path.join(projectDir, "foo.bmp") return copyTestAsset("installerHeader.bmp", installerHeaderPath) }, } ) })
test("detect install-spinner, certificateFile/password", () => { let platformPackager: CheckingWinPackager = null let loadingGifPath: string = null return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(), platformPackagerFactory: (packager, platform, cleanupTasks) => platformPackager = new CheckingWinPackager(packager, cleanupTasks), devMetadata: { build: { win: { certificatePassword: "******", } } } }, { tempDirCreated: it => { loadingGifPath = path.join(it, "build", "install-spinner.gif") return BluebirdPromise.all([ move(path.join(it, "install-spinner.gif"), loadingGifPath), modifyPackageJson(it, data => { data.build.win = { certificateFile: "secretFile", certificatePassword: "******", } })]) }, packed: () => { assertThat(platformPackager.effectiveDistOptions.loadingGif).isEqualTo(loadingGifPath) assertThat(platformPackager.signOptions.cert).isEqualTo("secretFile") assertThat(platformPackager.signOptions.password).isEqualTo("pass") return BluebirdPromise.resolve(null) }, }) })
test.ifDevOrWinCi("beta version", () => { const metadata: any = { version: "3.0.0-beta.2" } return assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(["squirrel", "nsis"]), devMetadata: metadata }) })
test.ifDevOrLinuxCi("nsis 32 perMachine", () => assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(["nsis"], Arch.ia32), devMetadata: { build: { nsis: { perMachine: true, } } } }))
test.ifDevOrLinuxCi("nsis - custom include", () => assertPack("test-app-one", { targets: Platform.WINDOWS.createTarget(["nsis"]), }, { tempDirCreated: projectDir => copy(getTestAsset("installer.nsh"), path.join(projectDir, "build", "installer.nsh")), packed: projectDir => BluebirdPromise.all([ assertThat(path.join(projectDir, "build", "customHeader")).isFile(), assertThat(path.join(projectDir, "build", "customInit")).isFile(), assertThat(path.join(projectDir, "build", "customInstall")).isFile(), ]), }))
test.ifNotCiOsx("nsis boring", () => assertPack("test-app-one", _signed({ targets: Platform.WINDOWS.createTarget(["nsis"]), devMetadata: { build: { nsis: { oneClick: false, } } } })))