/
test.js
39 lines (35 loc) · 1.82 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import test from 'ava';
import filenamify, {filenamifyPath} from './index.js';
const directoryName = path.dirname(fileURLToPath(import.meta.url));
test('filnamify()', t => {
t.is(filenamify('foo/bar'), 'foo!bar');
t.is(filenamify('foo//bar'), 'foo!bar');
t.is(filenamify('//foo//bar//'), 'foo!bar');
t.is(filenamify('foo\\\\\\bar'), 'foo!bar');
t.is(filenamify('foo/bar', {replacement: '🐴🐴'}), 'foo🐴🐴bar');
t.is(filenamify('////foo////bar////', {replacement: '(('}), 'foo((bar');
t.is(filenamify('foo\u0000bar'), 'foo!bar');
t.is(filenamify('.'), '!');
t.is(filenamify('..'), '!');
t.is(filenamify('./'), '!');
t.is(filenamify('../'), '!');
t.is(filenamify('foo.bar.'), 'foo.bar');
t.is(filenamify('foo.bar..'), 'foo.bar');
t.is(filenamify('foo.bar...'), 'foo.bar');
t.is(filenamify('con'), 'con!');
t.is(filenamify('foo/bar/nul'), 'foo!bar!nul');
t.is(filenamify('con', {replacement: '🐴🐴'}), 'con🐴🐴');
t.is(filenamify('c/n', {replacement: 'o'}), 'cono');
t.is(filenamify('c/n', {replacement: 'con'}), 'cconn');
});
test('filenamifyPath()', t => {
t.is(path.basename(filenamifyPath(path.join(directoryName, 'foo:bar'))), 'foo!bar');
});
test('filenamify length', t => {
// Basename length: 152
const filename = 'this/is/a/very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_filename.txt';
t.is(filenamify(path.basename(filename)), 'very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_');
t.is(filenamify(path.basename(filename), {maxLength: 180}), 'very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_very_long_filename.txt');
});