From 8f23d3779b63e5a3c5bd1ea628632f0ee3e87cd2 Mon Sep 17 00:00:00 2001 From: scagood <2230835+scagood@users.noreply.github.com> Date: Mon, 9 Dec 2024 16:24:07 +0000 Subject: [PATCH] test: Add failing test for #395 --- .../no-unsupported-features/node-builtins.js | 90 ++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/tests/lib/rules/no-unsupported-features/node-builtins.js b/tests/lib/rules/no-unsupported-features/node-builtins.js index 1c8295d8..626f518d 100644 --- a/tests/lib/rules/no-unsupported-features/node-builtins.js +++ b/tests/lib/rules/no-unsupported-features/node-builtins.js @@ -4,13 +4,58 @@ */ "use strict" +/** @import { Linter } from 'eslint' */ + const RuleTester = require("../../../test-helpers").RuleTester const rule = require("../../../../lib/rules/no-unsupported-features/node-builtins") +/** + * @typedef ValidTestCase + * @property {string} [name] + * @property {string} code + * @property {any} [options] + * @property {string | undefined} [filename] + * @property {boolean} [only] + * @property {Linter.LanguageOptions | undefined} [languageOptions] + * @property {{ [name: string]: any } | undefined} [settings] + */ +/** + * @typedef SuggestionOutput + * @property {string} [messageId] + * @property {string} [desc] + * @property {Record | undefined} [data] + * @property {string} output + */ +/** + * @typedef InvalidTestExtras + * @property {number | Array} errors + * @property {string | null | undefined} [output] + */ +/** + * @typedef {ValidTestCase & InvalidTestExtras} InvalidTestCase + */ +/** + * @typedef TestCaseError + * @property {string | RegExp} [message] + * @property {string} [messageId] + * @property {string | undefined} [type] + * @property {any} [data] + * @property {number | undefined} [line] + * @property {number | undefined} [column] + * @property {number | undefined} [endLine] + * @property {number | undefined} [endColumn] + * @property {SuggestionOutput[] | undefined} [suggestions] + */ +/** + * @typedef Pattern + * @property {ValidTestCase[]} [valid] + * @property {InvalidTestCase[]} [invalid] + */ + /** * Concatenate patterns. - * @param {Array<{valid:Array,invalid:Array}>} patterns The patterns to concat. - * @returns {{valid:Array,invalid:Array}} The concatenated patterns. + * @param {Pattern[]} patterns The patterns to concat. + * @returns {Pattern} The concatenated patterns. */ function concat(patterns) { const ret = { @@ -5372,6 +5417,47 @@ new RuleTester({ languageOptions: { sourceType: "module" } }).run( ], }, + //---------------------------------------------------------------------- + // timers/promises + //---------------------------------------------------------------------- + { + valid: [ + { + code: ` + import { scheduler } from 'node:timers/promises'; + await scheduler.wait( 1000 ); + `, + options: [ + { + version: ">= 20.0.0", + ignores: ["timers/promises.scheduler.wait"], + }, + ], + languageOptions: { ecmaVersion: "latest" }, + }, + ], + invalid: [ + { + code: ` + import { scheduler } from 'node:timers/promises'; + await scheduler.wait( 1000 ); + `, + options: [{ version: ">= 20.0.0" }], + languageOptions: { ecmaVersion: "latest" }, + + errors: [ + { + messageId: "not-supported-yet", + data: { + name: "timers/promises.scheduler.wait", + version: ">= 20.0.0", + }, + }, + ], + }, + ], + }, + { valid: [ {