diff --git a/Makefile.js b/Makefile.js index eca49ed..a1cf6cd 100644 --- a/Makefile.js +++ b/Makefile.js @@ -33,7 +33,7 @@ const OPEN_SOURCE_LICENSES = [ const NODE_MODULES = "./node_modules/", // Utilities - intentional extra space at the end of each string - MOCHA = `${NODE_MODULES}mocha/bin/_mocha `, + JEST = `${NODE_MODULES}jest/bin/jest.js`, // Files MAKEFILE = "./Makefile.js", @@ -103,7 +103,7 @@ target.lint = function() { target.test = function() { target.lint(); - const lastReturn = nodeCLI.exec("istanbul", "cover", MOCHA, "-- -c", TEST_FILES); + const lastReturn = nodeCLI.exec(JEST); let errors = 0; if (lastReturn.code !== 0) { diff --git a/package.json b/package.json index 7cd6a5f..790cfed 100644 --- a/package.json +++ b/package.json @@ -18,15 +18,11 @@ }, "license": "BSD-2-Clause", "devDependencies": { - "chai": "3.5.0", - "dateformat": "2.0.0", "eslint": "3.19.0", "eslint-config-eslint": "4.0.0", "eslint-plugin-node": "4.2.2", "eslint-release": "0.10.3", - "istanbul": "0.4.5", - "leche": "2.1.2", - "mocha": "3.3.0", + "jest": "20.0.4", "npm-license": "0.3.3", "shelljs": "0.7.7", "shelljs-nodecli": "0.1.1", @@ -43,6 +39,7 @@ ], "scripts": { "test": "node Makefile.js test", + "jest": "jest", "lint": "node Makefile.js lint", "release": "eslint-release", "ci-release": "eslint-ci-release", @@ -56,5 +53,11 @@ }, "peerDependencies": { "typescript": "*" + }, + "jest": { + "testRegex": "tests\/lib\/.+\\.js$", + "testPathIgnorePatterns": [], + "collectCoverage": true, + "coverageReporters": ["text-summary"] } } diff --git a/tests/lib/.eslintrc.yml b/tests/lib/.eslintrc.yml index 72b9c8c..e19b2cf 100644 --- a/tests/lib/.eslintrc.yml +++ b/tests/lib/.eslintrc.yml @@ -1,2 +1,2 @@ env: - mocha: true + jest: true diff --git a/tests/lib/basics.js b/tests/lib/basics.js index 7ac087f..a5ab496 100644 --- a/tests/lib/basics.js +++ b/tests/lib/basics.js @@ -11,12 +11,10 @@ // Requirements //------------------------------------------------------------------------------ -const assert = require("chai").assert, - leche = require("leche"), - path = require("path"), +const path = require("path"), parser = require("../../parser"), shelljs = require("shelljs"), - tester = require("./tester"); + testUtils = require("../../tools/test-utils"); //------------------------------------------------------------------------------ // Setup @@ -47,7 +45,7 @@ describe("basics", () => { }; }); - leche.withData(testFiles, filename => { + testFiles.forEach(filename => { // Uncomment and fill in filename to focus on a single file // var filename = "jsx/invalid-matching-placeholder-in-closing-tag"; @@ -59,7 +57,7 @@ describe("basics", () => { try { result = parser.parse(code, config); - result = tester.getRaw(result); + result = testUtils.getRaw(result); } catch (ex) { // format of error isn't exactly the same, just check if it's expected @@ -72,7 +70,7 @@ describe("basics", () => { } // console.log(JSON.stringify(result, null, 4)); - assert.deepEqual(result, expected); + expect(result).toEqual(expected); }); diff --git a/tests/lib/comments.js b/tests/lib/comments.js index 178b7b6..eeac34f 100644 --- a/tests/lib/comments.js +++ b/tests/lib/comments.js @@ -30,12 +30,10 @@ // Requirements //------------------------------------------------------------------------------ -const assert = require("chai").assert, - leche = require("leche"), - path = require("path"), +const path = require("path"), parser = require("../../parser"), shelljs = require("shelljs"), - tester = require("./tester"); + testUtils = require("../../tools/test-utils"); //------------------------------------------------------------------------------ // Setup @@ -68,7 +66,7 @@ describe("Comments", () => { }; }); - leche.withData(testFiles, filename => { + testFiles.forEach(filename => { const code = shelljs.cat(`${path.resolve(FIXTURES_DIR, filename)}.src.js`); it("should produce correct AST when parsed with comment", () => { @@ -77,7 +75,7 @@ describe("Comments", () => { try { result = parser.parse(code, config); - result = tester.getRaw(result); + result = testUtils.getRaw(result); } catch (ex) { // format of error isn't exactly the same, just check if it's expected @@ -88,7 +86,7 @@ describe("Comments", () => { } - assert.deepEqual(result, expected); + expect(result).toEqual(expected); }); }); diff --git a/tests/lib/ecma-features.js b/tests/lib/ecma-features.js index 51a1c65..eda1883 100644 --- a/tests/lib/ecma-features.js +++ b/tests/lib/ecma-features.js @@ -11,12 +11,10 @@ // Requirements //------------------------------------------------------------------------------ -const assert = require("chai").assert, - leche = require("leche"), - path = require("path"), +const path = require("path"), parser = require("../../parser"), shelljs = require("shelljs"), - tester = require("./tester"); + testUtils = require("../../tools/test-utils"); //------------------------------------------------------------------------------ // Setup @@ -65,7 +63,7 @@ describe("ecmaFeatures", () => { }; }); - leche.withData(testFiles, filename => { + testFiles.forEach(filename => { // Uncomment and fill in filename to focus on a single file // var filename = "jsx/invalid-matching-placeholder-in-closing-tag"; @@ -98,7 +96,7 @@ describe("ecmaFeatures", () => { try { result = parser.parse(code, config); - result = tester.getRaw(result); + result = testUtils.getRaw(result); } catch (ex) { // format of error isn't exactly the same, just check if it's expected @@ -109,7 +107,7 @@ describe("ecmaFeatures", () => { } - assert.deepEqual(result, expected); + expect(result).toEqual(expected); }); }); diff --git a/tests/lib/jsx.js b/tests/lib/jsx.js index 38f615e..44812c9 100644 --- a/tests/lib/jsx.js +++ b/tests/lib/jsx.js @@ -11,12 +11,10 @@ // Requirements //------------------------------------------------------------------------------ -const assert = require("chai").assert, - leche = require("leche"), - path = require("path"), +const path = require("path"), parser = require("../../parser"), shelljs = require("shelljs"), - tester = require("./tester"); + testUtils = require("../../tools/test-utils"); //------------------------------------------------------------------------------ // Setup @@ -84,7 +82,7 @@ describe("JSX", () => { try { result = parser.parse(code, config); - result = tester.getRaw(result); + result = testUtils.getRaw(result); } catch (ex) { // format of error isn't exactly the same, just check if it's expected @@ -95,15 +93,15 @@ describe("JSX", () => { } - assert.deepEqual(result, expected); + expect(result).toEqual(expected); }); }; } describe("useJSXTextNode: false", () => { - leche.withData(jsxTestFiles, testFixture(JSX_FIXTURES_DIR, false)); + jsxTestFiles.forEach(testFixture(JSX_FIXTURES_DIR, false)); }); describe("useJSXTextNode: true", () => { - leche.withData(jsxTextTestFiles, testFixture(JSX_JSXTEXT_FIXTURES_DIR, true)); + jsxTextTestFiles.forEach(testFixture(JSX_JSXTEXT_FIXTURES_DIR, true)); }); }); diff --git a/tests/lib/parse.js b/tests/lib/parse.js index a6606cc..5b30bec 100644 --- a/tests/lib/parse.js +++ b/tests/lib/parse.js @@ -11,9 +11,8 @@ // Requirements //------------------------------------------------------------------------------ -const assert = require("chai").assert, - parser = require("../../parser"), - tester = require("./tester"); +const parser = require("../../parser"), + testUtils = require("../../tools/test-utils"); //------------------------------------------------------------------------------ // Tests @@ -25,8 +24,8 @@ describe("parse()", () => { describe("basic functionality", () => { it("should parse an empty string", () => { - assert.deepEqual(parser.parse("").body, []); - assert.deepEqual(parser.parse("", {}).body, []); + expect(parser.parse("").body).toEqual([]); + expect(parser.parse("", {}).body).toEqual([]); }); }); @@ -37,7 +36,7 @@ describe("parse()", () => { try { parser.parse("function fn(a, a) {\n}", { sourceType: "module" }); } catch (err) { - assert.equal(err.column, 16); + expect(err.column).toEqual(16); } }); @@ -56,7 +55,7 @@ describe("parse()", () => { loc: true }); - assert.deepEqual(tester.getRaw(ast), require("../fixtures/parse/all-pieces.json")); + expect(testUtils.getRaw(ast)).toEqual(require("../fixtures/parse/all-pieces.json")); }); }); diff --git a/tests/lib/typescript.js b/tests/lib/typescript.js index 8c0b12a..e0d30b0 100644 --- a/tests/lib/typescript.js +++ b/tests/lib/typescript.js @@ -11,12 +11,10 @@ // Requirements //------------------------------------------------------------------------------ -const assert = require("chai").assert, - leche = require("leche"), - path = require("path"), +const path = require("path"), parser = require("../../parser"), shelljs = require("shelljs"), - tester = require("./tester"); + testUtils = require("../../tools/test-utils"); //------------------------------------------------------------------------------ // Setup @@ -47,7 +45,7 @@ describe("typescript", () => { }; }); - leche.withData(testFiles, filename => { + testFiles.forEach(filename => { // Uncomment and fill in filename to focus on a single file // var filename = "jsx/invalid-matching-placeholder-in-closing-tag"; @@ -59,7 +57,7 @@ describe("typescript", () => { try { result = parser.parse(code, config); - result = tester.getRaw(result); + result = testUtils.getRaw(result); } catch (ex) { // format of error isn't exactly the same, just check if it's expected @@ -72,7 +70,7 @@ describe("typescript", () => { } // console.log(JSON.stringify(result, null, 4)); - assert.deepEqual(result, expected); + expect(result).toEqual(expected); }); diff --git a/tests/lib/tester.js b/tools/test-utils.js similarity index 100% rename from tests/lib/tester.js rename to tools/test-utils.js diff --git a/tools/update-typescript-tests.js b/tools/update-typescript-tests.js index 9b1ca9f..8f3b8b3 100644 --- a/tools/update-typescript-tests.js +++ b/tools/update-typescript-tests.js @@ -12,7 +12,7 @@ const shelljs = require("shelljs"), parser = require("../parser"), - tester = require("../tests/lib/tester"), + testUtils = require("./test-utils"), path = require("path"); //------------------------------------------------------------------------------ @@ -36,7 +36,7 @@ function getRaw(ast) { */ function getExpectedResult(code, config) { try { - return tester.getRaw(parser.parse(code, config)); + return testUtils.getRaw(parser.parse(code, config)); } catch (ex) { const raw = getRaw(ex); raw.message = ex.message; @@ -70,7 +70,6 @@ function outputResult(result, testResultFilename) { const FIXTURES_DIR = "./tests/fixtures/typescript"; const testFiles = getTestFilenames(FIXTURES_DIR); -const assert = require("chai").assert; testFiles.forEach(filename => { @@ -86,13 +85,6 @@ testFiles.forEach(filename => { const testResultFilename = `${path.resolve(__dirname, "..", FIXTURES_DIR, filename)}.result.js`; const result = getExpectedResult(code, config); - const expected = require(testResultFilename); - - try { - assert.deepEqual(result, expected); - } catch (e) { - shelljs.echo("DIFFERENT", e); - outputResult(result, testResultFilename); - } + outputResult(result, testResultFilename); });