forked from sindresorhus/file-type
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
105 lines (100 loc) · 1.5 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import path from 'path';
import test from 'ava';
import readChunk from 'read-chunk';
import fileType from './';
function check(ext, name) {
const file = path.join(__dirname, 'fixture', `${(name || 'fixture')}.${ext}`);
const fileInfo = fileType(readChunk.sync(file, 0, 4 + 4096)) || {};
return fileInfo.ext;
}
const types = [
'jpg',
'png',
'gif',
'webp',
'flif',
'cr2',
'tif',
'bmp',
'jxr',
'psd',
'zip',
'tar',
'rar',
'gz',
'bz2',
'7z',
'dmg',
'mp4',
'm4v',
'mid',
'mkv',
'webm',
'mov',
'avi',
'wmv',
'mpg',
'mp3',
'm4a',
'ogg',
'opus',
'flac',
'wav',
'amr',
'pdf',
'epub',
'exe',
'swf',
'rtf',
'wasm',
'woff',
'woff2',
'eot',
'ttf',
'otf',
'ico',
'flv',
'ps',
'xz',
'sqlite',
'nes',
'crx',
'xpi',
'cab',
'deb',
'ar',
'rpm',
'Z',
'lz',
'msi',
'mxf',
'mts',
'blend',
'bpg'
];
const names = {
woff2: ['fixture', 'fixture-otto'],
woff: ['fixture', 'fixture-otto'],
eot: ['fixture', 'fixture-0x20001'],
mov: ['fixture', 'fixture-mjpeg'],
mp4: ['fixture-imovie', 'fixture-isom', 'fixture-isomv2'],
tif: ['fixture-big-endian', 'fixture-little-endian'],
gz: ['fixture.tar'],
xz: ['fixture.tar'],
lz: ['fixture.tar'],
Z: ['fixture.tar'],
mkv: ['fixture', 'fixture2'],
mxf: ['fixture']
};
function testFile(t, type, name) {
t.is(check(type, name), type);
}
for (const type of types) {
if (Object.prototype.hasOwnProperty.call(names, type)) {
for (const name of names[type]) {
test(type, testFile, type, name);
}
} else {
test(type, testFile, type);
}
}