mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-22 05:40:48 +02:00
148 lines
3.5 KiB
JavaScript
148 lines
3.5 KiB
JavaScript
![]() |
// @ts-check
|
||
|
|
||
|
import test from "ava";
|
||
|
import path from "node:path";
|
||
|
import { __dirname as getDirname } from "./esm-helpers.mjs";
|
||
|
import { resolveModule, resolveModuleCustomResolve } from "../lib/resolve-module.cjs";
|
||
|
|
||
|
import { createRequire } from "node:module";
|
||
|
const require = createRequire(import.meta.url);
|
||
|
// eslint-disable-next-line no-underscore-dangle
|
||
|
const __dirname = getDirname(import.meta);
|
||
|
|
||
|
test("built-in module", (t) => {
|
||
|
t.plan(1);
|
||
|
t.deepEqual(
|
||
|
resolveModule("node:fs"),
|
||
|
require.resolve("node:fs")
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("locally-installed module", (t) => {
|
||
|
t.plan(1);
|
||
|
t.deepEqual(
|
||
|
resolveModule("micromark"),
|
||
|
require.resolve("micromark")
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("absolute path to module", (t) => {
|
||
|
t.plan(1);
|
||
|
const absolute =
|
||
|
path.resolve(
|
||
|
__dirname,
|
||
|
"./rules/node_modules/markdownlint-rule-sample-commonjs"
|
||
|
);
|
||
|
t.deepEqual(
|
||
|
resolveModule(absolute),
|
||
|
require.resolve(absolute)
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("relative (to __dirname) path to module", (t) => {
|
||
|
t.plan(1);
|
||
|
t.deepEqual(
|
||
|
resolveModule(
|
||
|
"./rules/node_modules/markdownlint-rule-sample-module",
|
||
|
// __dirname is needed because require.resolve is relative to this
|
||
|
// file while resolveModule is relative to resolve-module.cjs
|
||
|
[ __dirname ]
|
||
|
),
|
||
|
require.resolve(
|
||
|
"./rules/node_modules/markdownlint-rule-sample-module"
|
||
|
)
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("module in alternate node_modules", (t) => {
|
||
|
t.plan(3);
|
||
|
t.throws(
|
||
|
() => require.resolve("markdownlint-rule-sample-commonjs"),
|
||
|
{ "code": "MODULE_NOT_FOUND" }
|
||
|
);
|
||
|
t.throws(
|
||
|
() => resolveModule("markdownlint-rule-sample-commonjs"),
|
||
|
{ "code": "MODULE_NOT_FOUND" }
|
||
|
);
|
||
|
t.deepEqual(
|
||
|
resolveModule(
|
||
|
"markdownlint-rule-sample-commonjs",
|
||
|
[ path.join(__dirname, "rules") ]
|
||
|
),
|
||
|
require.resolve(
|
||
|
"markdownlint-rule-sample-commonjs",
|
||
|
{ "paths": [ path.join(__dirname, "rules") ] }
|
||
|
)
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("module local, relative, and in alternate node_modules (same paths)", (t) => {
|
||
|
t.plan(3);
|
||
|
const paths = [
|
||
|
__dirname,
|
||
|
path.join(__dirname, "rules")
|
||
|
];
|
||
|
t.deepEqual(
|
||
|
resolveModule(
|
||
|
"micromark",
|
||
|
paths
|
||
|
),
|
||
|
require.resolve(
|
||
|
"micromark",
|
||
|
{ paths }
|
||
|
)
|
||
|
);
|
||
|
t.deepEqual(
|
||
|
resolveModule(
|
||
|
"./rules/node_modules/markdownlint-rule-sample-commonjs",
|
||
|
paths
|
||
|
),
|
||
|
require.resolve(
|
||
|
"./rules/node_modules/markdownlint-rule-sample-commonjs",
|
||
|
{ paths }
|
||
|
)
|
||
|
);
|
||
|
t.deepEqual(
|
||
|
resolveModule(
|
||
|
"markdownlint-rule-sample-commonjs",
|
||
|
paths
|
||
|
),
|
||
|
require.resolve(
|
||
|
"markdownlint-rule-sample-commonjs",
|
||
|
{ paths }
|
||
|
)
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("custom resolve implementation", (t) => {
|
||
|
t.plan(1);
|
||
|
const expected =
|
||
|
require.resolve("./rules/node_modules/markdownlint-rule-sample-module");
|
||
|
const customResolve = (id, options) => require.resolve(id, options);
|
||
|
customResolve.paths = (request) => require.resolve.paths(request);
|
||
|
t.deepEqual(
|
||
|
resolveModuleCustomResolve(
|
||
|
customResolve,
|
||
|
"./rules/node_modules/markdownlint-rule-sample-module",
|
||
|
[ __dirname ]
|
||
|
),
|
||
|
expected
|
||
|
);
|
||
|
});
|
||
|
|
||
|
test("custom resolve implementation, missing paths", (t) => {
|
||
|
t.plan(1);
|
||
|
const expected =
|
||
|
require.resolve("./rules/node_modules/markdownlint-rule-sample-commonjs");
|
||
|
const customResolve = (id, options) => require.resolve(id, options);
|
||
|
t.deepEqual(
|
||
|
resolveModuleCustomResolve(
|
||
|
// @ts-ignore
|
||
|
customResolve,
|
||
|
"./rules/node_modules/markdownlint-rule-sample-commonjs",
|
||
|
[ __dirname ]
|
||
|
),
|
||
|
expected
|
||
|
);
|
||
|
});
|