import path from 'node:path'; import {fileURLToPath} from 'node:url'; import {test} from 'tap'; import {load} from '../entrypoints/eslint-plugin-helper.cjs'; const projectDir = fileURLToPath(new URL('fixture/eslint-plugin-helper', import.meta.url)); const overrideDir = fileURLToPath(new URL('fixture/eslint-plugin-helper/for-overriding', import.meta.url)); test('caches loaded configuration', t => { const expected = load(projectDir); t.equal(expected, load(projectDir)); const withOverride = load(projectDir, {}); t.not(expected, withOverride); t.equal(withOverride, load(projectDir, {})); t.end(); }); test('classifies files according to the configuration', t => { const helper = load(projectDir); t.same(helper.classifyFile(path.join(projectDir, 'tests/test.foo')), { isHelper: false, isTest: true, }); t.same(helper.classifyFile(path.join(projectDir, 'tests/_helper.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyFile(path.join(projectDir, 'tests/_helper/file.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyFile(path.join(projectDir, 'helpers/helper.foo')), { isHelper: false, isTest: false, }); t.same(helper.classifyFile(path.join(projectDir, 'source.foo')), { isHelper: false, isTest: false, }); t.same(helper.classifyFile(path.join(projectDir, 'tests/test.cjs')), { isHelper: false, isTest: false, }); t.end(); }); test('classifies files according to configuration override', t => { const helper = load(overrideDir, { extensions: ['foo'], files: ['tests/**/*'], helpers: ['helpers/*'], }); t.same(helper.classifyFile(path.join(overrideDir, 'tests/test.foo')), { isHelper: false, isTest: true, }); t.same(helper.classifyFile(path.join(overrideDir, 'tests/_helper.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyFile(path.join(overrideDir, 'tests/_helper/file.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyFile(path.join(overrideDir, 'helpers/helper.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyFile(path.join(overrideDir, 'source.foo')), { isHelper: false, isTest: false, }); t.same(helper.classifyFile(path.join(overrideDir, 'tests/test.cjs')), { isHelper: false, isTest: false, }); t.end(); }); test('classifies imports with extension according to the configuration', t => { const helper = load(projectDir); t.same(helper.classifyImport(path.join(projectDir, 'tests/test.foo')), { isHelper: false, isTest: true, }); t.same(helper.classifyImport(path.join(projectDir, 'tests/_helper.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(projectDir, 'tests/_helper/file.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(projectDir, 'helpers/helper.foo')), { isHelper: false, isTest: false, }); t.same(helper.classifyImport(path.join(projectDir, 'source.foo')), { isHelper: false, isTest: false, }); t.end(); }); test('classifies imports with extension according to the override', t => { const helper = load(overrideDir, { extensions: ['foo'], files: ['tests/**/*'], helpers: ['helpers/*'], }); t.same(helper.classifyImport(path.join(overrideDir, 'tests/test.foo')), { isHelper: false, isTest: true, }); t.same(helper.classifyImport(path.join(overrideDir, 'tests/_helper.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(overrideDir, 'tests/_helper/file.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(overrideDir, 'helpers/helper.foo')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(overrideDir, 'source.foo')), { isHelper: false, isTest: false, }); t.end(); }); test('classifies imports without extension according to the configuration', t => { const helper = load(projectDir); t.same(helper.classifyImport(path.join(projectDir, 'tests/test')), { isHelper: false, isTest: true, }); t.same(helper.classifyImport(path.join(projectDir, 'tests/_helper')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(projectDir, 'tests/_helper/file')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(projectDir, 'helpers/helper')), { isHelper: false, isTest: false, }); t.same(helper.classifyImport(path.join(projectDir, 'source')), { isHelper: false, isTest: false, }); t.end(); }); test('classifies imports without extension according to the override', t => { const helper = load(overrideDir, { extensions: ['foo'], files: ['tests/**/*'], helpers: ['helpers/*'], }); t.same(helper.classifyImport(path.join(overrideDir, 'tests/test')), { isHelper: false, isTest: true, }); t.same(helper.classifyImport(path.join(overrideDir, 'tests/_helper')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(overrideDir, 'tests/_helper/file')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(overrideDir, 'helpers/helper')), { isHelper: true, isTest: false, }); t.same(helper.classifyImport(path.join(overrideDir, 'source')), { isHelper: false, isTest: false, }); t.end(); });