From 118f8e370c558351487072729c7c3ac5f2ebe441 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Wed, 27 Aug 2025 15:30:01 -0400 Subject: [PATCH] Remove chai Recent versions of chai use ES Modules, which makes it hard to use. Use nodejs' built-in assertion library instead, which should be sufficient for this project. Signed-off-by: David Thompson --- package-lock.json | 206 ------------------ package.json | 4 - src/test/suite/extension.test.ts | 5 +- .../documentSelectorPlugin.test.ts | 123 ++++++----- src/test/suite/languageServer/plugin.test.ts | 21 +- .../suite/languageServer/requirements.test.ts | 10 +- 6 files changed, 85 insertions(+), 284 deletions(-) diff --git a/package-lock.json b/package-lock.json index f56b165..97fad20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,16 +18,12 @@ }, "devDependencies": { "@eslint/js": "^9.34.0", - "@types/chai": "^4.3.16", - "@types/chai-fs": "^2.0.5", "@types/fs-extra": "^11.0.4", "@types/mocha": "^10.0.10", "@types/node": "18.19", "@types/semver": "^7.7.0", "@types/vscode": "^1.65.0", "@vscode/test-electron": "^2.5.2", - "chai": "^4.5.0", - "chai-fs": "^2.0.0", "eslint": "^9.34.0", "eslint-webpack-plugin": "^5.0.2", "fs-extra": "^11.3.1", @@ -604,21 +600,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/chai": { - "version": "4.3.16", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", - "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", - "dev": true - }, - "node_modules/@types/chai-fs": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/chai-fs/-/chai-fs-2.0.5.tgz", - "integrity": "sha512-Fusfcwil87QBYVN9vqDf46/+mb19bbDyQ7+dRNBZuLetgI5aipjHI0kI9sl2o02w9jTw70y7R58Ns6e40cfa1w==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", @@ -1408,19 +1389,6 @@ "node": ">=0.10.0" } }, - "node_modules/array-events": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/array-events/-/array-events-0.2.0.tgz", - "integrity": "sha512-Js6+JM/MxB72WeODWcUOOD/BWRqx6QTff8FWvweERQ0MdzViScUJV4XwRFnXvyvbfhuwWNrwhid7IJe2ux3r4Q==", - "dev": true, - "dependencies": { - "async-arrays": "*", - "extended-emitter": "*" - }, - "engines": { - "node": "*" - } - }, "node_modules/array-slice": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", @@ -1431,32 +1399,11 @@ "node": ">=0.10.0" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/async": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, - "node_modules/async-arrays": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/async-arrays/-/async-arrays-2.0.0.tgz", - "integrity": "sha512-lMm6njQEX7gHbdX/b+PGBDXD/Vwg40BKSatlOaWNxrW/O5wYzARmoh+50h58s3hsyzGPU5+xYndwtc+m91yLiw==", - "dev": true, - "dependencies": { - "sift": "*" - }, - "engines": { - "node": "*" - } - }, "node_modules/async-done": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/async-done/-/async-done-2.0.0.tgz", @@ -1548,18 +1495,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bit-mask": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bit-mask/-/bit-mask-1.0.2.tgz", - "integrity": "sha512-UGtq08LSiazxL4zVmBzrhdCWnT4RWx3JhhD/3crhfv8xxjnVHxf/WoVjEstjSUaZeZRP7kZrWNqup1VvUClCaQ==", - "dev": true, - "dependencies": { - "array-events": "^0.2.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/bl": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", @@ -1679,12 +1614,6 @@ "dev": true, "license": "MIT" }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1716,40 +1645,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chai-fs/-/chai-fs-2.0.0.tgz", - "integrity": "sha512-PGfINFH/7XrQBnbp5/MnbFtzBL1//erKs+uoUdyo7KnW0mUX13L6bTO3Jm8OIexSVSh0Y+aaFhhbxyDtb679DA==", - "dev": true, - "dependencies": { - "bit-mask": "^1.0.1", - "readdir-enhanced": "^1.4.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "chai": ">= 1.6.1 < 5" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1766,18 +1661,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -2007,18 +1890,6 @@ } } }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2125,12 +1996,6 @@ "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", "dev": true }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -2466,18 +2331,6 @@ "dev": true, "license": "MIT" }, - "node_modules/extended-emitter": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/extended-emitter/-/extended-emitter-1.6.0.tgz", - "integrity": "sha512-TNF4xMKL9aKYTR2cTNkKYMUnKzzjfV5Nl6TX45smJ/796CmaFt+KCyidgGdod0Kgj5VSL+ctNIGVf+i1l3e+UA==", - "dev": true, - "dependencies": { - "sift": "*" - }, - "engines": { - "node": "*" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2776,15 +2629,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -2872,12 +2716,6 @@ "node": ">=10.13.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==", - "dev": true - }, "node_modules/glob-watcher": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-6.0.0.tgz", @@ -3763,15 +3601,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.1" - } - }, "node_modules/map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -4536,15 +4365,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4708,17 +4528,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/readdir-enhanced": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/readdir-enhanced/-/readdir-enhanced-1.5.2.tgz", - "integrity": "sha512-oncAoS9LLjy/+DeZfSAdZBI/iFJGcPCOp44RPFI6FIMHuxt5CC5P0cUZ9mET+EZB9ONhcEvAids/lVRkj0sTHw==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "es6-promise": "^4.1.0", - "glob-to-regexp": "^0.3.0" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -5082,12 +4891,6 @@ "node": ">=8" } }, - "node_modules/sift": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/sift/-/sift-17.0.1.tgz", - "integrity": "sha512-10rmPF5nuz5UdKuhhxgfS7Vz1aIRGmb+kn5Zy6bntCgNwkbZc0a7Z2dUw2Y9wSoRrBzf7Oim81SUsYdOkVnI8Q==", - "dev": true - }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -5497,15 +5300,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/typescript": { "version": "5.9.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", diff --git a/package.json b/package.json index c11c323..d9095de 100644 --- a/package.json +++ b/package.json @@ -262,16 +262,12 @@ }, "devDependencies": { "@eslint/js": "^9.34.0", - "@types/chai": "^4.3.16", - "@types/chai-fs": "^2.0.5", "@types/fs-extra": "^11.0.4", "@types/mocha": "^10.0.10", "@types/node": "18.19", "@types/semver": "^7.7.0", "@types/vscode": "^1.65.0", "@vscode/test-electron": "^2.5.2", - "chai": "^4.5.0", - "chai-fs": "^2.0.0", "eslint": "^9.34.0", "eslint-webpack-plugin": "^5.0.2", "fs-extra": "^11.3.1", diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts index cfbef04..b310b19 100644 --- a/src/test/suite/extension.test.ts +++ b/src/test/suite/extension.test.ts @@ -1,10 +1,9 @@ import * as vscode from 'vscode'; -import { expect } from 'chai'; +import * as assert from 'assert/strict'; describe('VS Code extension tests', () => { it('should be present', () => { - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - expect(vscode.extensions.getExtension('redhat.vscode-microprofile')).to.be.ok; + assert.ok(vscode.extensions.getExtension('redhat.vscode-microprofile')); }); }); diff --git a/src/test/suite/languageServer/documentSelectorPlugin.test.ts b/src/test/suite/languageServer/documentSelectorPlugin.test.ts index db69d6e..9329b91 100644 --- a/src/test/suite/languageServer/documentSelectorPlugin.test.ts +++ b/src/test/suite/languageServer/documentSelectorPlugin.test.ts @@ -15,7 +15,7 @@ */ import * as vscode from "vscode"; import * as plugin from "../../../languageServer/plugin"; -import { expect } from "chai"; +import * as assert from "assert"; import { MicroProfileContribution } from "../../../languageServer/plugin"; import { TextDocumentFilter, DocumentSelector } from "vscode-languageclient"; @@ -28,112 +28,117 @@ describe("Document selector collection from language server plugins", () => { it ('Should collect document selector when all keys exist', () => { const selector: DocumentSelector = collectDocumentSelectors([{ scheme: "file", language: "quarkus-properties", pattern: "**/*.properties" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["scheme", "language", "pattern"]); - expect((selector[0] as TextDocumentFilter).scheme).to.equal("file"); - expect((selector[0] as TextDocumentFilter).language).to.equal("quarkus-properties"); - expect((selector[0] as TextDocumentFilter).pattern).to.equal("**/*.properties"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("scheme")); + assert.ok(Object.keys(selector[0]).includes("language")); + assert.ok(Object.keys(selector[0]).includes("pattern")); + assert.equal((selector[0] as TextDocumentFilter).scheme, "file"); + assert.equal((selector[0] as TextDocumentFilter).language, "quarkus-properties"); + assert.equal((selector[0] as TextDocumentFilter).pattern, "**/*.properties"); }); it ('Should collect all document selector when two keys exist', () => { let selector: DocumentSelector = collectDocumentSelectors([{ scheme: "file", language: "quarkus-properties" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["scheme", "language"]); - expect((selector[0] as TextDocumentFilter).scheme).to.equal("file"); - expect((selector[0] as TextDocumentFilter).language).to.equal("quarkus-properties"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("scheme")); + assert.ok(Object.keys(selector[0]).includes("language")); + assert.equal((selector[0] as TextDocumentFilter).scheme, "file"); + assert.equal((selector[0] as TextDocumentFilter).language, "quarkus-properties"); selector = collectDocumentSelectors([{ language: "quarkus-properties", pattern: "**/*.properties" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["language", "pattern"]); - expect((selector[0] as TextDocumentFilter).language).to.equal("quarkus-properties"); - expect((selector[0] as TextDocumentFilter).pattern).to.equal("**/*.properties"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("language")); + assert.ok(Object.keys(selector[0]).includes("pattern")); + assert.equal((selector[0] as TextDocumentFilter).language, "quarkus-properties"); + assert.equal((selector[0] as TextDocumentFilter).pattern, "**/*.properties"); selector = collectDocumentSelectors([{ pattern: "**/*.properties", scheme: "file" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["pattern", "scheme"]); - expect((selector[0] as TextDocumentFilter).pattern).to.equal("**/*.properties"); - expect((selector[0] as TextDocumentFilter).scheme).to.equal("file"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("pattern")); + assert.ok(Object.keys(selector[0]).includes("scheme")); + assert.equal((selector[0] as TextDocumentFilter).pattern, "**/*.properties"); + assert.equal((selector[0] as TextDocumentFilter).scheme, "file"); }); it ('Should collect document selector when one key exist', () => { let selector: DocumentSelector = collectDocumentSelectors([{ scheme: "file" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["scheme"]); - expect((selector[0] as TextDocumentFilter).scheme).to.equal("file"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("scheme")); + assert.equal((selector[0] as TextDocumentFilter).scheme, "file"); selector = collectDocumentSelectors([{ language: "quarkus-properties" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["language"]); - expect((selector[0] as TextDocumentFilter).language).to.equal("quarkus-properties"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("language")); + assert.equal((selector[0] as TextDocumentFilter).language, "quarkus-properties"); selector = collectDocumentSelectors([{ pattern: "**/*.properties" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["pattern"]); - expect((selector[0] as TextDocumentFilter).pattern).to.equal("**/*.properties"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("pattern")); + assert.equal((selector[0] as TextDocumentFilter).pattern, "**/*.properties"); }); it ('Should collect document selector when a valid key and an invalid key exists', () => { // valid, but the "invalid" key is ignored let selector: DocumentSelector = collectDocumentSelectors([{ scheme: "file", invalid: "file" }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["scheme"]); - expect((selector[0] as TextDocumentFilter).scheme).to.equal("file"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("scheme")); + assert.equal((selector[0] as TextDocumentFilter).scheme, "file"); // valid, but the "language" key is ignored since the value has the wrong type selector = collectDocumentSelectors([{ scheme: "file", language: 12 }]); - expect(selector).to.have.length(1); - expect(selector[0]).to.have.all.keys(["scheme"]); - expect((selector[0] as TextDocumentFilter).scheme).to.equal("file"); + assert.equal(selector.length, 1); + assert.ok(Object.keys(selector[0]).includes("scheme")); + assert.equal((selector[0] as TextDocumentFilter).scheme, "file"); }); it ('Should collect document selector strings', () => { const selector: DocumentSelector = collectDocumentSelectors(["document-selector-string"]); - expect(selector).to.have.length(1); - expect(selector[0]).to.be.a('string'); - expect(selector[0]).to.equal("document-selector-string"); + assert.equal(selector.length, 1); + assert.equal(typeof selector[0], "string"); + assert.equal(selector[0], "document-selector-string") }); it ('Should not collect document selector when there are no correct keys', () => { let selector: DocumentSelector = collectDocumentSelectors([{ invalid: "file" }]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([{}]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); }); it ('Should not collect document selector when containing invalid types', () => { let selector: DocumentSelector = collectDocumentSelectors([12]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([/test/]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([true]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); }); it ('Should not collect document selector when all keys have incorrect types', () => { let selector: DocumentSelector = collectDocumentSelectors([{ scheme: 12 }]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([{ scheme: { key: "value" } }]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([{ language: 12 }]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([{ language: { key: "value" } }]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([{ pattern: 12 }]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); selector = collectDocumentSelectors([{ pattern: { key: "value" } }]); - expect(selector).to.have.length(0); + assert.equal(selector.length, 0); }); it ('Should collect multiple document selectors', () => { @@ -145,18 +150,20 @@ describe("Document selector collection from language server plugins", () => { 12 // invalid ]); - expect(selector).to.have.length(3); + assert.equal(selector.length, 3); - expect(selector[0]).to.have.all.keys(["scheme", "language", "pattern"]); - expect((selector[0] as TextDocumentFilter).scheme).to.equal("file"); - expect((selector[0] as TextDocumentFilter).language).to.equal("quarkus-properties"); - expect((selector[0] as TextDocumentFilter).pattern).to.equal("**/*.properties"); + assert.ok(Object.keys(selector[0]).includes("scheme")); + assert.ok(Object.keys(selector[0]).includes("language")); + assert.ok(Object.keys(selector[0]).includes("pattern")); + assert.equal((selector[0] as TextDocumentFilter).scheme, "file"); + assert.equal((selector[0] as TextDocumentFilter).language, "quarkus-properties"); + assert.equal((selector[0] as TextDocumentFilter).pattern, "**/*.properties"); - expect(selector[1]).to.have.all.keys(["language"]); - expect((selector[1] as TextDocumentFilter).language).to.equal("my-properties"); + assert.ok(Object.keys(selector[1]).includes("language")); + assert.equal((selector[1] as TextDocumentFilter).language, "my-properties"); - expect(selector[2]).to.be.a('string'); - expect(selector[2]).to.equal("document-selector-string"); + assert.equal(typeof selector[2], "string"); + assert.equal(selector[2], "document-selector-string"); }); /** @@ -186,7 +193,7 @@ describe("Document selector collection from language server plugins", () => { }; const contribution: MicroProfileContribution[] = plugin.collectMicroProfileJavaExtensions([ fakePlugin ]); - expect(contribution).to.have.length(1); + assert.equal(contribution.length, 1); return contribution[0].documentSelector; } diff --git a/src/test/suite/languageServer/plugin.test.ts b/src/test/suite/languageServer/plugin.test.ts index a86d573..7187d53 100644 --- a/src/test/suite/languageServer/plugin.test.ts +++ b/src/test/suite/languageServer/plugin.test.ts @@ -1,10 +1,10 @@ -import { expect } from "chai"; import * as fs from "fs"; import * as path from "path"; import * as vscode from "vscode"; import { TextDocumentFilter } from "vscode-languageclient"; import * as plugin from "../../../languageServer/plugin"; import { MicroProfileContribution } from "../../../languageServer/plugin"; +import * as assert from 'assert/strict'; describe("Language server plugin", () => { it('Should collect lsp4mp extensions', () => { @@ -46,18 +46,23 @@ describe("Language server plugin", () => { const extensions = [fakeVscodeQuarkus, fakeNoPluginExtension]; const result: MicroProfileContribution[] = plugin.collectMicroProfileJavaExtensions(extensions); - expect(result).to.have.length(1); + assert.equal(result.length, 1); - expect(result[0].jarExtensions).to.have.length(1); + assert.equal(result[0].jarExtensions.length, 1); const expectedPath: string = path.join('server', 'com.redhat.quarkus.ls.jar').replace("\\", "\\\\"); - expect(result[0].jarExtensions[0]).to.be.a("string").and.match(new RegExp(`${expectedPath}$`), `String should end with "${expectedPath}".`); + assert.equal(typeof result[0].jarExtensions[0], "string"); + assert.ok(new RegExp(`${expectedPath}$`).test(result[0].jarExtensions[0]), `String should end with "${expectedPath}".`); - expect(result[0].documentSelector).to.have.length(1); - expect(result[0].documentSelector[0]).has.all.keys(["scheme", "language"]); + assert.equal(result[0].documentSelector.length, 1); + Object.keys(result[0].documentSelector[0]); + assert.ok(Object.keys(result[0].documentSelector[0]).includes("scheme")); + assert.ok(Object.keys(result[0].documentSelector[0]).includes("language")); const TextDocumentFilter: TextDocumentFilter = result[0].documentSelector[0] as TextDocumentFilter; - expect(TextDocumentFilter.scheme).to.be.a("string").and.equal("file"); - expect(TextDocumentFilter.language).to.be.a("string").and.equal("quarkus-properties"); + assert.equal(typeof TextDocumentFilter.scheme, "string"); + assert.equal(TextDocumentFilter.scheme, "file"); + assert.equal(typeof TextDocumentFilter.language, "string"); + assert.equal(TextDocumentFilter.language, "quarkus-properties"); }); }); diff --git a/src/test/suite/languageServer/requirements.test.ts b/src/test/suite/languageServer/requirements.test.ts index e582779..7b223c7 100644 --- a/src/test/suite/languageServer/requirements.test.ts +++ b/src/test/suite/languageServer/requirements.test.ts @@ -1,4 +1,4 @@ -import { expect } from "chai"; +import * as assert from 'assert/strict'; import { parseMajorVersion } from "../../../languageServer/requirements"; describe("Language server java requirements", () => { @@ -7,7 +7,7 @@ describe("Language server java requirements", () => { OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_212-b03) OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.212-b03, mixed mode)`; - expect(parseMajorVersion(openJDK8)).to.equal(8); + assert.equal(parseMajorVersion(openJDK8), 8) }); it("Should parse the correct java version from AdoptOpenJDK with OpenJ9", () => { @@ -18,7 +18,7 @@ describe("Language server java requirements", () => { OMR - 7a1b0239a JCL - da35e0c380 based on jdk-11.0.6+10)`; - expect(parseMajorVersion(adoptOpenJ9)).to.equal(11); + assert.equal(parseMajorVersion(adoptOpenJ9), 11); }); it("Should parse the correct java version from Java SE 12", () => { @@ -26,12 +26,12 @@ describe("Language server java requirements", () => { Java(TM) SE Runtime Environment (build 12.0.1+12) Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)`; - expect(parseMajorVersion(javaSE12)).to.equal(12); + assert.equal(parseMajorVersion(javaSE12), 12); }); it("Should return 0 if it cannot find a java version", () => { const javaNotFound = "bash: java: command not found"; - expect(parseMajorVersion(javaNotFound)).to.equal(0); + assert.equal(parseMajorVersion(javaNotFound), 0) }); });