2025-07-16 22:29:28 +08:00
|
|
|
"use strict";
|
|
|
|
|
2025-07-03 17:06:45 +08:00
|
|
|
const { getProtocol, getScheme } = require("../lib/util/URLAbsoluteSpecifier");
|
2020-06-26 05:14:50 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @type {Array<{specifier: string, expected: string|undefined}>}
|
|
|
|
*/
|
|
|
|
const samples = [
|
|
|
|
{
|
|
|
|
specifier: "@babel/core",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "webpack",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "1webpack:///c:/windows/dir",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "webpack:///c:/windows/dir",
|
|
|
|
expected: "webpack"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "WEBPACK2020:///c:/windows/dir",
|
|
|
|
expected: "webpack2020"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "my-data:image/jpg;base64",
|
|
|
|
expected: "my-data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "My+Data:image/jpg;base64",
|
|
|
|
expected: "my+data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "mY+dATA:image/jpg;base64",
|
|
|
|
expected: "my+data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "my-data/next:image/",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "my-data\\next:image/",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "D:\\path\\file.js",
|
2020-06-30 14:50:28 +08:00
|
|
|
expected: undefined
|
2020-07-03 16:18:41 +08:00
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "d:/path/file.js",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "z:#foo",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "Z:?query",
|
|
|
|
expected: undefined
|
|
|
|
},
|
|
|
|
{
|
|
|
|
specifier: "C:",
|
|
|
|
expected: undefined
|
2020-06-26 05:14:50 +08:00
|
|
|
}
|
|
|
|
];
|
|
|
|
|
|
|
|
describe("getScheme", () => {
|
2024-08-02 02:36:27 +08:00
|
|
|
for (const [_i, { specifier, expected }] of samples.entries()) {
|
2020-07-03 16:18:41 +08:00
|
|
|
it(`should handle ${specifier}`, () => {
|
2020-06-26 05:14:50 +08:00
|
|
|
expect(getScheme(specifier)).toBe(expected);
|
|
|
|
});
|
2024-08-02 02:36:27 +08:00
|
|
|
}
|
2020-06-26 05:14:50 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
describe("getProtocol", () => {
|
2024-08-02 02:36:27 +08:00
|
|
|
for (const [_i, { specifier, expected }] of samples.entries()) {
|
2020-07-03 16:18:41 +08:00
|
|
|
it(`should handle ${specifier}`, () => {
|
|
|
|
expect(getProtocol(specifier)).toBe(
|
2024-07-31 10:39:30 +08:00
|
|
|
expected ? `${expected}:` : undefined
|
2020-07-03 16:18:41 +08:00
|
|
|
);
|
2020-06-26 05:14:50 +08:00
|
|
|
});
|
2024-08-02 02:36:27 +08:00
|
|
|
}
|
2020-06-26 05:14:50 +08:00
|
|
|
});
|