Switch to ES6 modules, change test behavior

Now project is using ES6 modules and displays coverage reports for
browser tests (made via karma), while nodejs tests only keygens.
This commit is contained in:
Slava Bacherikov 2020-06-07 00:46:02 +03:00
parent 459654151b
commit da4eb4318f
9 changed files with 182 additions and 779 deletions

View file

@ -14,11 +14,10 @@ addons:
- python3-pip - python3-pip
script: script:
- npm test - npm test
- npm run cover
- npm run browser-test - npm run browser-test
- npm run lint - npm run lint
after_sucess: after_sucess:
- npm run send-coverage - cat coverage/lcov.info | ./node_modules/.bin/coveralls
git: git:
depth: 1 depth: 1
submodules: false submodules: false

View file

@ -5,9 +5,10 @@
"displayStacktrace": "all" "displayStacktrace": "all"
} }
}], }],
"spec_dir": "src", "spec_dir": "src/keygen/",
"spec_files": ["**/*.spec.ts"], "spec_files": ["**/*.spec.ts"],
"helpers": [ "helpers": [
"./node_modules/babel-register/lib/node.js" "../node_modules/esm",
"../node_modules/ts-node/register/index.js"
] ]
} }

View file

@ -1,3 +1,5 @@
const path = require("path");
module.exports = function(config) { module.exports = function(config) {
var customLaunchers = { var customLaunchers = {
@ -33,7 +35,7 @@ module.exports = function(config) {
{pattern: './ci/spec-bundle.js', watched: false} {pattern: './ci/spec-bundle.js', watched: false}
], ],
preprocessors: { preprocessors: {
'./ci/spec-bundle.js': ['webpack', 'sourcemap'], './ci/spec-bundle.js': ['webpack'],
}, },
webpackMiddleware: { webpackMiddleware: {
scripts: 'errors-only' scripts: 'errors-only'
@ -42,14 +44,22 @@ module.exports = function(config) {
devtool: "inline-source-map", devtool: "inline-source-map",
mode: "development", mode: "development",
resolve: { resolve: {
extensions: ['.ts', '.js'], extensions: ['.ts', '.js', '.mjs'],
}, },
module: { module: {
rules: [ rules: [
{ {
test: /\.ts$/, test: /\.ts$/,
exclude: /node_modules/, exclude: /node_modules/,
use: [{loader: 'ts-loader', options: {transpileOnly: true}}] use: [
"@jsdevtools/coverage-istanbul-loader",
{loader: 'ts-loader', options: {transpileOnly: true}}
]
},
{
test: /\.m?js$/,
exclude: /node_modules/,
use: [{loader: 'babel-loader', options: {presets: ['@babel/preset-env']}}]
} }
] ]
}, },
@ -63,7 +73,13 @@ module.exports = function(config) {
recordVideo: false, recordVideo: false,
recordScreenshots: false recordScreenshots: false
}, },
reporters: ["progress", "saucelabs"], reporters: ["progress", "saucelabs", "coverage-istanbul"],
coverageIstanbulReporter: {
reports: ['text', 'text-summary', "lcovonly"],
dir: path.join(__dirname, "coverage"),
combineBrowserReports: true,
fixWebpackSourcePaths: true,
},
browsers: ["ChromeHeadless", "FirefoxHeadless"], browsers: ["ChromeHeadless", "FirefoxHeadless"],
customLaunchers: customLaunchers, customLaunchers: customLaunchers,
singleRun: true, singleRun: true,
@ -74,7 +90,7 @@ module.exports = function(config) {
'karma-firefox-launcher', 'karma-firefox-launcher',
'karma-sauce-launcher', 'karma-sauce-launcher',
'karma-webpack', 'karma-webpack',
'karma-sourcemap-loader' 'karma-coverage-istanbul-reporter'
] ]
}; };

901
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -3,29 +3,31 @@
"version": "2.0.0", "version": "2.0.0",
"description": "Password generator for BIOS", "description": "Password generator for BIOS",
"main": "src/ui.ts", "main": "src/ui.ts",
"browserlist": "> 0.25%, not dead", "browserslist": "> 0.25%, not dead",
"dependencies": { "dependencies": {
"jsbi": "^3.1.3" "jsbi": "^3.1.3"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.10.2", "@babel/core": "^7.10.2",
"@babel/preset-env": "^7.10.2", "@babel/preset-env": "^7.10.2",
"@jsdevtools/coverage-istanbul-loader": "^3.0.3",
"@types/jasmine": "^3.5.10", "@types/jasmine": "^3.5.10",
"babel-loader": "^8.1.0", "babel-loader": "^8.1.0",
"clean-webpack-plugin": "^3.0.0", "clean-webpack-plugin": "^3.0.0",
"copy-webpack-plugin": "^5.1.1", "copy-webpack-plugin": "^5.1.1",
"coveralls": "^3.1.0", "coveralls": "^3.1.0",
"esm": "^3.2.25",
"html-webpack-plugin": "^3.2.0", "html-webpack-plugin": "^3.2.0",
"jasmine": "^3.5.0", "jasmine": "^3.5.0",
"jasmine-spec-reporter": "^5.0.2", "jasmine-spec-reporter": "^5.0.2",
"karma": "^5.0.9", "karma": "^5.0.9",
"karma-chrome-launcher": "^3.1.0", "karma-chrome-launcher": "^3.1.0",
"karma-coverage-istanbul-reporter": "^3.0.3",
"karma-firefox-launcher": "^1.3.0", "karma-firefox-launcher": "^1.3.0",
"karma-jasmine": "^3.3.1", "karma-jasmine": "^3.3.1",
"karma-sauce-launcher": "^1.2.0", "karma-sauce-launcher": "^1.2.0",
"karma-sourcemap-loader": "^0.3.7", "karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^4.0.2", "karma-webpack": "^4.0.2",
"nyc": "^15.1.0",
"terser-webpack-plugin": "^3.0.3", "terser-webpack-plugin": "^3.0.3",
"ts-loader": "^6.2.2", "ts-loader": "^6.2.2",
"ts-node": "^8.10.2", "ts-node": "^8.10.2",
@ -36,14 +38,12 @@
"webpack-dev-server": "^3.11.0" "webpack-dev-server": "^3.11.0"
}, },
"scripts": { "scripts": {
"test": "ts-node ./node_modules/jasmine/bin/jasmine --config=jasmine.json", "test": "node -r esm -r ts-node/register node_modules/.bin/jasmine --config=jasmine.json",
"browser-test": "karma start",
"lint": "tslint src/**/*.ts", "lint": "tslint src/**/*.ts",
"cover": "nyc -r text -e .ts -x '**/*.spec.ts' npm test", "all": "npm test && npm run lint && npm run browser-test",
"send-coverage": "nyc report --reporter=text-lcov | coveralls",
"all": "npm test && npm run lint && npm run cover && npm run browser-test",
"build-prod": "PRODUCTION=1 GOOGLE_ANALYTICS_TAG=UA-112154345-1 webpack", "build-prod": "PRODUCTION=1 GOOGLE_ANALYTICS_TAG=UA-112154345-1 webpack",
"build-stage": "PRODUCTION=1 GOOGLE_ANALYTICS_TAG=UA-112154345-2 webpack", "build-stage": "PRODUCTION=1 GOOGLE_ANALYTICS_TAG=UA-112154345-2 webpack",
"browser-test": "karma start",
"webpack": "webpack", "webpack": "webpack",
"dev-server": "webpack-dev-server" "dev-server": "webpack-dev-server"
}, },

View file

@ -2,10 +2,8 @@
/* tslint:disable:no-var-requires */ /* tslint:disable:no-var-requires */
/* Maybe need fixing for browsers where numbers is 32-bits */ /* Maybe need fixing for browsers where numbers is 32-bits */
/* Some Acer, HP laptops. 8 digit */ /* Some Acer, HP laptops. 8 digit */
import type JSBIT from "jsbi"; import JSBI from "jsbi";
import { makeSolver } from "./utils"; import { makeSolver } from "./utils";
const JSBI = require("jsbi");
type JSBI = JSBIT;
export class Crc64 { export class Crc64 {
private static tableCache: {[key: string]: JSBI[]} = {}; private static tableCache: {[key: string]: JSBI[]} = {};

View file

@ -1,5 +1,5 @@
/* tslint:disable:no-var-requires */ /* tslint:disable:no-var-requires */
const JSBI = require("jsbi"); import JSBI from "jsbi";
import { modularPow, sony4x4Keygen, sony4x4Solver } from "./sony_4x4"; import { modularPow, sony4x4Keygen, sony4x4Solver } from "./sony_4x4";
describe("Sony 4x4 BIOS Keygen", () => { describe("Sony 4x4 BIOS Keygen", () => {

View file

@ -1,9 +1,7 @@
// based on dogbert's pwgen-sony-4x4.py // based on dogbert's pwgen-sony-4x4.py
/* tslint:disable:no-bitwise */ /* tslint:disable:no-bitwise */
/* tslint:disable:no-var-requires */ /* tslint:disable:no-var-requires */
import type JSBIT from "jsbi"; import JSBI from "jsbi";
const JSBI = require("jsbi");
type JSBI = JSBIT;
import { makeSolver } from "./utils"; import { makeSolver } from "./utils";
const otpChars: string = "9DPK7V2F3RT6HX8J"; const otpChars: string = "9DPK7V2F3RT6HX8J";

View file

@ -1,6 +1,6 @@
{ {
"compilerOptions": { "compilerOptions": {
"module": "commonjs", "module": "es6",
"lib": ["dom", "es5"], "lib": ["dom", "es5"],
"target": "es5", "target": "es5",
"moduleResolution": "node", "moduleResolution": "node",