@@ -5,25 +5,87 @@ import * as helpers from './helpers';
55
66describe ( 'source maps' , ( ) => {
77 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+ }
2613 } ) ;
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 ) ;
2789 } ) ;
2890 } ) ;
2991} ) ;
0 commit comments