Skip to content

Commit f36fd55

Browse files
owlstronautzkat
authored andcommitted
chore(arborist): Adds test for shrinkwrap ideallyInert nodes
1 parent ff84233 commit f36fd55

File tree

7 files changed

+157
-78
lines changed

7 files changed

+157
-78
lines changed

workspaces/arborist/lib/shrinkwrap.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ const assertNoNewer = async (path, data, lockTime, dir, seen) => {
144144
let entries
145145
if (dir === path) {
146146
entries = [{ name: 'node_modules', isDirectory: () => true }]
147-
} else if (!inert) {
147+
} else {
148148
const { mtime: dirTime } = await stat(dir)
149149
if (dirTime > lockTime) {
150150
throw new Error(`out of date, updated: ${rel}`)

workspaces/arborist/tap-snapshots/test/shrinkwrap.js.test.cjs

+97-76
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,29 @@ Object {
654654
}
655655
`
656656

657+
exports[`test/shrinkwrap.js TAP load a hidden lockfile with ideallyInert > must match snapshot 1`] = `
658+
Object {
659+
"dependencies": Object {},
660+
"lockfileVersion": 3,
661+
"name": "hidden-lockfile",
662+
"packages": Object {
663+
"": Object {
664+
"dependencies": Object {
665+
"abbrev": "^1.1.1",
666+
},
667+
},
668+
"node_modules/abbrev": Object {
669+
"ideallyInert": true,
670+
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
671+
"name": "abbrev",
672+
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
673+
"version": "1.1.1",
674+
},
675+
},
676+
"requires": true,
677+
}
678+
`
679+
657680
exports[`test/shrinkwrap.js TAP load a legacy shrinkwrap without a package.json > did our best with what we had 1`] = `
658681
Object {
659682
"dependencies": Object {
@@ -2644,82 +2667,80 @@ Object {
26442667
}
26452668
`
26462669

2647-
<<<<<<< Conflict 1 of 1
2648-
%%%%%%% Changes from base to side #1
2649-
exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 1`] = `
2650-
Object {
2651-
"lockfileVersion": 3,
2652-
"name": "selflink",
2653-
"packages": Object {
2654-
"": Object {
2655-
"dependencies": Object {
2656-
"@scope/x": "",
2657-
"@scope/y": "",
2658-
"foo": "",
2659-
},
2660-
"name": "selflink",
2661-
"version": "1.2.3",
2662-
},
2663-
"node_modules/@scope/y": Object {
2664-
"dependencies": Object {
2665-
"foo": "*",
2666-
},
2667-
"version": "1.2.3",
2668-
},
2669-
"node_modules/@scope/z": Object {
2670-
"dependencies": Object {
2671-
"glob": "4",
2672-
},
2673-
"extraneous": true,
2674-
"version": "1.2.3",
2675-
},
2676-
"node_modules/@scope/z/node_modules/glob": Object {
2677-
"link": true,
2678-
"resolved": "node_modules/foo/node_modules/glob",
2679-
},
2680-
"node_modules/foo": Object {
2681-
"dependencies": Object {
2682-
"glob": "4",
2683-
"selflink": "*",
2684-
},
2685-
"version": "1.2.3",
2686-
},
2687-
"node_modules/foo/node_modules/glob": Object {
2688-
"version": "4.0.5",
2689-
},
2690-
"node_modules/foo/node_modules/glob/node_modules/graceful-fs": Object {
2691-
"extraneous": true,
2692-
"version": "3.0.2",
2693-
},
2694-
"node_modules/foo/node_modules/glob/node_modules/inherits": Object {
2695-
"extraneous": true,
2696-
"version": "2.0.1",
2697-
},
2698-
"node_modules/foo/node_modules/glob/node_modules/minimatch": Object {
2699-
"extraneous": true,
2700-
"version": "1.0.0",
2701-
},
2702-
"node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache": Object {
2703-
"extraneous": true,
2704-
"version": "2.5.0",
2705-
},
2706-
"node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund": Object {
2707-
"extraneous": true,
2708-
"version": "1.0.0",
2709-
},
2710-
"node_modules/foo/node_modules/glob/node_modules/once": Object {
2711-
"extraneous": true,
2712-
"version": "1.3.0",
2713-
},
2714-
"node_modules/foo/node_modules/selflink": Object {
2715-
"link": true,
2716-
"resolved": "",
2717-
},
2718-
},
2719-
"requires": true,
2720-
"version": "1.2.3",
2721-
}
2722-
`
2670+
exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 1`] = `
2671+
Object {
2672+
"lockfileVersion": 3,
2673+
"name": "selflink",
2674+
"packages": Object {
2675+
"": Object {
2676+
"dependencies": Object {
2677+
"@scope/x": "",
2678+
"@scope/y": "",
2679+
"foo": "",
2680+
},
2681+
"name": "selflink",
2682+
"version": "1.2.3",
2683+
},
2684+
"node_modules/@scope/y": Object {
2685+
"dependencies": Object {
2686+
"foo": "*",
2687+
},
2688+
"version": "1.2.3",
2689+
},
2690+
"node_modules/@scope/z": Object {
2691+
"dependencies": Object {
2692+
"glob": "4",
2693+
},
2694+
"extraneous": true,
2695+
"version": "1.2.3",
2696+
},
2697+
"node_modules/@scope/z/node_modules/glob": Object {
2698+
"link": true,
2699+
"resolved": "node_modules/foo/node_modules/glob",
2700+
},
2701+
"node_modules/foo": Object {
2702+
"dependencies": Object {
2703+
"glob": "4",
2704+
"selflink": "*",
2705+
},
2706+
"version": "1.2.3",
2707+
},
2708+
"node_modules/foo/node_modules/glob": Object {
2709+
"version": "4.0.5",
2710+
},
2711+
"node_modules/foo/node_modules/glob/node_modules/graceful-fs": Object {
2712+
"extraneous": true,
2713+
"version": "3.0.2",
2714+
},
2715+
"node_modules/foo/node_modules/glob/node_modules/inherits": Object {
2716+
"extraneous": true,
2717+
"version": "2.0.1",
2718+
},
2719+
"node_modules/foo/node_modules/glob/node_modules/minimatch": Object {
2720+
"extraneous": true,
2721+
"version": "1.0.0",
2722+
},
2723+
"node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/lru-cache": Object {
2724+
"extraneous": true,
2725+
"version": "2.5.0",
2726+
},
2727+
"node_modules/foo/node_modules/glob/node_modules/minimatch/node_modules/sigmund": Object {
2728+
"extraneous": true,
2729+
"version": "1.0.0",
2730+
},
2731+
"node_modules/foo/node_modules/glob/node_modules/once": Object {
2732+
"extraneous": true,
2733+
"version": "1.3.0",
2734+
},
2735+
"node_modules/foo/node_modules/selflink": Object {
2736+
"link": true,
2737+
"resolved": "",
2738+
},
2739+
},
2740+
"requires": true,
2741+
"version": "1.2.3",
2742+
}
2743+
`
27232744

27242745
exports[`test/shrinkwrap.js TAP loadActual tests selflink > shrinkwrap data 2`] = `
27252746
Object {

workspaces/arborist/test/arborist/reify.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -2592,7 +2592,10 @@ t.test('adding an unresolvable optional dep is OK', async t => {
25922592
})
25932593
createRegistry(t, true)
25942594
const tree = await reify(path, { add: ['abbrev'] })
2595-
t.strictSame([...tree.children.values()], [], 'nothing actually added')
2595+
const children = [...tree.children.values()]
2596+
t.equal(children.length, 1, 'optional unresolved dep node added')
2597+
t.ok(children[0].ideallyInert, 'node is ideally inert')
2598+
t.throws(() => fs.statSync(path + '/node_modules/abbrev'), { code: 'ENOENT' }, 'optional dependency should not exist on disk')
25962599
t.matchSnapshot(printTree(tree))
25972600
})
25982601

workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/.package-lock.json

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

workspaces/arborist/test/fixtures/hidden-lockfile-inert/node_modules/abbrev/package.json

+21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"dependencies": {
3+
"abbrev": "^1.1.1"
4+
}
5+
}

workspaces/arborist/test/shrinkwrap.js

+10
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ const emptyFixture = resolve(__dirname, 'fixtures/empty')
1919
const depTypesFixture = resolve(__dirname, 'fixtures/dev-deps')
2020
const badJsonFixture = resolve(__dirname, 'fixtures/testing-peer-deps-bad-sw')
2121
const hiddenLockfileFixture = resolve(__dirname, 'fixtures/hidden-lockfile')
22+
const hiddenIdeallyInertLockfileFixture = resolve(__dirname, 'fixtures/hidden-lockfile-inert')
2223
const hidden = 'node_modules/.package-lock.json'
2324
const saxFixture = resolve(__dirname, 'fixtures/sax')
2425

@@ -864,6 +865,15 @@ t.test('load a hidden lockfile', async t => {
864865
t.equal(data.dependencies, undefined, 'deleted legacy metadata')
865866
})
866867

868+
t.test('load a hidden lockfile with ideallyInert', async t => {
869+
fs.utimesSync(resolve(hiddenIdeallyInertLockfileFixture, hidden), new Date(), new Date())
870+
const s = await Shrinkwrap.load({
871+
path: hiddenIdeallyInertLockfileFixture,
872+
hiddenLockfile: true,
873+
})
874+
t.matchSnapshot(s.data)
875+
})
876+
867877
t.test('load a fresh hidden lockfile', async t => {
868878
const sw = await Shrinkwrap.reset({
869879
path: hiddenLockfileFixture,

0 commit comments

Comments
 (0)