UNPKG

eslint-config-agent

Version:

ESLint configuration package with TypeScript support

104 lines (96 loc) 2.15 kB
import { RuleTester } from "eslint"; import { selector, message } from "./index.js"; const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 2022, sourceType: "module", parserOptions: { ecmaFeatures: { jsx: true, }, }, }, }); // Create a mock rule for testing const mockRule = { meta: { type: "problem", docs: { description: "Disallow empty export statements", }, schema: [], }, create(context) { return { [selector]: (node) => { context.report({ node, message, }); }, }; }, }; ruleTester.run("no-empty-exports", mockRule, { valid: [ // Named exports with declarations 'export const foo = 1;', 'export function bar() {}', 'export class Baz {}', // Default exports 'const foo = 1; export default foo;', 'export default function() {}', 'export default class {}', // Re-exports from other modules (allowed) 'export { } from "./other";', 'export { foo } from "./other";', 'export * from "./other";', 'export * as namespace from "./other";', // Regular exports 'const Bar = {}; export { Bar };', // No exports at all 'const foo = 1;', 'function bar() {}', 'class Baz {}', // Named exports with local variables 'const foo = 1; const bar = 2; export { foo };', 'const foo = 1; const bar = 2; export { foo, bar };', 'const foo = 1; export { foo as bar };', ], invalid: [ { code: 'export { };', errors: [{ message }], }, { code: 'export {\n};', errors: [{ message }], }, { code: 'export { };', errors: [{ message }], }, { code: `export { };`, errors: [{ message }], }, { code: 'export { /* comment */ };', errors: [{ message }], }, // Multiple empty exports { code: `export { }; export { };`, errors: [{ message }, { message }], }, // Mixed with valid exports { code: `export const foo = 1; export { }; export function bar() {}`, errors: [{ message }], }, ], });