Skip to content

Commit

Permalink
test: add default coverage default exclusions test
Browse files Browse the repository at this point in the history
  • Loading branch information
pmarchini committed Dec 11, 2024
1 parent 4f5885e commit 4e2bdf6
Show file tree
Hide file tree
Showing 7 changed files with 157 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const test = require('node:test');
const assert = require('node:assert');
const { foo } = require('./logic-file');

test('foo returns 1', () => {
assert.strictEqual(foo(), 1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import test from 'node:test';
import assert from 'node:assert';
import { foo } from './logic-file.js';

test('foo returns 1', () => {
assert.strictEqual(foo(), 1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import test from 'node:test';
import assert from 'node:assert';
import { foo } from './logic-file.js';

test('foo returns 1', () => {
assert.strictEqual(foo(), 1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
function foo() {
return 1;
}

function bar() {
return 'bar';
}

module.exports = { foo, bar };
7 changes: 7 additions & 0 deletions test/fixtures/test-runner/coverage-default-exclusion/test.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const test = require('node:test');
const assert = require('node:assert');
const { foo } = require('./logic-file.js');

test('foo returns 1', () => {
assert.strictEqual(foo(), 1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const test = require('node:test');
const assert = require('node:assert');
const { foo } = require('../logic-file.js');

test('foo returns 1', () => {
assert.strictEqual(foo(), 1);
});
113 changes: 113 additions & 0 deletions test/parallel/test-runner-coverage-default-exclusion.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
import '../common/index.mjs';
import { before, describe, it } from 'node:test';
import assert from 'node:assert';
import { spawnSync } from 'node:child_process';
import { cp } from 'node:fs/promises';
import tmpdir from '../common/tmpdir.js';
import fixtures from '../common/fixtures.js';

tmpdir.refresh();

async function setupFixtures() {
const fixtureDir = fixtures.path('test-runner', 'coverage-default-exclusion');
await cp(fixtureDir, tmpdir.path, { recursive: true });
}

describe('test runner coverage default exclusion', () => {
before(async () => {
await setupFixtures();
});

it('should override default exclusion setting --test-coverage-exclude', async () => {
const report = [
'# start of coverage report',
'# ---------------------------------------------------------------------------',
'# file | line % | branch % | funcs % | uncovered lines',
'# ---------------------------------------------------------------------------',
'# file-test.js | 100.00 | 100.00 | 100.00 | ',
'# file.test.mjs | 100.00 | 100.00 | 100.00 | ',
'# logic-file.js | 66.67 | 100.00 | 50.00 | 5-7',
'# test.cjs | 100.00 | 100.00 | 100.00 | ',
'# test | | | | ',
'# not-matching-test-name.js | 100.00 | 100.00 | 100.00 | ',
'# ---------------------------------------------------------------------------',
'# all files | 91.89 | 100.00 | 83.33 | ',
'# ---------------------------------------------------------------------------',
'# end of coverage report',
].join('\n');


const args = [
'--test',
'--experimental-test-coverage',
'--test-coverage-exclude=!test/**',
'--test-reporter=tap',
];
const result = spawnSync(process.execPath, args, {
env: { ...process.env, NODE_TEST_TMPDIR: tmpdir.path },
cwd: tmpdir.path
});

assert.strictEqual(result.stderr.toString(), '');
assert(result.stdout.toString().includes(report));
assert.strictEqual(result.status, 0);
});

it('should exclude test files from coverage by default', async () => {
const report = [
'# start of coverage report',
'# --------------------------------------------------------------',
'# file | line % | branch % | funcs % | uncovered lines',
'# --------------------------------------------------------------',
'# logic-file.js | 66.67 | 100.00 | 50.00 | 5-7',
'# --------------------------------------------------------------',
'# all files | 66.67 | 100.00 | 50.00 | ',
'# --------------------------------------------------------------',
'# end of coverage report',
].join('\n');

const args = [
'--test',
'--experimental-test-coverage',
'--test-reporter=tap',
];
const result = spawnSync(process.execPath, args, {
env: { ...process.env, NODE_TEST_TMPDIR: tmpdir.path },
cwd: tmpdir.path
});

assert.strictEqual(result.stderr.toString(), '');
assert(result.stdout.toString().includes(report));
assert.strictEqual(result.status, 0);
});

it('should exclude ts test files when using --experimental-strip-types', async () => {
const report = [
'# start of coverage report',
'# --------------------------------------------------------------',
'# file | line % | branch % | funcs % | uncovered lines',
'# --------------------------------------------------------------',
'# logic-file.js | 66.67 | 100.00 | 50.00 | 5-7',
'# --------------------------------------------------------------',
'# all files | 66.67 | 100.00 | 50.00 | ',
'# --------------------------------------------------------------',
'# end of coverage report',
].join('\n');

const args = [
'--test',
'--experimental-test-coverage',
'--experimental-strip-types',
'--disable-warning=ExperimentalWarning',
'--test-reporter=tap',
];
const result = spawnSync(process.execPath, args, {
env: { ...process.env, NODE_TEST_TMPDIR: tmpdir.path },
cwd: tmpdir.path
});

assert.strictEqual(result.stderr.toString(), '');
assert(result.stdout.toString().includes(report));
assert.strictEqual(result.status, 0);
});
});

0 comments on commit 4e2bdf6

Please sign in to comment.