Skip to content

Commit 7fa846e

Browse files
committed
feature: @putout/test: report: add ability to pass plugins
1 parent c77363c commit 7fa846e

File tree

3 files changed

+35
-9
lines changed

3 files changed

+35
-9
lines changed

packages/test/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const test = createTest(import.meta.url, {
5858
});
5959
```
6060
61-
### `report(filename, message: string | string[])`
61+
### `report(filename, message: string | string[], plugins?: PutoutPlugin[])`
6262
6363
Check error message (or messages) of a plugin:
6464
@@ -78,7 +78,7 @@ test('remove useless variables: dot', (t) => {
7878
});
7979
```
8080
81-
### `reportCode(input, message)`
81+
### `reportCode(input: string, message: string | string[], plugins?: PutoutPlugins)`
8282
8383
Check error message of a plugin from `input` code:
8484

packages/test/lib/test.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -473,16 +473,20 @@ const noTransformCode = currify((lint, options, t, input) => {
473473

474474
const getMessage = ({message}) => message;
475475

476-
const report = (dir, lint, options) => (t) => (name, message) => {
476+
const report = (dir, lint, options) => (t) => (name, message, plugins) => {
477477
checkReport(name, message);
478478

479479
const full = join(dir, name);
480480
const [source, isTS] = readFixture(full);
481481

482-
return reportCode(lint, {
482+
const addT = reportCode(lint, {
483483
isTS,
484484
...options,
485-
}, t, source, message);
485+
});
486+
487+
const run = addT(t);
488+
489+
return run(source, message, plugins);
486490
};
487491

488492
const noReport = currify((dir, lint, options, t, name) => {
@@ -542,11 +546,15 @@ const reportWithOptions = currify((dir, lint, options, t, name, message, ruleOpt
542546
[rule]: ['on', ruleOptions],
543547
};
544548

545-
return reportCode(lint, {
549+
const addT = reportCode(lint, {
546550
...options,
547551
rules,
548552
isTS,
549-
}, t, source, message);
553+
});
554+
555+
const run = addT(t);
556+
557+
return run(source, message);
550558
});
551559

552560
const noReportWithOptions = currify((dir, lint, options, t, name, ruleOptions) => {
@@ -567,10 +575,15 @@ const noReportWithOptions = currify((dir, lint, options, t, name, ruleOptions) =
567575
}, t, source);
568576
});
569577

570-
const reportCode = currify((lint, options, t, source, message) => {
578+
const reportCode = (lint, options) => (t) => (source, message, addons) => {
579+
const {plugins} = options;
571580
const {places} = lint(source, {
572581
fix: false,
573582
...options,
583+
plugins: [{
584+
...toObject(plugins),
585+
...addons,
586+
}],
574587
});
575588

576589
const resultMessages = places.map(getMessage);
@@ -579,7 +592,7 @@ const reportCode = currify((lint, options, t, source, message) => {
579592
return t.deepEqual(resultMessages, message);
580593

581594
return t.equal(resultMessages[0], message);
582-
});
595+
};
583596

584597
const noReportCode = currify((lint, options, t, source) => {
585598
const {places} = lint(source, {

packages/test/test/report.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const montag = require('montag');
66
const tryCatch = require('try-catch');
77
const {stub} = require('supertape');
88
const putout = require('putout');
9+
const removeUnusedVariables = require('@putout/plugin-remove-unused-variables');
910

1011
const {
1112
createTest,
@@ -61,6 +62,18 @@ test('putout: test: noReportWithOptions', (t) => {
6162
t.end();
6263
});
6364

65+
test('putout: test: report: plugins', (t) => {
66+
const expected = [
67+
`'x' is defined but never used`,
68+
'avoid imports',
69+
];
70+
71+
t.report('remove-import', expected, {
72+
removeUnusedVariables,
73+
});
74+
t.end();
75+
});
76+
6477
test('putout: test: noReport', (t) => {
6578
const dir = join(__dirname, 'fixture');
6679
const plugins = [

0 commit comments

Comments
 (0)