@@ -25,8 +25,8 @@ const files = [
25
25
26
26
// Mocks get hoisted
27
27
jest . mock ( '../src/resolveGitDir.js' )
28
- const workDir = path . join ( os . tmpdir ( ) , 'tmp-lint-staged' )
29
- resolveGitDir . mockResolvedValue ( workDir )
28
+ const gitDir = path . join ( os . tmpdir ( ) , 'tmp-lint-staged' )
29
+ resolveGitDir . mockResolvedValue ( gitDir )
30
30
31
31
const config = {
32
32
'*.js' : 'root-js' ,
@@ -39,29 +39,29 @@ const config = {
39
39
40
40
describe ( 'generateTasks' , ( ) => {
41
41
beforeAll ( ( ) => {
42
- jest . spyOn ( process , 'cwd' ) . mockReturnValue ( workDir )
42
+ jest . spyOn ( process , 'cwd' ) . mockReturnValue ( gitDir )
43
43
} )
44
44
45
45
afterAll ( ( ) => {
46
46
process . cwd . mockRestore ( )
47
47
} )
48
48
49
49
it ( 'should return absolute paths' , async ( ) => {
50
- const [ task ] = await generateTasks (
51
- {
50
+ const [ task ] = await generateTasks ( {
51
+ config : {
52
52
'*' : 'lint'
53
53
} ,
54
- workDir ,
54
+ gitDir ,
55
55
files
56
- )
56
+ } )
57
57
task . fileList . forEach ( file => {
58
58
expect ( path . isAbsolute ( file ) ) . toBe ( true )
59
59
} )
60
60
} )
61
61
62
62
it ( 'should not match non-children files' , async ( ) => {
63
63
const relPath = path . join ( process . cwd ( ) , '..' )
64
- const result = await generateTasks ( { ... config } , relPath , files )
64
+ const result = await generateTasks ( { config, gitDir : relPath , files } )
65
65
const linter = result . find ( item => item . pattern === '*.js' )
66
66
expect ( linter ) . toEqual ( {
67
67
pattern : '*.js' ,
@@ -71,7 +71,7 @@ describe('generateTasks', () => {
71
71
} )
72
72
73
73
it ( 'should return an empty file list for linters with no matches.' , async ( ) => {
74
- const result = await generateTasks ( config , workDir , files )
74
+ const result = await generateTasks ( { config, gitDir , files } )
75
75
76
76
result . forEach ( task => {
77
77
if ( task . commands === 'unknown-js' ) {
@@ -83,74 +83,95 @@ describe('generateTasks', () => {
83
83
} )
84
84
85
85
it ( 'should match pattern "*.js"' , async ( ) => {
86
- const result = await generateTasks ( config , workDir , files )
86
+ const result = await generateTasks ( { config, gitDir , files } )
87
87
const linter = result . find ( item => item . pattern === '*.js' )
88
88
expect ( linter ) . toEqual ( {
89
89
pattern : '*.js' ,
90
90
commands : 'root-js' ,
91
91
fileList : [
92
- `${ workDir } /test.js` ,
93
- `${ workDir } /deeper/test.js` ,
94
- `${ workDir } /deeper/test2.js` ,
95
- `${ workDir } /even/deeper/test.js` ,
96
- `${ workDir } /.hidden/test.js`
92
+ `${ gitDir } /test.js` ,
93
+ `${ gitDir } /deeper/test.js` ,
94
+ `${ gitDir } /deeper/test2.js` ,
95
+ `${ gitDir } /even/deeper/test.js` ,
96
+ `${ gitDir } /.hidden/test.js`
97
97
] . map ( path . normalize )
98
98
} )
99
99
} )
100
100
101
101
it ( 'should match pattern "**/*.js"' , async ( ) => {
102
- const result = await generateTasks ( config , workDir , files )
102
+ const result = await generateTasks ( { config, gitDir , files } )
103
103
const linter = result . find ( item => item . pattern === '**/*.js' )
104
104
expect ( linter ) . toEqual ( {
105
105
pattern : '**/*.js' ,
106
106
commands : 'any-js' ,
107
107
fileList : [
108
- `${ workDir } /test.js` ,
109
- `${ workDir } /deeper/test.js` ,
110
- `${ workDir } /deeper/test2.js` ,
111
- `${ workDir } /even/deeper/test.js` ,
112
- `${ workDir } /.hidden/test.js`
108
+ `${ gitDir } /test.js` ,
109
+ `${ gitDir } /deeper/test.js` ,
110
+ `${ gitDir } /deeper/test2.js` ,
111
+ `${ gitDir } /even/deeper/test.js` ,
112
+ `${ gitDir } /.hidden/test.js`
113
113
] . map ( path . normalize )
114
114
} )
115
115
} )
116
116
117
117
it ( 'should match pattern "deeper/*.js"' , async ( ) => {
118
- const result = await generateTasks ( config , workDir , files )
118
+ const result = await generateTasks ( { config, gitDir , files } )
119
119
const linter = result . find ( item => item . pattern === 'deeper/*.js' )
120
120
expect ( linter ) . toEqual ( {
121
121
pattern : 'deeper/*.js' ,
122
122
commands : 'deeper-js' ,
123
- fileList : [ `${ workDir } /deeper/test.js` , `${ workDir } /deeper/test2.js` ] . map ( path . normalize )
123
+ fileList : [ `${ gitDir } /deeper/test.js` , `${ gitDir } /deeper/test2.js` ] . map ( path . normalize )
124
124
} )
125
125
} )
126
126
127
127
it ( 'should match pattern ".hidden/*.js"' , async ( ) => {
128
- const result = await generateTasks ( config , workDir , files )
128
+ const result = await generateTasks ( { config, gitDir , files } )
129
129
const linter = result . find ( item => item . pattern === '.hidden/*.js' )
130
130
expect ( linter ) . toEqual ( {
131
131
pattern : '.hidden/*.js' ,
132
132
commands : 'hidden-js' ,
133
- fileList : [ path . normalize ( `${ workDir } /.hidden/test.js` ) ]
133
+ fileList : [ path . normalize ( `${ gitDir } /.hidden/test.js` ) ]
134
134
} )
135
135
} )
136
136
137
137
it ( 'should match pattern "*.{css,js}"' , async ( ) => {
138
- const result = await generateTasks ( config , workDir , files )
138
+ const result = await generateTasks ( { config, gitDir, files } )
139
+ const linter = result . find ( item => item . pattern === '*.{css,js}' )
140
+ expect ( linter ) . toEqual ( {
141
+ pattern : '*.{css,js}' ,
142
+ commands : 'root-css-or-js' ,
143
+ fileList : [
144
+ `${ gitDir } /test.js` ,
145
+ `${ gitDir } /deeper/test.js` ,
146
+ `${ gitDir } /deeper/test2.js` ,
147
+ `${ gitDir } /even/deeper/test.js` ,
148
+ `${ gitDir } /.hidden/test.js` ,
149
+ `${ gitDir } /test.css` ,
150
+ `${ gitDir } /deeper/test.css` ,
151
+ `${ gitDir } /deeper/test2.css` ,
152
+ `${ gitDir } /even/deeper/test.css` ,
153
+ `${ gitDir } /.hidden/test.css`
154
+ ] . map ( path . normalize )
155
+ } )
156
+ } )
157
+
158
+ it ( 'should be able to return relative paths for "*.{css,js}"' , async ( ) => {
159
+ const result = await generateTasks ( { config, gitDir, files, relative : true } )
139
160
const linter = result . find ( item => item . pattern === '*.{css,js}' )
140
161
expect ( linter ) . toEqual ( {
141
162
pattern : '*.{css,js}' ,
142
163
commands : 'root-css-or-js' ,
143
164
fileList : [
144
- ` ${ workDir } / test.js` ,
145
- ` ${ workDir } / deeper/test.js` ,
146
- ` ${ workDir } / deeper/test2.js` ,
147
- ` ${ workDir } / even/deeper/test.js` ,
148
- ` ${ workDir } / .hidden/test.js` ,
149
- ` ${ workDir } / test.css` ,
150
- ` ${ workDir } / deeper/test.css` ,
151
- ` ${ workDir } / deeper/test2.css` ,
152
- ` ${ workDir } / even/deeper/test.css` ,
153
- ` ${ workDir } / .hidden/test.css`
165
+ ' test.js' ,
166
+ ' deeper/test.js' ,
167
+ ' deeper/test2.js' ,
168
+ ' even/deeper/test.js' ,
169
+ ' .hidden/test.js' ,
170
+ ' test.css' ,
171
+ ' deeper/test.css' ,
172
+ ' deeper/test2.css' ,
173
+ ' even/deeper/test.css' ,
174
+ ' .hidden/test.css'
154
175
] . map ( path . normalize )
155
176
} )
156
177
} )
0 commit comments