forked from isaacs/minimatch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tricky-negations.js
111 lines (93 loc) · 2.29 KB
/
tricky-negations.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
106
107
108
109
110
111
import t from 'tap'
import { minimatch } from '../dist/esm/index.js'
var cases = {
'bar.min.js': {
'*.!(js|css)': true,
'!*.+(js|css)': false,
'*.+(js|css)': true,
},
'a-integration-test.js': {
'*.!(j)': true,
'!(*-integration-test.js)': false,
'*-!(integration-)test.js': true,
'*-!(integration)-test.js': false,
'*!(-integration)-test.js': true,
'*!(-integration-)test.js': true,
'*!(integration)-test.js': true,
'*!(integration-test).js': true,
'*-!(integration-test).js': true,
'*-!(integration-test.js)': true,
'*-!(integra)tion-test.js': false,
'*-integr!(ation)-test.js': false,
'*-integr!(ation-t)est.js': false,
'*-i!(ntegration-)test.js': false,
'*i!(ntegration-)test.js': true,
'*te!(gration-te)st.js': true,
'*-!(integration)?test.js': false,
'*?!(integration)?test.js': true,
},
'foo-integration-test.js': {
'foo-integration-test.js': true,
'!(*-integration-test.js)': false,
},
'foo.jszzz.js': {
'*.!(js).js': true,
},
'asd.jss': {
'*.!(js)': true,
},
'asd.jss.xyz': {
'*.!(js).!(xy)': true,
},
'asd.jss.xy': {
'*.!(js).!(xy)': false,
},
'asd.js.xyz': {
'*.!(js).!(xy)': false,
},
'asd.js.xy': {
'*.!(js).!(xy)': false,
},
'asd.sjs.zxy': {
'*.!(js).!(xy)': true,
},
'asd..xyz': {
'*.!(js).!(xy)': true,
},
'asd..xy': {
'*.!(js).!(xy)': false,
'*.!(js|x).!(xy)': false,
},
'foo.js.js': {
'*.!(js)': true,
},
'testjson.json': {
'*(*.json|!(*.js))': true,
'+(*.json|!(*.js))': true,
'@(*.json|!(*.js))': true,
'?(*.json|!(*.js))': true,
},
'foojs.js': {
'*(*.json|!(*.js))': false, // XXX bash 4.3 disagrees!
'+(*.json|!(*.js))': false, // XXX bash 4.3 disagrees!
'@(*.json|!(*.js))': false,
'?(*.json|!(*.js))': false,
},
'other.bar': {
'*(*.json|!(*.js))': true,
'+(*.json|!(*.js))': true,
'@(*.json|!(*.js))': true,
'?(*.json|!(*.js))': true,
},
}
var options = { nonegate: true }
Object.keys(cases).forEach(function (file) {
t.test(file, function (t) {
Object.keys(cases[file]).forEach(function (pattern) {
var res = cases[file][pattern]
var s = file + ' ' + pattern
t.equal(minimatch(file, pattern, options), res, s)
})
t.end()
})
})