diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 917ac9e..c672943 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,3 +23,4 @@ jobs: - run: npm i - run: npm test - run: npm run build + - run: node .github/workflows/test-build.sh diff --git a/.github/workflows/test-build.js b/.github/workflows/test-build.js new file mode 100644 index 0000000..a3e8ebc --- /dev/null +++ b/.github/workflows/test-build.js @@ -0,0 +1,22 @@ +const assert = require('assert'); +const path = require('path'); + +const chardet = require(process.cwd()); + +assert(typeof chardet.analyse, 'function'); +assert(typeof chardet.detect, 'function'); +assert(typeof chardet.detectFile, 'function'); +assert(typeof chardet.detectFileSync, 'function'); + +assert.deepStrictEqual(chardet.analyse(Buffer.from('This is a test')), [ + { confidence: 98, name: 'ISO-8859-1', lang: 'en' }, + { confidence: 98, name: 'ISO-8859-2', lang: 'hu' }, + { confidence: 10, name: 'UTF-8', lang: undefined }, + { confidence: 10, name: 'Shift_JIS', lang: 'ja' }, + { confidence: 10, name: 'Big5', lang: 'zh' }, + { confidence: 10, name: 'EUC-JP', lang: 'ja' }, + { confidence: 10, name: 'EUC-KR', lang: 'ko' }, + { confidence: 10, name: 'GB18030', lang: 'zh' }, +]); + +console.log(' > test-build.js OK'); diff --git a/.github/workflows/test-build.sh b/.github/workflows/test-build.sh new file mode 100644 index 0000000..9bde9a1 --- /dev/null +++ b/.github/workflows/test-build.sh @@ -0,0 +1,6 @@ +#!/bin/sh -ex + +export PATH=$PATH:$(npm bin) + +node ./.github/workflows/test-build.js +ts-node ./.github/workflows/test-build.ts \ No newline at end of file diff --git a/.github/workflows/test-build.ts b/.github/workflows/test-build.ts new file mode 100644 index 0000000..54eba2d --- /dev/null +++ b/.github/workflows/test-build.ts @@ -0,0 +1,29 @@ +import assert from 'assert'; +import path from 'path'; + +const main = async () => { + const chardet = await import(process.cwd()); + + assert(typeof chardet.analyse, 'function'); + assert(typeof chardet.detect, 'function'); + assert(typeof chardet.detectFile, 'function'); + assert(typeof chardet.detectFileSync, 'function'); + + assert.deepStrictEqual(chardet.analyse(Buffer.from('This is a test')), [ + { confidence: 98, name: 'ISO-8859-1', lang: 'en' }, + { confidence: 98, name: 'ISO-8859-2', lang: 'hu' }, + { confidence: 10, name: 'UTF-8', lang: undefined }, + { confidence: 10, name: 'Shift_JIS', lang: 'ja' }, + { confidence: 10, name: 'Big5', lang: 'zh' }, + { confidence: 10, name: 'EUC-JP', lang: 'ja' }, + { confidence: 10, name: 'EUC-KR', lang: 'ko' }, + { confidence: 10, name: 'GB18030', lang: 'zh' }, + ]); +}; + +main() + .then(() => console.log(' > test-build.ts OK')) + .catch((err) => { + console.error(err); + process.exit(1); + }); diff --git a/package.json b/package.json index 3e97308..32e46bd 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "prettier": "^2.1.2", "semantic-release": "^17.1.2", "ts-jest": "^26.4.0", + "ts-node": "^10.9.1", "typescript": "^4.8.4" }, "keywords": [