@@ -5,25 +5,87 @@ import * as helpers from './helpers';
5
5
6
6
describe ( 'source maps' , ( ) => {
7
7
describe ( 'purgeSourceMapsIfNeeded' , ( ) => {
8
- it ( 'should return a promise call unlink on all files with a .map extensin' , ( ) => {
9
- // arrange
10
- let env : any = { } ;
11
- env [ Constants . ENV_VAR_GENERATE_SOURCE_MAP ] = null ;
12
- process . env = env ;
13
- const buildDir = '/some/fake/build/dir' ;
14
- const context = { buildDir : buildDir } ;
15
-
16
- spyOn ( helpers , helpers . readDirAsync . name ) . and . returnValue ( Promise . resolve ( [ 'test.js' , 'test.js.map' , 'test2.js' , 'test2.js.map' ] ) ) ;
17
- const unlinkSpy = spyOn ( helpers , helpers . unlinkAsync . name ) . and . returnValue ( Promise . resolve ( ) ) ;
18
-
19
- // act
20
- const resultPromise = sourceMaps . purgeSourceMapsIfNeeded ( context ) ;
21
-
22
- // assert
23
- return resultPromise . then ( ( ) => {
24
- expect ( unlinkSpy . calls . argsFor ( 0 ) [ 0 ] ) . toEqual ( join ( buildDir , 'test.js.map' ) ) ;
25
- expect ( unlinkSpy . calls . argsFor ( 1 ) [ 0 ] ) . toEqual ( join ( buildDir , 'test2.js.map' ) ) ;
8
+ it ( 'should copy files first, then purge the files' , async ( ) => {
9
+ spyOn ( helpers , helpers . getBooleanPropertyValue . name ) . and . callFake ( ( argument : string ) => {
10
+ if ( argument === Constants . ENV_VAR_MOVE_SOURCE_MAPS ) {
11
+ return true ;
12
+ }
26
13
} ) ;
14
+
15
+ spyOn ( helpers , helpers . mkDirpAsync . name ) . and . returnValue ( Promise . resolve ( ) ) ;
16
+
17
+ const knownFileNames = [ '0.js' , '0.js.map' , '1.js' , '1.js.map' , 'main.js' , 'main.js.map' , 'vendor.js' , 'vendor.js.map' , 'main.css' , 'polyfills.js' , 'sw-toolbox.js' , 'main.css' , 'main.css.map' ] ;
18
+
19
+ spyOn ( helpers , helpers . readDirAsync . name ) . and . returnValue ( Promise . resolve ( knownFileNames ) ) ;
20
+
21
+ const context = {
22
+ sourcemapDir : join ( process . cwd ( ) , 'sourceMapDir' ) ,
23
+ buildDir : join ( process . cwd ( ) , 'www' , 'build' )
24
+ } ;
25
+
26
+ const copyFileSpy = spyOn ( helpers , helpers . copyFileAsync . name ) . and . returnValue ( Promise . resolve ( ) ) ;
27
+ const unlinkFileSpy = spyOn ( helpers , helpers . unlinkAsync . name ) . and . returnValue ( Promise . resolve ( ) ) ;
28
+
29
+ const result = await sourceMaps . copySourcemaps ( context , true ) ;
30
+ expect ( helpers . mkDirpAsync ) . toHaveBeenCalledTimes ( 1 ) ;
31
+ expect ( helpers . mkDirpAsync ) . toHaveBeenCalledWith ( context . sourcemapDir ) ;
32
+
33
+ expect ( helpers . readDirAsync ) . toHaveBeenCalledTimes ( 1 ) ;
34
+ expect ( helpers . readDirAsync ) . toHaveBeenLastCalledWith ( context . buildDir ) ;
35
+
36
+ expect ( helpers . copyFileAsync ) . toHaveBeenCalledTimes ( 3 ) ;
37
+ expect ( copyFileSpy . calls . all ( ) [ 0 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , '0.js.map' ) ) ;
38
+ expect ( copyFileSpy . calls . all ( ) [ 0 ] . args [ 1 ] ) . toEqual ( join ( context . sourcemapDir , '0.js.map' ) ) ;
39
+ expect ( copyFileSpy . calls . all ( ) [ 1 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , '1.js.map' ) ) ;
40
+ expect ( copyFileSpy . calls . all ( ) [ 1 ] . args [ 1 ] ) . toEqual ( join ( context . sourcemapDir , '1.js.map' ) ) ;
41
+ expect ( copyFileSpy . calls . all ( ) [ 2 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , 'main.js.map' ) ) ;
42
+ expect ( copyFileSpy . calls . all ( ) [ 2 ] . args [ 1 ] ) . toEqual ( join ( context . sourcemapDir , 'main.js.map' ) ) ;
43
+
44
+ expect ( helpers . unlinkAsync ) . toHaveBeenCalledTimes ( 5 ) ;
45
+ expect ( unlinkFileSpy . calls . all ( ) [ 0 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , '0.js.map' ) ) ;
46
+ expect ( unlinkFileSpy . calls . all ( ) [ 1 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , '1.js.map' ) ) ;
47
+ expect ( unlinkFileSpy . calls . all ( ) [ 2 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , 'main.js.map' ) ) ;
48
+ expect ( unlinkFileSpy . calls . all ( ) [ 3 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , 'vendor.js.map' ) ) ;
49
+ expect ( unlinkFileSpy . calls . all ( ) [ 4 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , 'main.css.map' ) ) ;
50
+ } ) ;
51
+
52
+ it ( 'should copy the files but not purge them after' , async ( ) => {
53
+ spyOn ( helpers , helpers . getBooleanPropertyValue . name ) . and . callFake ( ( argument : string ) => {
54
+ if ( argument === Constants . ENV_VAR_MOVE_SOURCE_MAPS ) {
55
+ return true ;
56
+ }
57
+ } ) ;
58
+
59
+ spyOn ( helpers , helpers . mkDirpAsync . name ) . and . returnValue ( Promise . resolve ( ) ) ;
60
+
61
+ const knownFileNames = [ '0.js' , '0.js.map' , '1.js' , '1.js.map' , 'main.js' , 'main.js.map' , 'vendor.js' , 'vendor.js.map' , 'main.css' , 'polyfills.js' , 'sw-toolbox.js' , 'main.css' , 'main.css.map' ] ;
62
+
63
+ spyOn ( helpers , helpers . readDirAsync . name ) . and . returnValue ( Promise . resolve ( knownFileNames ) ) ;
64
+
65
+ const context = {
66
+ sourcemapDir : join ( process . cwd ( ) , 'sourceMapDir' ) ,
67
+ buildDir : join ( process . cwd ( ) , 'www' , 'build' )
68
+ } ;
69
+
70
+ const copyFileSpy = spyOn ( helpers , helpers . copyFileAsync . name ) . and . returnValue ( Promise . resolve ( ) ) ;
71
+ const unlinkFileSpy = spyOn ( helpers , helpers . unlinkAsync . name ) . and . returnValue ( Promise . resolve ( ) ) ;
72
+
73
+ const result = await sourceMaps . copySourcemaps ( context , false ) ;
74
+ expect ( helpers . mkDirpAsync ) . toHaveBeenCalledTimes ( 1 ) ;
75
+ expect ( helpers . mkDirpAsync ) . toHaveBeenCalledWith ( context . sourcemapDir ) ;
76
+
77
+ expect ( helpers . readDirAsync ) . toHaveBeenCalledTimes ( 1 ) ;
78
+ expect ( helpers . readDirAsync ) . toHaveBeenLastCalledWith ( context . buildDir ) ;
79
+
80
+ expect ( helpers . copyFileAsync ) . toHaveBeenCalledTimes ( 3 ) ;
81
+ expect ( copyFileSpy . calls . all ( ) [ 0 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , '0.js.map' ) ) ;
82
+ expect ( copyFileSpy . calls . all ( ) [ 0 ] . args [ 1 ] ) . toEqual ( join ( context . sourcemapDir , '0.js.map' ) ) ;
83
+ expect ( copyFileSpy . calls . all ( ) [ 1 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , '1.js.map' ) ) ;
84
+ expect ( copyFileSpy . calls . all ( ) [ 1 ] . args [ 1 ] ) . toEqual ( join ( context . sourcemapDir , '1.js.map' ) ) ;
85
+ expect ( copyFileSpy . calls . all ( ) [ 2 ] . args [ 0 ] ) . toEqual ( join ( context . buildDir , 'main.js.map' ) ) ;
86
+ expect ( copyFileSpy . calls . all ( ) [ 2 ] . args [ 1 ] ) . toEqual ( join ( context . sourcemapDir , 'main.js.map' ) ) ;
87
+
88
+ expect ( helpers . unlinkAsync ) . toHaveBeenCalledTimes ( 0 ) ;
27
89
} ) ;
28
90
} ) ;
29
91
} ) ;
0 commit comments