eslint-plugin-folder-name-convention
Version:
ESLint plugin to enforce folder naming conventions (kebab-case, camelCase, etc.)
53 lines (48 loc) • 1.54 kB
JavaScript
const path = require('path');
const fs = require('fs');
const os = require('os');
const { RuleTester } = require('eslint');
const rule = require('../lib/rules/enforce');
// Setup for valid test
const validTmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'eslint-folder-test-valid-'));
fs.mkdirSync(path.join(validTmpDir, 'valid-folder'));
fs.mkdirSync(path.join(validTmpDir, 'another-folder'));
const validDummyFile = path.join(validTmpDir, 'index.js');
fs.writeFileSync(validDummyFile, '// dummy');
// Setup for invalid test
const invalidTmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'eslint-folder-test-invalid-'));
fs.mkdirSync(path.join(invalidTmpDir, 'InvalidFolderName'));
const invalidDummyFile = path.join(invalidTmpDir, 'index.js');
fs.writeFileSync(invalidDummyFile, '// dummy');
const ruleTester = new RuleTester({ languageOptions: { ecmaVersion: 2020 } });
ruleTester.run('folder-name-convention/enforce', rule, {
valid: [
{
filename: validDummyFile,
code: '// valid folder structure',
options: [
{
pattern: 'kebab-case',
rootDir: validTmpDir,
},
],
},
],
invalid: [
{
filename: invalidDummyFile,
code: '// contains invalid folder name',
options: [
{
pattern: 'kebab-case',
rootDir: invalidTmpDir,
},
],
errors: [
{
message: `Folder name "${path.join(invalidTmpDir, 'InvalidFolderName')}" does not match pattern "kebab-case".`,
},
],
},
],
});