From 3610a7bd1cc51429457685d3ef0284907ab02f86 Mon Sep 17 00:00:00 2001 From: cha0s Date: Tue, 22 Mar 2022 01:02:02 -0500 Subject: [PATCH] refactor: inline fleck tests --- packages/fleck/package.json | 1 + packages/fleck/src/server/commands.js | 38 ++++++++++++--------------- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/packages/fleck/package.json b/packages/fleck/package.json index 23cc27d..611fd0e 100644 --- a/packages/fleck/package.json +++ b/packages/fleck/package.json @@ -34,6 +34,7 @@ "@flecks/core": "^1.4.1", "babel-merge": "^3.0.0", "chokidar": "^3.5.3", + "clear-module": "^4.1.2", "debug": "^4.3.3", "glob": "^7.2.0", "mocha": "^8.3.2" diff --git a/packages/fleck/src/server/commands.js b/packages/fleck/src/server/commands.js index 53ceb70..69983d3 100644 --- a/packages/fleck/src/server/commands.js +++ b/packages/fleck/src/server/commands.js @@ -3,12 +3,11 @@ import {join} from 'path'; import {D} from '@flecks/core'; import chokidar from 'chokidar'; +import clearModule from 'clear-module'; import glob from 'glob'; +import Mocha from 'mocha'; -import { - commands as coreCommands, - spawnWith, -} from '@flecks/core/server'; +import {commands as coreCommands} from '@flecks/core/server'; const debug = D('@flecks/core.commands'); @@ -54,14 +53,14 @@ export default (program, flecks) => { await new Promise((resolve) => setTimeout(resolve, 50)); } } - const spawnMocha = () => { - const cmd = [ - 'npx', 'mocha', - '--colors', - '--reporter', 'min', - testLocation, - ]; - return spawnWith(cmd); + const runMocha = async () => { + const mocha = new Mocha(); + mocha.ui('bdd'); + mocha.reporter('min'); + clearModule(testLocation); + mocha.addFile(testLocation); + mocha.loadFiles(); + return new Promise((r, e) => mocha.run((me) => (me ? e(me) : r()))); }; if (!watch) { await new Promise((resolve, reject) => { @@ -74,16 +73,13 @@ export default (program, flecks) => { }); child.on('error', reject); }); - return spawnMocha(); + await runMocha(); + return 0; } - let tester; - chokidar.watch(testLocation) - .on('all', () => { - if (tester) { - tester.kill(); - } - tester = spawnMocha(); - }); + chokidar.watch(testLocation).on('all', async () => { + await new Promise((resolve) => setTimeout(resolve, 50)); + runMocha(); + }); return new Promise(() => {}); }, };