From 7ac6ca28b62bf540d2c6bac094226e218ca9fad9 Mon Sep 17 00:00:00 2001 From: develar Date: Sat, 7 May 2016 11:30:30 +0200 Subject: [PATCH] fix: user-friendly error message "Error: buffer is not ico" Closes #349 --- .idea/runConfigurations/winPackagerTest.xml | 2 +- package.json | 4 ++-- src/winPackager.ts | 6 +++++- test/src/winPackagerTest.ts | 8 ++++++-- tslint.json | 3 ++- 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.idea/runConfigurations/winPackagerTest.xml b/.idea/runConfigurations/winPackagerTest.xml index 2763e893ff3..3180b7ea3fc 100644 --- a/.idea/runConfigurations/winPackagerTest.xml +++ b/.idea/runConfigurations/winPackagerTest.xml @@ -1,5 +1,5 @@ - + diff --git a/package.json b/package.json index 915e6c91618..8030d47dde1 100644 --- a/package.json +++ b/package.json @@ -105,8 +105,8 @@ "should": "^8.3.1", "ts-babel": "^0.8.6", "tsconfig-glob": "^0.4.3", - "tslint": "next", - "typescript": "1.9.0-dev.20160505", + "tslint": "^3.9.0-dev.0", + "typescript": "1.9.0-dev.20160507", "whitespace": "^2.0.0" }, "babel": { diff --git a/src/winPackager.ts b/src/winPackager.ts index eebcb8bc8c2..5fa42dadb82 100644 --- a/src/winPackager.ts +++ b/src/winPackager.ts @@ -206,6 +206,10 @@ async function checkIcon(file: string): Promise { await close(fd) } + if (!isIco(buffer)) { + throw new Error(`Windows icon is not valid ico file, please fix "${file}"`) + } + const sizes = parseIco(buffer) for (let size of sizes) { if (size!.w >= 256 && size!.h >= 256) { @@ -213,7 +217,7 @@ async function checkIcon(file: string): Promise { } } - throw new Error("Windows icon image size must be at least 256x256") + throw new Error(`Windows icon size must be at least 256x256, please fix "${file}"`) } interface Size { diff --git a/test/src/winPackagerTest.ts b/test/src/winPackagerTest.ts index 804f5d58c06..0cbf29446f4 100755 --- a/test/src/winPackagerTest.ts +++ b/test/src/winPackagerTest.ts @@ -1,7 +1,7 @@ import { Platform } from "out" import test from "./helpers/avaEx" import { assertPack, platform, modifyPackageJson } from "./helpers/packTester" -import { move } from "fs-extra-p" +import { move, outputFile } from "fs-extra-p" import * as path from "path" import { WinPackager, computeDistOut } from "out/winPackager" import { BuildInfo } from "out/platformPackager" @@ -69,7 +69,11 @@ test("detect install-spinner", () => { test.ifNotCiOsx("icon < 256", (t: any) => t.throws(assertPack("test-app-one", platform(Platform.WINDOWS), { tempDirCreated: projectDir => move(path.join(projectDir, "build", "incorrect.ico"), path.join(projectDir, "build", "icon.ico"), {clobber: true}) -}), /Windows icon image size must be at least 256x256/)) +}), /Windows icon size must be at least 256x256, please fix ".+/)) + +test.ifNotCiOsx("icon not an image", (t: any) => t.throws(assertPack("test-app-one", platform(Platform.WINDOWS), { + tempDirCreated: projectDir => outputFile(path.join(projectDir, "build", "icon.ico"), "foo") +}), /Windows icon is not valid ico file, please fix ".+/)) class CheckingWinPackager extends WinPackager { effectiveDistOptions: any diff --git a/tslint.json b/tslint.json index 0e88b650ef4..bc1e4732ee4 100644 --- a/tslint.json +++ b/tslint.json @@ -71,5 +71,6 @@ "no-invalid-this": true, "no-reference": true, "semicolon": "never", - "prefer-const": "true" + "prefer-const": "true", + "one-variable-per-declaration": "true" } \ No newline at end of file