async function checkWindowsResult(packager: Packager, checkOptions: AssertPackOptions, artifacts: Array<ArtifactCreated>, arch: Arch) { const productName = getProductName(packager.metadata, packager.devMetadata) function getExpectedFileNames(archSuffix: string) { const result = [ `RELEASES`, `${productName} Setup 1.1.0${archSuffix}.exe`, `TestApp-1.1.0-full.nupkg`, ] const buildOptions = packager.devMetadata.build.win if (buildOptions != null && buildOptions.remoteReleases != null) { result.push(`${productName}-1.1.0-delta.nupkg`) } return result } const archSuffix = getArchSuffix(arch) assertThat(getFileNames(artifacts)).isEqualTo((checkOptions == null || checkOptions.expectedArtifacts == null ? getExpectedFileNames(archSuffix) : checkOptions.expectedArtifacts.slice()).sort()) if (checkOptions != null && checkOptions.expectedArtifacts != null) { return } assertThat(artifacts.map(it => it.artifactName).filter(it => it != null)).isEqualTo([`TestApp-Setup-1.1.0${archSuffix}.exe`]) const packageFile = path.join(path.dirname(artifacts[0].file), `TestApp-1.1.0-full.nupkg`) const unZipper = new DecompressZip(packageFile) const fileDescriptors = await unZipper.getFiles() const files = pathSorter(fileDescriptors.map(it => it.path.replace(/\\/g, "/")).filter(it => (!it.startsWith("lib/net45/locales/") || it === "lib/net45/locales/en-US.pak") && !it.endsWith(".psmdcp"))) // console.log(JSON.stringify(files, null, 2)) const expectedContents = checkOptions == null || checkOptions.expectedContents == null ? expectedWinContents : checkOptions.expectedContents assertThat(files).isEqualTo(expectedContents.map(it => { if (it === "lib/net45/TestApp.exe") { return `lib/net45/${encodeURI(productName)}.exe` } else { return it } })) if (checkOptions == null || checkOptions.expectedContents == null) { await unZipper.extractFile(fileDescriptors.filter(it => it.path === "TestApp.nuspec")[0], { path: path.dirname(packageFile), }) const expectedSpec = (await readFile(path.join(path.dirname(packageFile), "TestApp.nuspec"), "utf8")).replace(/\r\n/g, "\n") // console.log(expectedSpec) assertThat(expectedSpec).isEqualTo(`<?xml version="1.0"?> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>TestApp</id> <version>1.1.0</version> <title>${productName}</title> <authors>Foo Bar</authors> <owners>Foo Bar</owners> <iconUrl>https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Test Application (test quite “ #378)</description> <copyright>Copyright © ${new Date().getFullYear()} Foo Bar</copyright> <projectUrl>http://foo.example.com</projectUrl> </metadata> </package>`) } }
async function checkWindowsResult(packager: Packager, checkOptions: AssertPackOptions, artifacts: Array<ArtifactCreated>, arch: Arch, nameToTarget: Map<String, Target>) { const appInfo = packager.appInfo let squirrel = false const artifactNames: Array<string> = [] const expectedFileNames: Array<string> = [] const archSuffix = getArchSuffix(arch) const buildOptions = packager.devMetadata.build.win for (let target of nameToTarget.keys()) { if (target === "squirrel") { squirrel = true expectedFileNames.push("RELEASES", `${appInfo.productFilename} Setup ${appInfo.version}${archSuffix}.exe`, `${appInfo.name}-${convertVersion(appInfo.version)}-full.nupkg`) if (buildOptions != null && buildOptions.remoteReleases != null) { expectedFileNames.push(`${appInfo.name}-${convertVersion(appInfo.version)}-delta.nupkg`) } artifactNames.push(`${appInfo.name}-Setup-${appInfo.version}${archSuffix}.exe`) } else if (target === "nsis") { expectedFileNames.push(`${appInfo.productFilename} Setup ${appInfo.version}.exe`) artifactNames.push(`${appInfo.name}-Setup-${appInfo.version}.exe`) } else { expectedFileNames.push(`${appInfo.productFilename}-${appInfo.version}${archSuffix}-win.${target}`) artifactNames.push(`${appInfo.name}-${appInfo.version}${archSuffix}-win.${target}`) } } assertThat(getFileNames(artifacts)).containsAll(expectedFileNames) if (!squirrel) { return } assertThat(artifacts.map(it => it.artifactName).filter(it => it != null)).containsAll(artifactNames) const packageFile = artifacts.find(it => it.file.endsWith("-full.nupkg"))!.file const unZipper = new DecompressZip(packageFile) const fileDescriptors = await unZipper.getFiles() const files = pathSorter(fileDescriptors.map(it => it.path.replace(/\\/g, "/")).filter(it => (!it.startsWith("lib/net45/locales/") || it === "lib/net45/locales/en-US.pak") && !it.endsWith(".psmdcp"))) // console.log(JSON.stringify(files, null, 2)) const expectedContents = checkOptions == null || checkOptions.expectedContents == null ? expectedWinContents : checkOptions.expectedContents assertThat(files).isEqualTo(pathSorter(expectedContents.map(it => { if (it === "lib/net45/TestApp.exe") { if (appInfo.productFilename === "Test App ßW") { return `lib/net45/Test%20App%20%C3%9FW.exe` } return `lib/net45/${encodeURI(appInfo.productFilename).replace(/%5B/g, "[").replace(/%5D/g, "]")}.exe` } else { return it } }))) if (checkOptions == null || checkOptions.expectedContents == null) { await unZipper.extractFile(fileDescriptors.filter(it => it.path === "TestApp.nuspec")[0], { path: path.dirname(packageFile), }) const expectedSpec = (await readFile(path.join(path.dirname(packageFile), "TestApp.nuspec"), "utf8")).replace(/\r\n/g, "\n") // console.log(expectedSpec) assertThat(expectedSpec).isEqualTo(`<?xml version="1.0"?> <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"> <metadata> <id>TestApp</id> <version>${convertVersion(appInfo.version)}</version> <title>${appInfo.productName}</title> <authors>Foo Bar</authors> <owners>Foo Bar</owners> <iconUrl>https://raw.githubusercontent.com/szwacz/electron-boilerplate/master/resources/windows/icon.ico</iconUrl> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Test Application (test quite “ #378)</description> <copyright>Copyright © ${new Date().getFullYear()} Foo Bar</copyright> <projectUrl>http://foo.example.com</projectUrl> </metadata> </package>`) } }