diff --git a/package.json b/package.json index d170720..aedefc3 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "push-main": "rollup -c --environment DEST:main", "push-pserver": "rollup -c --environment DEST:pserver", "push-sim": "rollup -c --environment DEST:sim", - "test": "echo \"Error: no test specified\" && exit 1", + "test": "rollup -c rollup.test-config.js && mocha dist/test.bundle.js", "watch-main": "rollup -cw --environment DEST:main", "watch-pserver": "rollup -cw --environment DEST:pserver", "watch-sim": "rollup -cw --environment DEST:sim" @@ -26,16 +26,28 @@ }, "homepage": "https://github.com/screepers/screeps-typescript-starter#readme", "devDependencies": { + "@types/chai": "^4.1.6", "@types/lodash": "^3.10.1", + "@types/mocha": "^5.2.5", "@types/node": "^10.5.5", "@types/screeps": "^2.4.0", + "@types/sinon": "^5.0.5", + "@types/sinon-chai": "^3.2.0", + "chai": "^4.2.0", + "lodash": "^4.17.11", + "mocha": "^5.2.0", "prettier": "^1.14.0", "rollup": "^0.63.4", + "rollup-plugin-buble": "^0.19.4", "rollup-plugin-clear": "^2.0.7", "rollup-plugin-commonjs": "^9.1.4", + "rollup-plugin-multi-entry": "^2.0.2", "rollup-plugin-node-resolve": "^3.3.0", "rollup-plugin-screeps": "^0.1.2", "rollup-plugin-typescript2": "^0.16.1", + "sinon": "^6.3.5", + "sinon-chai": "^3.2.0", + "ts-node": "^7.0.1", "tslint": "^5.9.1", "tslint-config-prettier": "^1.14.0", "tslint-plugin-prettier": "^1.3.0", diff --git a/rollup.test-config.js b/rollup.test-config.js new file mode 100644 index 0000000..eb7470b --- /dev/null +++ b/rollup.test-config.js @@ -0,0 +1,30 @@ +"use strict"; + +import resolve from "rollup-plugin-node-resolve"; +import commonjs from "rollup-plugin-commonjs"; +import typescript from "rollup-plugin-typescript2"; +import buble from 'rollup-plugin-buble'; +import multiEntry from 'rollup-plugin-multi-entry'; + +export default { + input: 'test/**/*.test.ts', + output: { + file: 'dist/test.bundle.js', + name: 'lib', + sourcemap: true, + format: 'iife', + globals: { + chai: 'chai', + it: 'it', + describe: 'describe' + } + }, + external: ['chai', 'it', 'describe'], + plugins: [ + resolve(), + commonjs(), + typescript({tsconfig: "./tsconfig.json"}), + multiEntry(), + buble() + ] +} diff --git a/test/mocha.opts b/test/mocha.opts new file mode 100644 index 0000000..e94ac68 --- /dev/null +++ b/test/mocha.opts @@ -0,0 +1,12 @@ +--require test/setup-node.js +--require ts-node/register +--ui bdd + +--reporter spec +--bail +--full-trace +--watch-extensions tsx,ts +--colors + +--recursive +--timeout 5000 diff --git a/test/setup-node.js b/test/setup-node.js new file mode 100644 index 0000000..1975df8 --- /dev/null +++ b/test/setup-node.js @@ -0,0 +1,6 @@ +//inject mocha globally to allow custom interface refer without direct import - bypass bundle issue +global._ = require('lodash'); +global.mocha = require('mocha'); +global.chai = require('chai'); +global.sinon = require('sinon'); +global.chai.use(require('sinon-chai'));