@@ -6,6 +6,7 @@ const binLinks = require('bin-links')
66const MockRegistry = require ( '@npmcli/mock-registry' )
77const justExtend = require ( 'just-extend' )
88const set = require ( 'just-safe-set' )
9+ const crypto = require ( 'node:crypto' )
910
1011const merge = ( ...args ) => justExtend ( true , ...args )
1112
@@ -118,35 +119,19 @@ const createTestdir = (...objs) => {
118119 return testdirHelper ( merge ( ...objs ) )
119120}
120121
121- const mockNpxInventoryCache = ( packageName , fakeVersion ) => {
122- const Arborist = require ( '@npmcli/arborist' )
123- const originalLoadActual = Arborist . prototype . loadActual
124-
125- Arborist . prototype . loadActual = async function ( ) {
126- const tree = await originalLoadActual . call ( this )
127- if ( this . path . includes ( 'npxCache' ) ) {
128- const originalQuery = tree . inventory . query . bind ( tree . inventory )
129- tree . inventory . query = ( key , name ) => {
130- if ( key === 'packageName' && name === packageName ) {
131- return [ {
132- package : {
133- version : fakeVersion ,
134- name : packageName ,
135- resolved : 'dummy-resolved' ,
136- } ,
137- pkgid : `${ packageName } @${ fakeVersion } ` ,
138- depth : 0 ,
139- } ]
140- }
141- return originalQuery ( key , name )
142- }
143- }
144- return tree
145- }
146-
147- return ( ) => {
148- Arborist . prototype . loadActual = originalLoadActual
122+ const setupNpxInventory = async ( basePath , name , version , packageSpec ) => {
123+ const npxCachePath = resolve ( basePath , 'npxCache' )
124+ const hash = crypto . createHash ( 'sha512' )
125+ . update ( packageSpec )
126+ . digest ( 'hex' )
127+ . slice ( 0 , 16 )
128+ const installDir = resolve ( npxCachePath , hash )
129+ await fs . mkdir ( installDir , { recursive : true } )
130+ const cachedPkg = {
131+ name,
132+ version,
149133 }
134+ await fs . writeFile ( resolve ( installDir , 'package.json' ) , JSON . stringify ( cachedPkg , null , 2 ) )
150135}
151136
152137const setup = ( t , {
@@ -285,4 +270,4 @@ const setup = (t, {
285270module . exports . setup = setup
286271module . exports . createPkg = createPkg
287272module . exports . merge = merge
288- module . exports . mockNpxInventoryCache = mockNpxInventoryCache
273+ module . exports . setupNpxInventory = setupNpxInventory
0 commit comments