Skip to content

Commit

Permalink
test: increase coverage of pathToFileURL
Browse files Browse the repository at this point in the history
PR-URL: nodejs#55493
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: LiviaMedeiros <[email protected]>
  • Loading branch information
aduh95 authored and tpoisseau committed Nov 21, 2024
1 parent 76080a9 commit 6ebdc2c
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions test/parallel/test-url-pathtofileurl.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ const windowsTestCases = [
// Extended UNC path
{ path: '\\\\?\\UNC\\server\\share\\folder\\file.txt', expected: 'file://server/share/folder/file.txt' },
];
const alphabet = String.fromCharCode(...Array.from({ length: 26 }, (_, i) => 'a'.charCodeAt() + i));
const posixTestCases = [
// Lowercase ascii alpha
{ path: '/foo', expected: 'file:///foo' },
Expand Down Expand Up @@ -159,6 +160,31 @@ const posixTestCases = [
{ path: '/🚀', expected: 'file:///%F0%9F%9A%80' },
// "unsafe" chars
{ path: '/foo\r\n\t<>"#%{}|^[\\~]`?bar', expected: 'file:///foo%0D%0A%09%3C%3E%22%23%25%7B%7D%7C%5E%5B%5C%7E%5D%60%3Fbar' },
// All of the 16-bit UTF-16 chars
{
path: `/${Array.from({ length: 0x7FFF }, (_, i) => String.fromCharCode(i)).join('')}`,
expected: `file:///${
Array.from({ length: 0x21 }, (_, i) => `%${i.toString(16).toUpperCase().padStart(2, '0')}`).join('')
}!%22%23$%25&'()*+,-./0123456789:;%3C=%3E%3F@${
alphabet.toUpperCase()
}%5B%5C%5D%5E_%60${alphabet}%7B%7C%7D%7E%7F${
Array.from({ length: 0x800 - 0x80 }, (_, i) => `%${
(Math.floor((i - 0x80) / 0x40) + 0xC4).toString(16).toUpperCase()
}%${
((i % 0x40) + 0x80).toString(16).toUpperCase()
}`).join('')
}${
Array.from({ length: 0x7FFF - 0x800 }, (_, i) => i + 0x800).map((i) => `%E${
(i >> 12).toString(16).toUpperCase()
}%${
(((i >> 6) % 0x40) + 0x80).toString(16).toUpperCase()
}%${
((i % 0x40) + 0x80).toString(16).toUpperCase()
}`).join('')
}`
},
// Trying with some pair of 16-bit surrogate pseudo-characters
{ path: `/${String.fromCodePoint(0x1F303)}`, expected: 'file:///%F0%9F%8C%83' },
];

for (const { path, expected } of windowsTestCases) {
Expand Down

0 comments on commit 6ebdc2c

Please sign in to comment.