Path: blob/main/tests/src/rules/no-useless-path-segments.js
829 views
import { test } from '../utils';1import { RuleTester } from 'eslint';23const ruleTester = new RuleTester();4const rule = require('rules/no-useless-path-segments');56function runResolverTests(resolver) {7ruleTester.run(`no-useless-path-segments (${resolver})`, rule, {8valid: [9// CommonJS modules with default options10test({ code: 'require("./../files/malformed.js")' }),1112// ES modules with default options13test({ code: 'import "./malformed.js"' }),14test({ code: 'import "./test-module"' }),15test({ code: 'import "./bar/"' }),16test({ code: 'import "."' }),17test({ code: 'import ".."' }),18test({ code: 'import fs from "fs"' }),1920// ES modules + noUselessIndex21test({ code: 'import "../index"' }), // noUselessIndex is false by default22test({ code: 'import "../my-custom-index"', options: [{ noUselessIndex: true }] }),23test({ code: 'import "./bar.js"', options: [{ noUselessIndex: true }] }), // ./bar/index.js exists24test({ code: 'import "./bar"', options: [{ noUselessIndex: true }] }),25test({ code: 'import "./bar/"', options: [{ noUselessIndex: true }] }), // ./bar.js exists26test({ code: 'import "./malformed.js"', options: [{ noUselessIndex: true }] }), // ./malformed directory does not exist27test({ code: 'import "./malformed"', options: [{ noUselessIndex: true }] }), // ./malformed directory does not exist28test({ code: 'import "./importType"', options: [{ noUselessIndex: true }] }), // ./importType.js does not exist2930test({ code: 'import(".")',31parser: require.resolve('babel-eslint') }),32test({ code: 'import("..")',33parser: require.resolve('babel-eslint') }),34test({ code: 'import("fs").then(function(fs) {})',35parser: require.resolve('babel-eslint') }),36],3738invalid: [39// CommonJS modules40test({41code: 'require("./../files/malformed.js")',42output: 'require("../files/malformed.js")',43options: [{ commonjs: true }],44errors: [ 'Useless path segments for "./../files/malformed.js", should be "../files/malformed.js"'],45}),46test({47code: 'require("./../files/malformed")',48output: 'require("../files/malformed")',49options: [{ commonjs: true }],50errors: [ 'Useless path segments for "./../files/malformed", should be "../files/malformed"'],51}),52test({53code: 'require("../files/malformed.js")',54output: 'require("./malformed.js")',55options: [{ commonjs: true }],56errors: [ 'Useless path segments for "../files/malformed.js", should be "./malformed.js"'],57}),58test({59code: 'require("../files/malformed")',60output: 'require("./malformed")',61options: [{ commonjs: true }],62errors: [ 'Useless path segments for "../files/malformed", should be "./malformed"'],63}),64test({65code: 'require("./test-module/")',66output: 'require("./test-module")',67options: [{ commonjs: true }],68errors: [ 'Useless path segments for "./test-module/", should be "./test-module"'],69}),70test({71code: 'require("./")',72output: 'require(".")',73options: [{ commonjs: true }],74errors: [ 'Useless path segments for "./", should be "."'],75}),76test({77code: 'require("../")',78output: 'require("..")',79options: [{ commonjs: true }],80errors: [ 'Useless path segments for "../", should be ".."'],81}),82test({83code: 'require("./deep//a")',84output: 'require("./deep/a")',85options: [{ commonjs: true }],86errors: [ 'Useless path segments for "./deep//a", should be "./deep/a"'],87}),8889// CommonJS modules + noUselessIndex90test({91code: 'require("./bar/index.js")',92output: 'require("./bar/")',93options: [{ commonjs: true, noUselessIndex: true }],94errors: ['Useless path segments for "./bar/index.js", should be "./bar/"'], // ./bar.js exists95}),96test({97code: 'require("./bar/index")',98output: 'require("./bar/")',99options: [{ commonjs: true, noUselessIndex: true }],100errors: ['Useless path segments for "./bar/index", should be "./bar/"'], // ./bar.js exists101}),102test({103code: 'require("./importPath/")',104output: 'require("./importPath")',105options: [{ commonjs: true, noUselessIndex: true }],106errors: ['Useless path segments for "./importPath/", should be "./importPath"'], // ./importPath.js does not exist107}),108test({109code: 'require("./importPath/index.js")',110output: 'require("./importPath")',111options: [{ commonjs: true, noUselessIndex: true }],112errors: ['Useless path segments for "./importPath/index.js", should be "./importPath"'], // ./importPath.js does not exist113}),114test({115code: 'require("./importType/index")',116output: 'require("./importType")',117options: [{ commonjs: true, noUselessIndex: true }],118errors: ['Useless path segments for "./importType/index", should be "./importType"'], // ./importPath.js does not exist119}),120test({121code: 'require("./index")',122output: 'require(".")',123options: [{ commonjs: true, noUselessIndex: true }],124errors: ['Useless path segments for "./index", should be "."'],125}),126test({127code: 'require("../index")',128output: 'require("..")',129options: [{ commonjs: true, noUselessIndex: true }],130errors: ['Useless path segments for "../index", should be ".."'],131}),132test({133code: 'require("../index.js")',134output: 'require("..")',135options: [{ commonjs: true, noUselessIndex: true }],136errors: ['Useless path segments for "../index.js", should be ".."'],137}),138139// ES modules140test({141code: 'import "./../files/malformed.js"',142output: 'import "../files/malformed.js"',143errors: [ 'Useless path segments for "./../files/malformed.js", should be "../files/malformed.js"'],144}),145test({146code: 'import "./../files/malformed"',147output: 'import "../files/malformed"',148errors: [ 'Useless path segments for "./../files/malformed", should be "../files/malformed"'],149}),150test({151code: 'import "../files/malformed.js"',152output: 'import "./malformed.js"',153errors: [ 'Useless path segments for "../files/malformed.js", should be "./malformed.js"'],154}),155test({156code: 'import "../files/malformed"',157output: 'import "./malformed"',158errors: [ 'Useless path segments for "../files/malformed", should be "./malformed"'],159}),160test({161code: 'import "./test-module/"',162output: 'import "./test-module"',163errors: [ 'Useless path segments for "./test-module/", should be "./test-module"'],164}),165test({166code: 'import "./"',167output: 'import "."',168errors: [ 'Useless path segments for "./", should be "."'],169}),170test({171code: 'import "../"',172output: 'import ".."',173errors: [ 'Useless path segments for "../", should be ".."'],174}),175test({176code: 'import "./deep//a"',177output: 'import "./deep/a"',178errors: [ 'Useless path segments for "./deep//a", should be "./deep/a"'],179}),180181// ES modules + noUselessIndex182test({183code: 'import "./bar/index.js"',184output: 'import "./bar/"',185options: [{ noUselessIndex: true }],186errors: ['Useless path segments for "./bar/index.js", should be "./bar/"'], // ./bar.js exists187}),188test({189code: 'import "./bar/index"',190output: 'import "./bar/"',191options: [{ noUselessIndex: true }],192errors: ['Useless path segments for "./bar/index", should be "./bar/"'], // ./bar.js exists193}),194test({195code: 'import "./importPath/"',196output: 'import "./importPath"',197options: [{ noUselessIndex: true }],198errors: ['Useless path segments for "./importPath/", should be "./importPath"'], // ./importPath.js does not exist199}),200test({201code: 'import "./importPath/index.js"',202output: 'import "./importPath"',203options: [{ noUselessIndex: true }],204errors: ['Useless path segments for "./importPath/index.js", should be "./importPath"'], // ./importPath.js does not exist205}),206test({207code: 'import "./importPath/index"',208output: 'import "./importPath"',209options: [{ noUselessIndex: true }],210errors: ['Useless path segments for "./importPath/index", should be "./importPath"'], // ./importPath.js does not exist211}),212test({213code: 'import "./index"',214output: 'import "."',215options: [{ noUselessIndex: true }],216errors: ['Useless path segments for "./index", should be "."'],217}),218test({219code: 'import "../index"',220output: 'import ".."',221options: [{ noUselessIndex: true }],222errors: ['Useless path segments for "../index", should be ".."'],223}),224test({225code: 'import "../index.js"',226output: 'import ".."',227options: [{ noUselessIndex: true }],228errors: ['Useless path segments for "../index.js", should be ".."'],229}),230test({231code: 'import("./")',232output: 'import(".")',233errors: [ 'Useless path segments for "./", should be "."'],234parser: require.resolve('babel-eslint'),235}),236test({237code: 'import("../")',238output: 'import("..")',239errors: [ 'Useless path segments for "../", should be ".."'],240parser: require.resolve('babel-eslint'),241}),242test({243code: 'import("./deep//a")',244output: 'import("./deep/a")',245errors: [ 'Useless path segments for "./deep//a", should be "./deep/a"'],246parser: require.resolve('babel-eslint'),247}),248],249});250}251252['node', 'webpack'].forEach(runResolverTests);253254255