diff --git a/Makefile b/Makefile deleted file mode 100644 index 290786813e..0000000000 --- a/Makefile +++ /dev/null @@ -1,176 +0,0 @@ -BROWSERIFY := "node_modules/.bin/browserify" -KARMA := "node_modules/.bin/karma" -MOCHA := "bin/mocha" -NYC := "node_modules/.bin/nyc" - -ifdef COVERAGE -define test_node -$(NYC) --no-clean --report-dir coverage/reports/$(1) $(MOCHA) -endef -else -test_node := $(MOCHA) -endif - -TM_BUNDLE = JavaScript\ mocha.tmbundle -SRC = $(shell find lib -name "*.js" -type f | LC_ALL=C sort) -TESTS = $(shell find test -name "*.js" -type f | sort) - -all: mocha.js - -mocha.js: $(SRC) browser-entry.js - @printf "==> [Browser :: build]\n" - mkdir -p ${@D} - $(BROWSERIFY) ./browser-entry \ - --plugin ./scripts/dedefine \ - --ignore 'fs' \ - --ignore 'glob' \ - --ignore 'path' \ - --ignore 'supports-color' > $@ - -clean: - @printf "==> [Clean]\n" - rm -f mocha.js - -lint: - @printf "==> [Test :: Lint]\n" - npm run lint - npm run markdownlint - -test-node: test-bdd test-tdd test-qunit test-exports test-unit test-integration test-jsapi test-compilers test-requires test-reporters test-only test-global-only - -test-browser: clean mocha.js test-browser-unit test-browser-bdd test-browser-qunit test-browser-tdd test-browser-esm - -test: lint test-node test-browser - -test-browser-unit: - @printf "==> [Test :: Browser]\n" - NODE_PATH=. $(KARMA) start --single-run - -test-browser-bdd: - @printf "==> [Test :: Browser :: BDD]\n" - MOCHA_TEST=bdd $(MAKE) test-browser-unit - -test-browser-qunit: - @printf "==> [Test :: Browser :: QUnit]\n" - MOCHA_TEST=qunit $(MAKE) test-browser-unit - -test-browser-tdd: - @printf "==> [Test :: Browser :: TDD]\n" - MOCHA_TEST=tdd $(MAKE) test-browser-unit - -test-browser-esm: - @printf "==> [Test :: Browser :: ESM]\n" - MOCHA_TEST=esm $(MAKE) test-browser-unit - -test-jsapi: - @printf "==> [Test :: JS API]\n" - node test/jsapi - -test-unit: - @printf "==> [Test :: Unit]\n" - $(call test_node,unit) test/unit/*.spec.js \ - test/node-unit/*.spec.js \ - --growl - -test-integration: - @printf "==> [Test :: Integrations]\n" - $(call test_node,integration) --timeout 5000 --slow 500 \ - test/integration/*.spec.js - -test-compilers: - @printf "==> [Test :: Compilers]\n" - $(call test_node,compilers-coffee) --compilers coffee:coffee-script/register \ - test/compiler - - $(call test_node,compilers-custom) \ - --compilers foo:./test/compiler-fixtures/foo.fixture \ - test/compiler - - $(call test_node,compilers-multiple) \ - --compilers coffee:coffee-script/register,foo:./test/compiler-fixtures/foo.fixture \ - test/compiler - -test-requires: - @printf "==> [Test :: Requires]\n" - $(call test_node,requires) --compilers coffee:coffee-script/register \ - --require test/require/a.js \ - --require test/require/b.coffee \ - --require test/require/c.js \ - --require test/require/d.coffee \ - test/require/require.spec.js - -test-bdd: - @printf "==> [Test :: BDD]\n" - $(call test_node,bdd) --ui bdd \ - test/interfaces/bdd.spec - -test-tdd: - @printf "==> [Test :: TDD]\n" - $(call test_node,tdd) --ui tdd \ - test/interfaces/tdd.spec - -test-qunit: - @printf "==> [Test :: QUnit]\n" - $(call test_node,qunit) --ui qunit \ - test/interfaces/qunit.spec - -test-exports: - @printf "==> [Test :: Exports]\n" - $(call test_node,exports) --ui exports \ - test/interfaces/exports.spec - -test-reporters: - @printf "==> [Test :: Reporters]\n" - $(call test_node,reporters) test/reporters/*.spec.js - -test-only: - @printf "==> [Test :: Only]\n" - $(call test_node,only-tdd) --ui tdd \ - test/only/tdd.spec - - $(call test_node,only-bdd) --ui bdd \ - test/only/bdd.spec - - $(call test_node,only-bdd-require) --ui qunit \ - test/only/bdd-require.spec - -test-global-only: - @printf "==> [Test :: Global Only]\n" - $(call test_node,global-only-tdd) --ui tdd \ - test/only/global/tdd.spec - - $(call test_node,global-only-bdd) --ui bdd \ - test/only/global/bdd.spec - - $(call test_node,global-only-qunit) --ui qunit \ - test/only/global/qunit.spec - -test-mocha: - @printf "==> [Test :: Mocha]\n" - $(call test_node,mocha) test/mocha - -non-tty: - @printf "==> [Test :: Non-TTY]\n" - $(call test_node,non-tty-dot) --reporter dot \ - test/interfaces/bdd.spec 2>&1 > /tmp/dot.out - - @echo dot: - @cat /tmp/dot.out - - $(call test_node,non-tty-list) --reporter list \ - test/interfaces/bdd.spec 2>&1 > /tmp/list.out - - @echo list: - @cat /tmp/list.out - - $(call test_node,non-tty-spec) --reporter spec \ - test/interfaces/bdd.spec 2>&1 > /tmp/spec.out - - @echo spec: - @cat /tmp/spec.out - -tm: - @printf "==> [TM]\n" - open editors/$(TM_BUNDLE) - -.PHONY: test-jsapi test-compilers watch test test-node test-bdd test-tdd test-qunit test-exports test-unit test-integration non-tty tm clean test-browser test-browser-unit test-browser-bdd test-browser-qunit test-browser-tdd test-browser-exports lint test-only test-global-only diff --git a/package-scripts.js b/package-scripts.js new file mode 100644 index 0000000000..bad8d3a72c --- /dev/null +++ b/package-scripts.js @@ -0,0 +1,110 @@ +'use strict'; + +const BROWSERIFY = 'node_modules/.bin/browserify'; +const KARMA = 'node_modules/.bin/karma'; +const MOCHA = 'bin/mocha'; +const NYC = 'node_modules/.bin/nyc'; +const TM_BUNDLE = 'JavaScript\\ mocha.tmbundle'; + +const COVERAGE_ON = process.env.COVERAGE || process.argv.some((arg) => arg.toLowerCase().indexOf('coverage') !== -1); + +function test (testName, params) { + const prefix = COVERAGE_ON ? `${NYC} --no-clean --report-dir coverage/reports/${testName}` : ''; + return `${prefix} ${MOCHA} ${params}`; +} + +module.exports = { + scripts: { + build: `${BROWSERIFY} ./browser-entry --plugin ./scripts/dedefine --ignore 'fs' --ignore 'glob' --ignore 'path' --ignore 'supports-color' > mocha.js`, + lint: { + default: 'nps lint.code lint.markdown', + code: 'eslint . bin/*', + markdown: 'markdownlint "*.md" "docs/**/*.md" ".github/*.md"' + }, + clean: 'rm -f mocha.js', + test: { + default: 'nps lint.code test.node test.browser', + node: { + default: 'nps test.node.all', + all: { + script: 'nps ' + + 'test.node.bdd ' + + 'test.node.tdd ' + + 'test.node.qunit ' + + 'test.node.exports ' + + 'test.node.unit ' + + 'test.node.integration ' + + 'test.node.jsapi ' + + 'test.node.compilers ' + + 'test.node.requires ' + + 'test.node.reporters ' + + 'test.node.only ' + + 'test.node.globalOnly', + description: 'Run all tests for node environment' + }, + bdd: test('bdd', '--ui bdd test/interfaces/bdd.spec'), + tdd: test('tdd', '--ui tdd test/interfaces/tdd.spec'), + qunit: test('qunit', '--ui qunit test/interfaces/qunit.spec'), + exports: test('exports', '--ui exports test/interfaces/exports.spec'), + unit: test('unit', 'test/unit/*.spec.js test/node-unit/*.spec.js --growl'), + integration: test('integration', '--timeout 5000 --slow 500 test/integration/*.spec.js'), + jsapi: 'node test/jsapi', + compilers: { + default: 'nps test.node.compilers.coffee test.node.compilers.custom test.node.compilers.multiple', + coffee: test('compilers-coffee', '--compilers coffee:coffee-script/register test/compiler'), + custom: test('compilers-custom', '--compilers foo:./test/compiler-fixtures/foo.fixture test/compiler'), + multiple: test('compilers-multiple', '--compilers coffee:coffee-script/register,foo:./test/compiler-fixtures/foo.fixture test/compiler') + }, + requires: test('requires', '--compilers coffee:coffee-script/register ' + + '--require test/require/a.js ' + + '--require test/require/b.coffee ' + + '--require test/require/c.js ' + + '--require test/require/d.coffee ' + + 'test/require/require.spec.js'), + reporters: test('reporters', 'test/reporters/*.spec.js'), + only: { + default: 'nps test.node.only.bdd test.node.only.tdd test.node.only.bddRequire', + bdd: test('only-bdd', '--ui bdd test/only/bdd.spec'), + tdd: test('only-tdd', '--ui tdd test/only/tdd.spec'), + bddRequire: test('only-bdd-require', '--ui qunit test/only/bdd-require.spec') + }, + globalOnly: { + default: 'nps test.node.globalOnly.bdd test.node.globalOnly.tdd test.node.globalOnly.qunit', + bdd: test('global-only-bdd', '--ui bdd test/only/global/bdd.spec'), + tdd: test('global-only-tdd', '--ui tdd test/only/global/tdd.spec'), + qunit: test('global-only-qunit', '--ui qunit test/only/global/qunit.spec') + } + }, + browser: { + default: 'nps ' + + 'clean ' + + 'build.mochajs ' + + 'test.browser.unit ' + + 'test.browser.bdd ' + + 'test.browser.tdd ' + + 'test.browser.qunit ' + + 'test.browser.esm', + unit: `NODE_PATH=. ${KARMA} start --single-run`, + bdd: 'MOCHA_TEST=bdd nps test.browser.unit', + tdd: 'MOCHA_TEST=tdd nps test.browser.unit', + qunit: 'MOCHA_TEST=qunit nps test.browser.unit', + esm: 'MOCHA_TEST=esm nps test.browser.unit' + }, + nonTTY: { + default: 'nps test.nonTTY.dot test.nonTTY.list test.nonTTY.spec', + dot: test('non-tty-dot', '--reporter dot test/interfaces/bdd.spec 2>&1 > /tmp/dot.out && echo "dot:" && cat /tmp/dot.out'), + list: test('non-tty-list', '--reporter list test/interfaces/bdd.spec 2>&1 > /tmp/list.out && echo "list:" && cat /tmp/list.out'), + spec: test('non-tty-dot', '--reporter spec test/interfaces/bdd.spec 2>&1 > /tmp/spec.out && echo "spec:" && cat /tmp/spec.out') + } + }, + tm: `open editors/${TM_BUNDLE}`, + prepublishOnly: 'nps test clean build', + coveralls: 'nyc report --reporter=text-lcov | coveralls', + prebuildDocs: 'rm -rf docs/_dist && node scripts/docs-update-toc.js', + buildDocs: 'nps prebuildDocs && bundle exec jekyll build --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts && nps postbuildDocs', + postbuildDocs: 'buildProduction docs/_site/index.html --outroot docs/_dist --canonicalroot https://mochajs.org/ --optimizeimages --svgo --inlinehtmlimage 9400 --inlinehtmlscript 0 --asyncscripts && cp docs/_headers docs/_dist/_headers && node scripts/netlify-headers.js >> docs/_dist/_headers', + prewatchDocs: 'node scripts/docs-update-toc.js', + watchDocs: 'nps prewatchDocs && bundle exec jekyll serve --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts --watch', + withCoverage: 'echo "Code Coverage enabled"' + } +}; diff --git a/package.json b/package.json index 3635bba869..4681b3c221 100644 --- a/package.json +++ b/package.json @@ -299,16 +299,8 @@ "node": ">= 4.0.0" }, "scripts": { - "lint": "eslint . bin/*", - "markdownlint": "markdownlint \"*.md\" \"docs/**/*.md\" \".github/*.md\"", - "test": "make clean && make test", - "prepublishOnly": "npm test && make clean && make mocha.js", - "coveralls": "nyc report --reporter=text-lcov | coveralls", - "prebuildDocs": "rm -rf docs/_dist && node scripts/docs-update-toc.js", - "buildDocs": "bundle exec jekyll build --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts", - "postbuildDocs": "buildProduction docs/_site/index.html --outroot docs/_dist --canonicalroot https://mochajs.org/ --optimizeimages --svgo --inlinehtmlimage 9400 --inlinehtmlscript 0 --asyncscripts && cp docs/_headers docs/_dist/_headers && node scripts/netlify-headers.js >> docs/_dist/_headers", - "prewatchDocs": "node scripts/docs-update-toc.js", - "watchDocs": "bundle exec jekyll serve --source ./docs --destination ./docs/_site --config ./docs/_config.yml --safe --drafts --watch" + "start": "nps", + "test": "nps test" }, "dependencies": { "browser-stdout": "1.3.0", @@ -347,6 +339,7 @@ "karma-sauce-launcher": "^1.2.0", "markdown-toc": "^1.2.0", "markdownlint-cli": "^0.6.0", + "nps": "^5.7.1", "nyc": "^11.2.1", "rimraf": "^2.5.2", "svgo": "^0.7.2",