@@ -80,6 +80,35 @@ t.test('starting out with a reset lockfile is an empty lockfile', t =>
8080 t . equal ( sw . filename , resolve ( fixture , 'package-lock.json' ) )
8181 } ) )
8282
83+ t . test ( 'reset in a bad dir gets an empty lockfile with no lockfile version' , async t => {
84+ const nullLockDir = t . testdir ( {
85+ 'package-lock.json' : JSON . stringify ( null ) ,
86+ } )
87+
88+ const [ swMissingLock , swNullLock ] = await Promise . all ( [
89+ Shrinkwrap . reset ( { path : 'path/which/does/not/exist' } ) ,
90+ Shrinkwrap . reset ( { path : nullLockDir } ) ,
91+ ] )
92+
93+ t . strictSame ( swMissingLock . data , {
94+ lockfileVersion : 2 ,
95+ requires : true ,
96+ dependencies : { } ,
97+ packages : { } ,
98+ } )
99+ t . equal ( swMissingLock . lockfileVersion , null )
100+ t . equal ( swMissingLock . loadedFromDisk , false )
101+
102+ t . strictSame ( swNullLock . data , {
103+ lockfileVersion : 2 ,
104+ requires : true ,
105+ dependencies : { } ,
106+ packages : { } ,
107+ } )
108+ t . equal ( swNullLock . lockfileVersion , null )
109+ t . equal ( swNullLock . loadedFromDisk , true )
110+ } )
111+
83112t . test ( 'loading in bad dir gets empty lockfile' , t =>
84113 Shrinkwrap . load ( { path : 'path/which/does/not/exist' } ) . then ( sw => {
85114 t . strictSame ( sw . data , {
@@ -1509,37 +1538,43 @@ t.test('setting lockfileVersion from the file contents', async t => {
15091538 'package-lock.json' : JSON . stringify ( { lockfileVersion : 3 } ) ,
15101539 } ,
15111540 } )
1541+
1542+ const loadAndReset = ( options ) => Promise . all ( [
1543+ Shrinkwrap . load ( options ) . then ( ( s ) => s . lockfileVersion ) ,
1544+ Shrinkwrap . reset ( options ) . then ( ( s ) => s . lockfileVersion ) ,
1545+ ] )
1546+
15121547 t . test ( 'default setting' , async t => {
1513- const s1 = await Shrinkwrap . load ( { path : `${ path } /v1` } )
1514- t . equal ( s1 . lockfileVersion , 2 , 'will upgrade old lockfile' )
1515- const s2 = await Shrinkwrap . load ( { path : `${ path } /v2` } )
1516- t . equal ( s2 . lockfileVersion , 2 , 'will keep v2 as v2' )
1517- const s3 = await Shrinkwrap . load ( { path : `${ path } /v3` } )
1518- t . equal ( s3 . lockfileVersion , 3 , ' will keep v3 as v3')
1548+ const s1 = await loadAndReset ( { path : `${ path } /v1` } )
1549+ t . strictSame ( s1 , [ 2 , null ] , 'will upgrade old lockfile' )
1550+ const s2 = await loadAndReset ( { path : `${ path } /v2` } )
1551+ t . strictSame ( s2 , [ 2 , null ] , 'will keep v2 as v2' )
1552+ const s3 = await loadAndReset ( { path : `${ path } /v3` } )
1553+ t . strictSame ( s3 , [ 3 , 3 ] , 'load will keep v3 as v3')
15191554 } )
15201555 t . test ( 'v1' , async t => {
1521- const s1 = await Shrinkwrap . load ( { path : `${ path } /v1` , lockfileVersion : 1 } )
1522- t . equal ( s1 . lockfileVersion , 1 , 'keep explicit v1 setting' )
1523- const s2 = await Shrinkwrap . load ( { path : `${ path } /v2` , lockfileVersion : 1 } )
1524- t . equal ( s2 . lockfileVersion , 1 , 'downgrade explicitly' )
1525- const s3 = await Shrinkwrap . load ( { path : `${ path } /v3` , lockfileVersion : 1 } )
1526- t . equal ( s3 . lockfileVersion , 1 , 'downgrade explicitly' )
1556+ const s1 = await loadAndReset ( { path : `${ path } /v1` , lockfileVersion : 1 } )
1557+ t . strictSame ( s1 , [ 1 , 1 ] , 'keep explicit v1 setting' )
1558+ const s2 = await loadAndReset ( { path : `${ path } /v2` , lockfileVersion : 1 } )
1559+ t . strictSame ( s2 , [ 1 , 1 ] , 'downgrade explicitly' )
1560+ const s3 = await loadAndReset ( { path : `${ path } /v3` , lockfileVersion : 1 } )
1561+ t . strictSame ( s3 , [ 1 , 1 ] , 'downgrade explicitly' )
15271562 } )
15281563 t . test ( 'v2' , async t => {
1529- const s1 = await Shrinkwrap . load ( { path : `${ path } /v1` , lockfileVersion : 2 } )
1530- t . equal ( s1 . lockfileVersion , 2 , 'upgrade explicitly' )
1531- const s2 = await Shrinkwrap . load ( { path : `${ path } /v2` , lockfileVersion : 2 } )
1532- t . equal ( s2 . lockfileVersion , 2 , 'keep v2 setting' )
1533- const s3 = await Shrinkwrap . load ( { path : `${ path } /v3` , lockfileVersion : 2 } )
1534- t . equal ( s3 . lockfileVersion , 2 , 'downgrade explicitly' )
1564+ const s1 = await loadAndReset ( { path : `${ path } /v1` , lockfileVersion : 2 } )
1565+ t . strictSame ( s1 , [ 2 , 2 ] , 'upgrade explicitly' )
1566+ const s2 = await loadAndReset ( { path : `${ path } /v2` , lockfileVersion : 2 } )
1567+ t . strictSame ( s2 , [ 2 , 2 ] , 'keep v2 setting' )
1568+ const s3 = await loadAndReset ( { path : `${ path } /v3` , lockfileVersion : 2 } )
1569+ t . strictSame ( s3 , [ 2 , 2 ] , 'downgrade explicitly' )
15351570 } )
15361571 t . test ( 'v3' , async t => {
1537- const s1 = await Shrinkwrap . load ( { path : `${ path } /v1` , lockfileVersion : 3 } )
1538- t . equal ( s1 . lockfileVersion , 3 , 'upgrade explicitly' )
1539- const s2 = await Shrinkwrap . load ( { path : `${ path } /v2` , lockfileVersion : 3 } )
1540- t . equal ( s2 . lockfileVersion , 3 , 'upgrade explicitly' )
1541- const s3 = await Shrinkwrap . load ( { path : `${ path } /v3` , lockfileVersion : 3 } )
1542- t . equal ( s3 . lockfileVersion , 3 , 'keep v3 setting' )
1572+ const s1 = await loadAndReset ( { path : `${ path } /v1` , lockfileVersion : 3 } )
1573+ t . strictSame ( s1 , [ 3 , 3 ] , 'upgrade explicitly' )
1574+ const s2 = await loadAndReset ( { path : `${ path } /v2` , lockfileVersion : 3 } )
1575+ t . strictSame ( s2 , [ 3 , 3 ] , 'upgrade explicitly' )
1576+ const s3 = await loadAndReset ( { path : `${ path } /v3` , lockfileVersion : 3 } )
1577+ t . strictSame ( s3 , [ 3 , 3 ] , 'keep v3 setting' )
15431578 } )
15441579
15451580 t . equal ( Shrinkwrap . defaultLockfileVersion , 2 , 'default is 2' )
0 commit comments