From 7701ef9c263333c91a35ed785ded456c06c664ed Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Fri, 13 Nov 2020 00:47:40 +0100 Subject: [PATCH] web: Make tests in core use typescript --- web/packages/core/package.json | 7 +++- web/packages/core/src/version-range.ts | 2 +- web/packages/core/test/.eslintrc.json | 10 ++++- .../{version-range.js => version-range.ts} | 40 +++++++++++-------- .../core/test/{version.js => version.ts} | 38 ++++++++---------- 5 files changed, 56 insertions(+), 41 deletions(-) rename web/packages/core/test/{version-range.js => version-range.ts} (79%) rename web/packages/core/test/{version.js => version.ts} (90%) diff --git a/web/packages/core/package.json b/web/packages/core/package.json index 8cd2f4c25..25b5ca6b1 100644 --- a/web/packages/core/package.json +++ b/web/packages/core/package.json @@ -7,13 +7,18 @@ "scripts": { "build": "webpack", "prepare": "webpack", - "test": "mocha" + "test": "mocha -r esm -r ts-node/register test/**.ts" }, "devDependencies": { + "@types/chai": "^4.2.14", + "@types/mocha": "^8.0.4", "@typescript-eslint/eslint-plugin": "^4.7.0", "@typescript-eslint/parser": "^4.7.0", + "chai": "^4.2.0", "eslint": "^7.13.0", + "esm": "^3.2.25", "mocha": "^8.0.1", + "ts-node": "^9.0.0", "typedoc": "^0.19.2", "typescript": "^4.0.5", "webpack": "^5.1.3", diff --git a/web/packages/core/src/version-range.ts b/web/packages/core/src/version-range.ts index 57dd2eec3..6e130d86f 100644 --- a/web/packages/core/src/version-range.ts +++ b/web/packages/core/src/version-range.ts @@ -9,7 +9,7 @@ interface Requirement { * Represents a set of version requirements. */ export class VersionRange { - private readonly requirements: Requirement[][]; + readonly requirements: Requirement[][]; constructor(requirements: Requirement[][]) { this.requirements = requirements; diff --git a/web/packages/core/test/.eslintrc.json b/web/packages/core/test/.eslintrc.json index 4668ae79f..feb3a76d1 100644 --- a/web/packages/core/test/.eslintrc.json +++ b/web/packages/core/test/.eslintrc.json @@ -1,5 +1,13 @@ { "env": { "mocha": true - } + }, + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ] } diff --git a/web/packages/core/test/version-range.js b/web/packages/core/test/version-range.ts similarity index 79% rename from web/packages/core/test/version-range.js rename to web/packages/core/test/version-range.ts index dacd1088f..ee5834461 100644 --- a/web/packages/core/test/version-range.js +++ b/web/packages/core/test/version-range.ts @@ -1,13 +1,13 @@ -const { assert } = require("chai"); -const { VersionRange } = require("../src/version-range"); -const { Version } = require("../src/version"); +import { assert } from "chai"; +import { VersionRange } from "../src/version-range"; +import { Version } from "../src/version"; describe("VersionRange", function () { describe("#from_requirement_string()", function () { it("should accept a specific version without an equals sign", function () { const range = VersionRange.from_requirement_string("1.2.3"); assert.deepEqual(range.requirements, [ - [["", Version.from_semver("1.2.3")]], + [{ comparator: "", version: Version.from_semver("1.2.3") }], ]); }); @@ -16,15 +16,15 @@ describe("VersionRange", function () { "1.2.3 || 1.2.4" ); assert.deepEqual(range.requirements, [ - [["", Version.from_semver("1.2.3")]], - [["", Version.from_semver("1.2.4")]], + [{ comparator: "", version: Version.from_semver("1.2.3") }], + [{ comparator: "", version: Version.from_semver("1.2.4") }], ]); }); it("should accept a specific version with an equals sign", function () { const range = VersionRange.from_requirement_string("=1.2.3"); assert.deepEqual(range.requirements, [ - [["=", Version.from_semver("1.2.3")]], + [{ comparator: "=", version: Version.from_semver("1.2.3") }], ]); }); @@ -33,8 +33,8 @@ describe("VersionRange", function () { "=1.2.3 || =1.2.4" ); assert.deepEqual(range.requirements, [ - [["=", Version.from_semver("1.2.3")]], - [["=", Version.from_semver("1.2.4")]], + [{ comparator: "=", version: Version.from_semver("1.2.3") }], + [{ comparator: "=", version: Version.from_semver("1.2.4") }], ]); }); @@ -42,8 +42,8 @@ describe("VersionRange", function () { const range = VersionRange.from_requirement_string(">1.2.3 <1.2.5"); assert.deepEqual(range.requirements, [ [ - [">", Version.from_semver("1.2.3")], - ["<", Version.from_semver("1.2.5")], + { comparator: ">", version: Version.from_semver("1.2.3") }, + { comparator: "<", version: Version.from_semver("1.2.5") }, ], ]); }); @@ -54,8 +54,14 @@ describe("VersionRange", function () { ); assert.deepEqual(range.requirements, [ [ - [">=", Version.from_semver("1-test")], - ["<=", Version.from_semver("2-test")], + { + comparator: ">=", + version: Version.from_semver("1-test"), + }, + { + comparator: "<=", + version: Version.from_semver("2-test"), + }, ], ]); }); @@ -64,8 +70,8 @@ describe("VersionRange", function () { const range = VersionRange.from_requirement_string("^1.2 <1.3"); assert.deepEqual(range.requirements, [ [ - ["^", Version.from_semver("1.2")], - ["<", Version.from_semver("1.3")], + { comparator: "^", version: Version.from_semver("1.2") }, + { comparator: "<", version: Version.from_semver("1.3") }, ], ]); }); @@ -75,8 +81,8 @@ describe("VersionRange", function () { "|| || 1.2.4 || || 1.2.5 ||" ); assert.deepEqual(range.requirements, [ - [["", Version.from_semver("1.2.4")]], - [["", Version.from_semver("1.2.5")]], + [{ comparator: "", version: Version.from_semver("1.2.4") }], + [{ comparator: "", version: Version.from_semver("1.2.5") }], ]); }); }); diff --git a/web/packages/core/test/version.js b/web/packages/core/test/version.ts similarity index 90% rename from web/packages/core/test/version.js rename to web/packages/core/test/version.ts index 0d5a50840..a55b7687d 100644 --- a/web/packages/core/test/version.js +++ b/web/packages/core/test/version.ts @@ -1,5 +1,5 @@ -const { assert } = require("chai"); -const { Version } = require("../src/version"); +import { assert } from "chai"; +import { Version } from "../src/version"; // Each row should be a list of compatible versions. // Earlier entries in a row should be "greater than" later entries in the same row. @@ -24,12 +24,8 @@ const testMatrix = [ ["0.0.1", "0.0.1-dev", "0.0.1-5", "0.0.1-2"], ]; -function flatten(arr) { - return arr.reduce(function (flat, toFlatten) { - return flat.concat( - Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten - ); - }, []); +function flatten(arr: T[][]): T[] { + return arr.reduce((accumulator, value) => accumulator.concat(value), []); } describe("Version", function () { @@ -72,9 +68,9 @@ describe("Version", function () { describe("#is_compatible_with()", function () { it("is compatible with similar versions", function () { - for (let test of testMatrix) { - for (let a of test) { - for (let b of test) { + for (const test of testMatrix) { + for (const a of test) { + for (const b of test) { assert.isOk( Version.from_semver(a).is_compatible_with( Version.from_semver(b) @@ -86,11 +82,11 @@ describe("Version", function () { } }); it("is not compatible with other versions", function () { - for (let test of testMatrix) { - for (let a of test) { - for (let otherTest of testMatrix) { + for (const test of testMatrix) { + for (const a of test) { + for (const otherTest of testMatrix) { if (test === otherTest) continue; - for (let b of otherTest) { + for (const b of otherTest) { assert.isNotOk( Version.from_semver(a).is_compatible_with( Version.from_semver(b) @@ -150,7 +146,7 @@ describe("Version", function () { describe("#is_equal()", function () { it("returns true when it should", function () { const tests = flatten(testMatrix); - for (let version of tests) { + for (const version of tests) { assert.isOk( Version.from_semver(version).is_equal( Version.from_semver(version) @@ -186,7 +182,7 @@ describe("Version", function () { describe("#is_stable_or_compatible_prerelease()", function () { it("returns true for own versions", function () { const tests = flatten(testMatrix); - for (let version of tests) { + for (const version of tests) { assert.isOk( Version.from_semver( version @@ -199,8 +195,8 @@ describe("Version", function () { }); it("returns true for compatible pre-releases", function () { const tests = ["1.2.3", "1.2.3-alpha", "1.2.3-beta1.build2"]; - for (let a of tests) { - for (let b of tests) { + for (const a of tests) { + for (const b of tests) { assert.isOk( Version.from_semver( a @@ -214,8 +210,8 @@ describe("Version", function () { }); it("returns false for incompatible pre-releases", function () { const tests = ["1-dev", "1.2-alpha", "1.2.3-beta1.build2"]; - for (let a of tests) { - for (let b of tests) { + for (const a of tests) { + for (const b of tests) { if (a === b) continue; assert.isNotOk( Version.from_semver(