-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathstars.js
79 lines (72 loc) · 3.84 KB
/
stars.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
'use strict';
var nm = require('./support/match');
describe('stars', function() {
it('should match one directory level with a single star (*)', function() {
var fixtures = ['/a', '/a/', '/b', 'a', 'a/', 'b', 'a/a', 'a/b', 'a/c', 'a/x', 'a/a/a', 'a/a/b', 'a/a/a/a', 'a/a/a/a/a', 'x/y', 'z/z'];
nm(fixtures, '*', ['a', 'b', 'a/']);
nm(fixtures, '/*', ['/a', '/b', '/a/']);
nm(fixtures, '*/', ['a/']);
nm(fixtures, '/*/', ['/a/']);
nm(fixtures, '*/*', ['a/a', 'a/b', 'a/c', 'a/x', 'x/y', 'z/z']);
nm(fixtures, '*/*/*', ['a/a/a', 'a/a/b']);
nm(fixtures, '*/*/*/*', ['a/a/a/a']);
nm(fixtures, '*/*/*/*/*', ['a/a/a/a/a']);
nm(fixtures, 'a/*', ['a/a', 'a/b', 'a/c', 'a/x']);
nm(fixtures, 'a/*/*', ['a/a/a', 'a/a/b']);
nm(fixtures, 'a/*/*/*', ['a/a/a/a']);
nm(fixtures, 'a/*/*/*/*', ['a/a/a/a/a']);
nm(fixtures, 'a/*/a', ['a/a/a']);
nm(fixtures, 'a/*/b', ['a/a/b']);
});
it('should match one or more characters', function() {
var fixtures = ['a', 'aa', 'aaa', 'aaaa', 'ab', 'b', 'bb', 'c', 'cc', 'cac', 'a/a', 'a/b', 'a/c', 'a/x', 'a/a/a', 'a/a/b', 'a/a/a/a', 'a/a/a/a/a', 'x/y', 'z/z'];
nm(fixtures, '*', ['a', 'aa', 'aaa', 'aaaa', 'ab', 'b', 'bb', 'c', 'cc', 'cac']);
nm(fixtures, 'a*', ['a', 'aa', 'aaa', 'aaaa', 'ab']);
nm(fixtures, '*b', ['ab', 'b', 'bb']);
});
it('should match one or zero characters', function() {
var fixtures = ['a', 'aa', 'aaa', 'aaaa', 'ab', 'b', 'bb', 'c', 'cc', 'cac', 'a/a', 'a/b', 'a/c', 'a/x', 'a/a/a', 'a/a/b', 'a/a/a/a', 'a/a/a/a/a', 'x/y', 'z/z'];
nm(fixtures, '*', ['a', 'aa', 'aaa', 'aaaa', 'ab', 'b', 'bb', 'c', 'cc', 'cac']);
nm(fixtures, '*a*', ['a', 'aa', 'aaa', 'aaaa', 'ab', 'cac']);
nm(fixtures, '*b*', ['ab', 'b', 'bb']);
nm(fixtures, '*c*', ['c', 'cc', 'cac']);
});
it('should respect trailing slashes on paterns', function() {
var fixtures = ['a', 'a/', 'b', 'b/', 'a/a', 'a/a/', 'a/b', 'a/b/', 'a/c', 'a/c/', 'a/x', 'a/x/', 'a/a/a', 'a/a/b', 'a/a/b/', 'a/a/a/', 'a/a/a/a', 'a/a/a/a/', 'a/a/a/a/a', 'a/a/a/a/a/', 'x/y', 'z/z', 'x/y/', 'z/z/', 'a/b/c/.d/e/'];
nm(fixtures, '*/', ['a/', 'b/']);
nm(fixtures, '*/*/', ['a/a/', 'a/b/', 'a/c/', 'a/x/', 'x/y/', 'z/z/']);
nm(fixtures, '*/*/*/', ['a/a/a/', 'a/a/b/']);
nm(fixtures, '*/*/*/*/', ['a/a/a/a/']);
nm(fixtures, '*/*/*/*/*/', ['a/a/a/a/a/']);
nm(fixtures, 'a/*/', ['a/a/', 'a/b/', 'a/c/', 'a/x/']);
nm(fixtures, 'a/*/*/', ['a/a/a/', 'a/a/b/']);
nm(fixtures, 'a/*/*/*/', ['a/a/a/a/']);
nm(fixtures, 'a/*/*/*/*/', ['a/a/a/a/a/']);
nm(fixtures, 'a/*/a/', ['a/a/a/']);
nm(fixtures, 'a/*/b/', ['a/a/b/']);
});
it('should match a literal star when escaped', function() {
var fixtures = ['.md', 'a**a.md', '**a.md', '**/a.md', '**.md', '.md', '*', '**', '*.md'];
nm(fixtures, '\\*', ['*']);
nm(fixtures, '\\*.md', ['*.md']);
nm(fixtures, '\\**.md', ['**a.md', '**.md', '*.md']);
nm(fixtures, 'a\\**.md', ['a**a.md']);
});
it('should match leading `./`', function() {
var fixtures = ['a', './a', 'b', 'a/a', './a/b', 'a/c', './a/x', './a/a/a', 'a/a/b', './a/a/a/a', './a/a/a/a/a', 'x/y', './z/z'];
nm(fixtures, '*', ['a', 'b']);
nm(fixtures, '**/a/**', ['a/a', 'a/c', 'a/b', 'a/x', 'a/a/a', 'a/a/b', 'a/a/a/a', 'a/a/a/a/a']);
nm(fixtures, '*/*', ['a/a', 'a/b', 'a/c', 'a/x', 'x/y', 'z/z']);
nm(fixtures, '*/*/*', ['a/a/a', 'a/a/b']);
nm(fixtures, '*/*/*/*', ['a/a/a/a']);
nm(fixtures, '*/*/*/*/*', ['a/a/a/a/a']);
nm(fixtures, './*', ['a', 'b']);
nm(fixtures, './**/a/**', ['a/a', 'a/b', 'a/c', 'a/x', 'a/a/a', 'a/a/b', 'a/a/a/a', 'a/a/a/a/a']);
nm(fixtures, './a/*/a', ['a/a/a']);
nm(fixtures, 'a/*', ['a/a', 'a/b', 'a/c', 'a/x']);
nm(fixtures, 'a/*/*', ['a/a/a', 'a/a/b']);
nm(fixtures, 'a/*/*/*', ['a/a/a/a']);
nm(fixtures, 'a/*/*/*/*', ['a/a/a/a/a']);
nm(fixtures, 'a/*/a', ['a/a/a']);
});
});