From feac2678bda7c592006b042fc1de82a09cbb8a51 Mon Sep 17 00:00:00 2001 From: TheThing Date: Tue, 31 Oct 2023 08:29:51 +0000 Subject: [PATCH] Cli no longer throws if eltro is only being used for npm-watching and not testing --- lib/cli.mjs | 5 ++++- package.json | 2 +- test/cli.test.mjs | 36 +++++++++++++++--------------------- 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/lib/cli.mjs b/lib/cli.mjs index e074b24..01e83ab 100644 --- a/lib/cli.mjs +++ b/lib/cli.mjs @@ -42,7 +42,10 @@ export function CLI(e, overrides = {}) { this.child_process = overrides.child_process || child_process this.process = overrides.process || process this.importer = overrides.importer + this.loadDefaults() +} +CLI.prototype.loadDefaults = function() { // Eltro specific options this.reporter = 'list' this.ignoreOnly = false @@ -110,7 +113,7 @@ CLI.prototype.parseOptions = function(args) { } } - if (!this.targets.length) { + if (!this.targets.length && this.run === 'test') { this.targets.push('test/**') } diff --git a/package.json b/package.json index 34e8d29..1d24e3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eltro", - "version": "1.4.0", + "version": "1.4.1", "description": "Eltro is a tiny no-dependancy test framework for node", "main": "index.mjs", "scripts": { diff --git a/test/cli.test.mjs b/test/cli.test.mjs index 17edaba..4006c73 100644 --- a/test/cli.test.mjs +++ b/test/cli.test.mjs @@ -59,32 +59,31 @@ t.describe('CLI', function() { *****************************************/ t.describe('#parseOptions()', function() { + t.beforeEach(function() { + cli.loadDefaults() + }) + t.test('should not do anything if no options', async function() { - cli.reporter = 'list' await cli.parseOptions([]) assert.strictEqual(cli.reporter, 'list') }) t.test('should support overriding reporter with shorthand option', async function() { - cli.reporter = 'list' await cli.parseOptions(['-r', 'dot']) assert.strictEqual(cli.reporter, 'dot') }) t.test('should support overriding reporter with long option', async function() { - cli.reporter = 'list' await cli.parseOptions(['--reporter', 'dot']) assert.strictEqual(cli.reporter, 'dot') }) t.test('should support enabling ignore-only long option', async function() { - cli.ignoreOnly = false await cli.parseOptions(['--ignore-only', '-r', 'dot']) assert.strictEqual(cli.ignoreOnly, true) }) t.test('should support reporter list', async function() { - cli.reporter = 'list' await cli.parseOptions(['-r', 'list']) assert.strictEqual(cli.reporter, 'list') }) @@ -100,13 +99,11 @@ t.describe('CLI', function() { }) t.test('should support overriding timeout with shorthand option', async function() { - cli.timeout = 2000 await cli.parseOptions(['-t', '1000']) assert.strictEqual(cli.timeout, 1000) }) t.test('should support overriding timeout with long option', async function() { - cli.timeout = 2000 await cli.parseOptions(['--timeout', '250']) assert.strictEqual(cli.timeout, 250) }) @@ -122,57 +119,54 @@ t.describe('CLI', function() { }) t.test('should support overriding watch', async function() { - cli.watch = null await cli.parseOptions(['-w', 'unittest_test1']) assert.strictEqual(cli.watch, 'unittest_test1') }) t.test('should support overriding watch with long option', async function() { - cli.watch = null await cli.parseOptions(['--watch', 'unittest_test1']) assert.strictEqual(cli.watch, 'unittest_test1') }) - t.test('should fail overriding if next parameter is missing', async function() { - cli.watch = null + t.test('should fail setting watch if value is missing', async function() { let err = await assert.isRejected(cli.parseOptions(['--watch'])) assert.strictEqual(cli.watch, null) assert.match(err.message, /watch/i) }) - t.test('should fail overriding if next parameter is a parameter', async function() { - cli.watch = null + t.test('should fail setting watch if value is parameter', async function() { let err = await assert.isRejected(cli.parseOptions(['-w', '--reporter', 'list'])) assert.strictEqual(cli.watch, null) assert.match(err.message, /watch/i) }) t.test('should support overriding run', async function() { - cli.run = null await cli.parseOptions(['-n', 'unittest_run1']) assert.strictEqual(cli.run, 'unittest_run1') }) t.test('should support overriding run with long option', async function() { - cli.run = null await cli.parseOptions(['--npm', 'unittest_run1']) assert.strictEqual(cli.run, 'unittest_run1') }) - t.test('should fail overriding if next parameter is missing', async function() { - cli.run = null + t.test('should fail setting npm if value is missing', async function() { let err = await assert.isRejected(cli.parseOptions(['--npm'])) - assert.strictEqual(cli.run, null) + assert.strictEqual(cli.run, 'test') assert.match(err.message, /npm/i) }) - t.test('should fail overriding if next parameter is a parameter', async function() { - cli.run = null + t.test('should fail setting npm if value is parameter', async function() { let err = await assert.isRejected(cli.parseOptions(['-n', '--reporter', 'list'])) - assert.strictEqual(cli.run, null) + assert.strictEqual(cli.run, 'test') assert.match(err.message, /npm/i) }) + t.test('when using run and no target, leave target empty', async function() { + await cli.parseOptions(['--npm', 'unittest_run1']) + assert.strictEqual(cli.targets.length, 0) + }) + t.test('should add file to targets', async function() { await cli.parseOptions(['test']) assert.deepEqual(cli.targets, ['test'])