Path: blob/main/tests/src/rules/no-dynamic-require.js
829 views
import { test } from '../utils';12import { RuleTester } from 'eslint';34const ruleTester = new RuleTester();5const rule = require('rules/no-dynamic-require');67const error = {8message: 'Calls to require() should use string literals',9};1011const dynamicImportError = {12message: 'Calls to import() should use string literals',13};1415ruleTester.run('no-dynamic-require', rule, {16valid: [17test({ code: 'import _ from "lodash"' }),18test({ code: 'require("foo")' }),19test({ code: 'require(`foo`)' }),20test({ code: 'require("./foo")' }),21test({ code: 'require("@scope/foo")' }),22test({ code: 'require()' }),23test({ code: 'require("./foo", "bar" + "okay")' }),24test({ code: 'var foo = require("foo")' }),25test({ code: 'var foo = require(`foo`)' }),26test({ code: 'var foo = require("./foo")' }),27test({ code: 'var foo = require("@scope/foo")' }),2829//dynamic import30test({31code: 'import("foo")',32parser: require.resolve('babel-eslint'),33options: [{ esmodule: true }],34}),35test({36code: 'import(`foo`)',37parser: require.resolve('babel-eslint'),38options: [{ esmodule: true }],39}),40test({41code: 'import("./foo")',42parser: require.resolve('babel-eslint'),43options: [{ esmodule: true }],44}),45test({46code: 'import("@scope/foo")',47parser: require.resolve('babel-eslint'),48options: [{ esmodule: true }],49}),50test({51code: 'var foo = import("foo")',52parser: require.resolve('babel-eslint'),53options: [{ esmodule: true }],54}),55test({56code: 'var foo = import(`foo`)',57parser: require.resolve('babel-eslint'),58options: [{ esmodule: true }],59}),60test({61code: 'var foo = import("./foo")',62parser: require.resolve('babel-eslint'),63options: [{ esmodule: true }],64}),65test({66code: 'var foo = import("@scope/foo")',67parser: require.resolve('babel-eslint'),68options: [{ esmodule: true }],69}),70test({71code: 'import("../" + name)',72errors: [dynamicImportError],73parser: require.resolve('babel-eslint'),74options: [{ esmodule: false }],75}),76test({77code: 'import(`../${name}`)',78errors: [dynamicImportError],79parser: require.resolve('babel-eslint'),80}),81],82invalid: [83test({84code: 'require("../" + name)',85errors: [error],86}),87test({88code: 'require(`../${name}`)',89errors: [error],90}),91test({92code: 'require(name)',93errors: [error],94}),95test({96code: 'require(name())',97errors: [error],98}),99test({100code: 'require(name + "foo", "bar")',101errors: [error],102options: [{ esmodule: true }],103}),104105// dynamic import106test({107code: 'import("../" + name)',108errors: [dynamicImportError],109parser: require.resolve('babel-eslint'),110options: [{ esmodule: true }],111}),112test({113code: 'import(`../${name}`)',114errors: [dynamicImportError],115parser: require.resolve('babel-eslint'),116options: [{ esmodule: true }],117}),118test({119code: 'import(name)',120errors: [dynamicImportError],121parser: require.resolve('babel-eslint'),122options: [{ esmodule: true }],123}),124test({125code: 'import(name())',126errors: [dynamicImportError],127parser: require.resolve('babel-eslint'),128options: [{ esmodule: true }],129}),130test({131code: 'require(`foo${x}`)',132errors: [error],133}),134test({135code: 'var foo = require(`foo${x}`)',136errors: [error],137}),138],139});140141142