11import assert from "node:assert/strict" ;
2- import { cpSync , existsSync } from "node:fs" ;
2+ import { cpSync , existsSync , writeFileSync } from "node:fs" ;
33import { basename , join , resolve } from "node:path" ;
44
55import {
@@ -23,15 +23,9 @@ if (tarballArgument !== -1 && !suppliedTarball) {
2323const lock = readJSON ( join ( ROOT , "package-lock.json" ) ) ;
2424const lockedOpenAIVersion = lock . packages [ "node_modules/openai" ] ?. version ;
2525assert . ok ( lockedOpenAIVersion , "package-lock.json must lock OpenAI" ) ;
26- for ( const fixture of [ "esm" , "commonjs" , "openai-host" ] ) {
27- const manifest = readJSON ( join ( ROOT , "fixtures" , fixture , "package.json" ) ) ;
28- assert . equal (
29- manifest . dependencies ?. openai ,
30- lockedOpenAIVersion ,
31- `${ fixture } must pin the locked OpenAI version` ,
32- ) ;
33- }
34-
26+ const supportedOpenAIRange = readJSON ( join ( ROOT , "package.json" ) ) . dependencies
27+ ?. openai ;
28+ assert . ok ( supportedOpenAIRange , "package.json must declare OpenAI support" ) ;
3529try {
3630 const tarball =
3731 ( suppliedTarball ? resolve ( ROOT , suppliedTarball ) : undefined ) ??
@@ -42,11 +36,31 @@ try {
4236 cpSync ( join ( ROOT , "fixtures" , fixture ) , fixtureDirectory , {
4337 recursive : true ,
4438 } ) ;
39+ const manifestPath = join ( fixtureDirectory , "package.json" ) ;
40+ const manifest = readJSON ( manifestPath ) ;
41+ assert . equal (
42+ manifest . dependencies ?. openai ,
43+ supportedOpenAIRange ,
44+ `${ fixture } must declare the supported OpenAI range before installation` ,
45+ ) ;
46+ manifest . dependencies . openai = lockedOpenAIVersion ;
47+ writeFileSync ( manifestPath , `${ JSON . stringify ( manifest , null , 2 ) } \n` ) ;
4548 run (
4649 "npm" ,
4750 [ "install" , "--ignore-scripts" , "--no-audit" , "--no-fund" , tarball ] ,
4851 { cwd : fixtureDirectory } ,
4952 ) ;
53+ const dependencyTree = JSON . parse (
54+ run ( "npm" , [ "ls" , "openai" , "--all" , "--json" ] , {
55+ capture : true ,
56+ cwd : fixtureDirectory ,
57+ } ) ,
58+ ) ;
59+ assert . equal (
60+ dependencyTree . dependencies ?. openai ?. version ,
61+ lockedOpenAIVersion ,
62+ `${ fixture } must install the locked OpenAI version` ,
63+ ) ;
5064
5165 if ( fixture === "openai-host" ) {
5266 const nestedOpenAI = join (
0 commit comments