1
1
const minimist = require ( `minimist` ) ;
2
2
const path = require ( `path` ) ;
3
- const shell = require ( `shelljs` ) ;
3
+ const mockShell = jest . requireActual ( `shelljs` ) ;
4
4
const { mockShellFn } = require ( path . join ( process . cwd ( ) , `mocks/shelljs.mocks` ) ) ;
5
5
const pickBy = require ( `lodash/pickBy` ) ;
6
6
const keys = require ( `lodash/keys` ) ;
@@ -10,6 +10,22 @@ const map = require(`lodash/map`);
10
10
const TEST_SUITE = `npm-pack-all: ${ __filename } ` ;
11
11
const TMP_DIR = path . join ( process . cwd ( ) , ".npm-pack-all-tmp" ) ;
12
12
13
+ beforeEach ( ( ) => {
14
+ // mock shell commands
15
+ jest . mock ( `shelljs` , ( ) => {
16
+ return {
17
+ code : 0 , // success always
18
+ config : { fatal : false , silent : false } ,
19
+ exec : mockShellFn ( `exec` ) ,
20
+ cp : mockShellFn ( `cp` ) ,
21
+ mv : mockShellFn ( `mv` ) ,
22
+ rm : mockShellFn ( `rm` ) ,
23
+ mkdir : mockShellFn ( `mkdir` ) ,
24
+ touch : mockShellFn ( `touch` )
25
+ } ;
26
+ } ) ;
27
+ } ) ;
28
+
13
29
beforeAll ( ( ) => {
14
30
console . error = jest . fn ( ) ;
15
31
} ) ;
@@ -21,7 +37,7 @@ afterEach(() => {
21
37
afterEach ( ( ) => {
22
38
jest . resetAllMocks ( ) ;
23
39
jest . clearAllMocks ( ) ;
24
- shell . rm ( `-Rf` , `*.tgz` ) ; // call this after post mock restore
40
+ mockShell . rm ( `-Rf` , `*.tgz` ) ; // call this after post mock restore
25
41
} ) ;
26
42
27
43
afterAll ( ( ) => {
@@ -47,20 +63,6 @@ describe(TEST_SUITE, () => {
47
63
} ;
48
64
} ) ;
49
65
50
- // mock shell commands
51
- jest . mock ( `shelljs` , ( ) => {
52
- return {
53
- code : 0 , // success always
54
- config : { fatal : false , silent : false } ,
55
- exec : mockShellFn ( `exec` ) ,
56
- cp : mockShellFn ( `cp` ) ,
57
- mv : mockShellFn ( `mv` ) ,
58
- rm : mockShellFn ( `rm` ) ,
59
- mkdir : mockShellFn ( `mkdir` ) ,
60
- touch : mockShellFn ( `touch` )
61
- } ;
62
- } ) ;
63
-
64
66
// mock spawn
65
67
jest . mock ( `child_process` , ( ) => {
66
68
function on ( eventType , callback ) {
@@ -128,24 +130,11 @@ describe(TEST_SUITE, () => {
128
130
} ;
129
131
} ) ;
130
132
131
- // mock shell commands
132
- jest . mock ( `shelljs` , ( ) => {
133
- return {
134
- code : 0 , // success always
135
- config : { fatal : false , silent : false } ,
136
- cp : mockShellFn ( `cp` ) ,
137
- mv : mockShellFn ( `mv` ) ,
138
- rm : mockShellFn ( `rm` ) ,
139
- mkdir : mockShellFn ( `mkdir` ) ,
140
- touch : mockShellFn ( `touch` )
141
- } ;
142
- } ) ;
143
-
144
133
// call script
145
134
require ( `../index` ) ;
146
135
} ) ;
147
136
148
- test ( "Does output to --output flag location" , ( ) => {
137
+ function outputTest ( ) {
149
138
const outputLoc = `deploy/artifact.tgz` ;
150
139
let mockArgs = `--output ${ outputLoc } ` ;
151
140
mockArgs = minimist ( mockArgs . split ( ` ` ) ) ;
@@ -172,20 +161,6 @@ describe(TEST_SUITE, () => {
172
161
} ;
173
162
} ) ;
174
163
175
- // mock shell commands
176
- jest . mock ( `shelljs` , ( ) => {
177
- return {
178
- code : 0 , // success always
179
- config : { fatal : false , silent : false } ,
180
- exec : mockShellFn ( `exec` ) ,
181
- cp : mockShellFn ( `cp` ) ,
182
- mv : mockShellFn ( `mv` ) ,
183
- rm : mockShellFn ( `rm` ) ,
184
- mkdir : mockShellFn ( `mkdir` ) ,
185
- touch : mockShellFn ( `touch` )
186
- } ;
187
- } ) ;
188
-
189
164
// have access to the mock shell
190
165
const mockShell = require ( `shelljs` ) ;
191
166
@@ -196,6 +171,10 @@ describe(TEST_SUITE, () => {
196
171
const packageJsonLoc = require ( `path` ) . join ( process . cwd ( ) , `package.json` ) ;
197
172
const packageJson = require ( packageJsonLoc ) ;
198
173
174
+ const packageParse = path . posix . parse ( packageJson . name ) ;
175
+ const scopedPrefix = packageParse . dir ? `${ packageParse . dir } -` . replace ( "@" , "" ) : "" ;
176
+ const packageName = `${ scopedPrefix } ${ packageParse . name } -${ packageJson . version } .tgz` ;
177
+
199
178
// these commands should be run in the following order by default
200
179
expect ( orderedArgs ) . toEqual ( [
201
180
`rm("-Rf","${ TMP_DIR } ")` ,
@@ -210,31 +189,22 @@ describe(TEST_SUITE, () => {
210
189
`mv("-f","${ TMP_DIR } /.npmignore","${ path . join ( process . cwd ( ) , ".npmignore" ) } ")` ,
211
190
`rm("-Rf","${ TMP_DIR } ")` ,
212
191
`mkdir("-p","${ path . join ( process . cwd ( ) , "deploy" ) } ")` ,
213
- `mv("-f","${ path . join ( process . cwd ( ) , `${ packageJson . name } -${ packageJson . version } .tgz` ) } ","${ path . join (
214
- process . cwd ( ) ,
215
- outputLoc
216
- ) } ")`
192
+ `mv("-f","${ path . join ( process . cwd ( ) , `${ packageName } ` ) } ","${ path . join ( process . cwd ( ) , outputLoc ) } ")`
217
193
] ) ;
194
+ }
195
+ test ( "Does output to --output flag location" , outputTest ) ;
196
+ test ( "Scoped package does output to --output flag location" , ( ) => {
197
+ jest . mock ( "../package.json" , ( ) => {
198
+ const actualPackageJson = jest . requireActual ( "../package.json" ) ;
199
+ return Object . assign ( actualPackageJson , { name : `@scoped/${ actualPackageJson . name } ` } ) ;
200
+ } ) ;
201
+ outputTest ( ) ;
218
202
} ) ;
219
203
220
204
test ( "Return .npmignore to proper state" , ( ) => {
221
205
const fs = jest . requireActual ( `fs` ) ;
222
206
const npmIgnoreContent = fs . existsSync ( `.npmignore` ) && fs . readFileSync ( `.npmignore` ) ;
223
207
224
- // mock shell commands
225
- jest . mock ( `shelljs` , ( ) => {
226
- return {
227
- code : 0 , // success always
228
- config : { fatal : false , silent : false } ,
229
- exec : mockShellFn ( `exec` ) ,
230
- cp : mockShellFn ( `cp` ) ,
231
- mv : mockShellFn ( `mv` ) ,
232
- rm : mockShellFn ( `rm` ) ,
233
- mkdir : mockShellFn ( `mkdir` ) ,
234
- touch : mockShellFn ( `touch` )
235
- } ;
236
- } ) ;
237
-
238
208
// call script
239
209
require ( `../index` ) ;
240
210
0 commit comments