From a79d12523f16bfb7bffa11b35f658427ed37aa97 Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Tue, 6 May 2025 12:04:30 +0200 Subject: [PATCH 1/4] switch to uvu --- .../practice/grade-school/.meta/config.json | 8 +---- .../practice/grade-school/babel.config.js | 4 --- ...e-school.spec.js => grade-school.spec.mjs} | 31 ++++++++++++------- exercises/practice/grade-school/package.json | 17 +++------- 4 files changed, 26 insertions(+), 34 deletions(-) delete mode 100644 exercises/practice/grade-school/babel.config.js rename exercises/practice/grade-school/{grade-school.spec.js => grade-school.spec.mjs} (82%) diff --git a/exercises/practice/grade-school/.meta/config.json b/exercises/practice/grade-school/.meta/config.json index d2b5a3c..e018eb9 100644 --- a/exercises/practice/grade-school/.meta/config.json +++ b/exercises/practice/grade-school/.meta/config.json @@ -17,11 +17,5 @@ ] }, "blurb": "Given students' names along with the grade that they are in, create a roster for the school.", - "source": "A pairing session with Phil Battos at gSchool", - "custom": { - "version.tests.compatibility": "jest-27", - "flag.tests.task-per-describe": false, - "flag.tests.may-run-long": false, - "flag.tests.includes-optional": false - } + "source": "A pairing session with Phil Battos at gSchool" } diff --git a/exercises/practice/grade-school/babel.config.js b/exercises/practice/grade-school/babel.config.js deleted file mode 100644 index 9c17ba5..0000000 --- a/exercises/practice/grade-school/babel.config.js +++ /dev/null @@ -1,4 +0,0 @@ -export default { - presets: ["@exercism/babel-preset-javascript"], - plugins: [], -}; diff --git a/exercises/practice/grade-school/grade-school.spec.js b/exercises/practice/grade-school/grade-school.spec.mjs similarity index 82% rename from exercises/practice/grade-school/grade-school.spec.js rename to exercises/practice/grade-school/grade-school.spec.mjs index 70b7bc3..9e6a577 100644 --- a/exercises/practice/grade-school/grade-school.spec.js +++ b/exercises/practice/grade-school/grade-school.spec.mjs @@ -1,9 +1,15 @@ +import { suite } from "uvu"; +import * as assert from "uvu/assert"; import { compileWat, WasmRunner } from "@exercism/wasm-lib"; +const test = suite('grade-school'); +const xtest = test.skip; +const describe = (_, x) => x(); + let wasmModule; let currentInstance; -beforeAll(async () => { +test.before(async () => { try { const watPath = new URL("./grade-school.wat", import.meta.url); const { buffer } = await compileWat(watPath); @@ -43,7 +49,7 @@ class GradeSchool { } describe('School', () => { - beforeEach(async () => { + test.before.each(async () => { currentInstance = null; if (!wasmModule) { @@ -60,19 +66,19 @@ describe('School', () => { let school; - beforeEach(() => { + test.before.each(() => { school = new GradeSchool(); }); test('a new school has an empty roster', () => { - expect(school.roster()).toEqual(''); + assert.equal(school.roster(), ''); }); xtest('adding a student adds them to the roster for the given grade', () => { school.add('Aimee', 2); const expectedDb = 'Aimee\n'; - expect(school.roster()).toEqual(expectedDb); + assert.equal(school.roster(), expectedDb); }); xtest('adding more students to the same grade adds them to the roster', () => { @@ -81,7 +87,7 @@ describe('School', () => { school.add('Paul', 2); const expectedDb = 'Blair\nJames\nPaul\n'; - expect(school.roster()).toEqual(expectedDb); + assert.equal(school.roster(), expectedDb); }); xtest('adding students to different grades adds them to the roster', () => { @@ -89,7 +95,7 @@ describe('School', () => { school.add('Logan', 7); const expectedDb = 'Chelsea\nLogan\n'; - expect(school.roster()).toEqual(expectedDb); + assert.equal(school.roster(), expectedDb); }); xtest('grade returns the students in that grade in alphabetical order', () => { @@ -98,11 +104,11 @@ describe('School', () => { school.add('Jeff', 1); const expectedStudents = 'Bradley\nFranklin\n'; - expect(school.grade(5)).toEqual(expectedStudents); + assert.equal(school.grade(5), expectedStudents); }); xtest('grade returns an empty array if there are no students in that grade', () => { - expect(school.grade(1)).toEqual(''); + assert.equal(school.grade(1), ''); }); xtest('the students names in each grade in the roster are sorted', () => { @@ -112,12 +118,15 @@ describe('School', () => { school.add('Kyle', 3); const expectedSortedStudents = 'Kyle\nChristopher\nJennifer\nKareem\n'; - expect(school.roster()).toEqual(expectedSortedStudents); + assert.equal(school.roster(), expectedSortedStudents); }); xtest("a student can't be in two different grades", () => { school.add('Aimee', 2); school.add('Aimee', 1); - expect(school.grade(2)).toEqual(''); + assert.equal(school.grade(2), ''); }); }); + +test.run(); + diff --git a/exercises/practice/grade-school/package.json b/exercises/practice/grade-school/package.json index 7fc96b0..a09cde4 100644 --- a/exercises/practice/grade-school/package.json +++ b/exercises/practice/grade-school/package.json @@ -1,6 +1,6 @@ { "name": "@exercism/wasm-grade-school", - "version": "0.0.2", + "version": "0.0.3", "description": "Exercism exercises in WebAssembly.", "author": "Alex Lohr", "type": "module", @@ -11,26 +11,19 @@ "url": "https://github.com/exercism/wasm", "directory": "exercises/practice/grade-school" }, - "jest": { - "maxWorkers": 1 - }, "devDependencies": { - "@babel/core": "^7.23.3", - "@exercism/babel-preset-javascript": "^0.4.0", "@exercism/eslint-config-javascript": "^0.6.0", - "@types/jest": "^29.5.8", "@types/node": "^20.9.1", - "babel-jest": "^29.7.0", - "core-js": "^3.33.2", "eslint": "^8.54.0", - "jest": "^29.7.0" + "uvu": "^0.5.6", + "watchlist": "0.3.1" }, "dependencies": { "@exercism/wasm-lib": "^0.2.0" }, "scripts": { - "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js ./*", - "watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch ./*", + "test": "uvu ./", + "watch": "watchlist *.spec.mjs *.wat -- yarn test", "lint": "eslint ." } } From 02526e6100337c6c0d3a7b55e10615592671de59 Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Tue, 6 May 2025 12:07:47 +0200 Subject: [PATCH 2/4] fix test name in config --- exercises/practice/grade-school/.meta/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/practice/grade-school/.meta/config.json b/exercises/practice/grade-school/.meta/config.json index e018eb9..0c2510b 100644 --- a/exercises/practice/grade-school/.meta/config.json +++ b/exercises/practice/grade-school/.meta/config.json @@ -7,7 +7,7 @@ "grade-school.wat" ], "test": [ - "grade-school.spec.js" + "grade-school.spec.mjs" ], "example": [ ".meta/proof.ci.wat" From a0271b33eb86231a4e10779a415470ddfdd86a0b Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Tue, 6 May 2025 13:22:37 +0200 Subject: [PATCH 3/4] bin/test compat --- .../{grade-school.spec.mjs => grade-school.spec.js} | 0 exercises/practice/grade-school/package.json | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) rename exercises/practice/grade-school/{grade-school.spec.mjs => grade-school.spec.js} (100%) diff --git a/exercises/practice/grade-school/grade-school.spec.mjs b/exercises/practice/grade-school/grade-school.spec.js similarity index 100% rename from exercises/practice/grade-school/grade-school.spec.mjs rename to exercises/practice/grade-school/grade-school.spec.js diff --git a/exercises/practice/grade-school/package.json b/exercises/practice/grade-school/package.json index a09cde4..b03c5e5 100644 --- a/exercises/practice/grade-school/package.json +++ b/exercises/practice/grade-school/package.json @@ -3,6 +3,7 @@ "version": "0.0.3", "description": "Exercism exercises in WebAssembly.", "author": "Alex Lohr", + "module": true, "type": "module", "private": true, "license": "MIT", @@ -23,7 +24,7 @@ }, "scripts": { "test": "uvu ./", - "watch": "watchlist *.spec.mjs *.wat -- yarn test", + "watch": "watchlist *.spec.js *.wat -- yarn test", "lint": "eslint ." } } From 0b9a20d32c5022fdaa927fd99feaed66ea8caaec Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Wed, 7 May 2025 10:59:20 +0200 Subject: [PATCH 4/4] fix config again --- exercises/practice/grade-school/.meta/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/practice/grade-school/.meta/config.json b/exercises/practice/grade-school/.meta/config.json index 0c2510b..e018eb9 100644 --- a/exercises/practice/grade-school/.meta/config.json +++ b/exercises/practice/grade-school/.meta/config.json @@ -7,7 +7,7 @@ "grade-school.wat" ], "test": [ - "grade-school.spec.mjs" + "grade-school.spec.js" ], "example": [ ".meta/proof.ci.wat"