@@ -31,6 +31,10 @@ assert.strictEqual(packResult.length, 1, 'Expected npm pack to produce exactly o
3131const tarballPath = path . join ( packageRoot , packResult [ 0 ] . filename ) ;
3232const testRoot = fs . mkdtempSync ( path . join ( os . tmpdir ( ) , 'python-environments-api-' ) ) ;
3333
34+ function canonicalPath ( value ) {
35+ return fs . realpathSync . native ( path . resolve ( value ) ) ;
36+ }
37+
3438try {
3539 fs . writeFileSync (
3640 path . join ( testRoot , 'package.json' ) ,
@@ -73,28 +77,50 @@ try {
7377 runNodeScript ( typescriptCli , [ '--project' , path . join ( consumerRoot , 'tsconfig.json' ) ] , packageRoot ) ;
7478 }
7579
80+ const installedPackageRoot = path . join ( testRoot , 'node_modules' , '@vscode' , 'python-environments' ) ;
81+ const installedPackageJson = JSON . parse ( fs . readFileSync ( path . join ( installedPackageRoot , 'package.json' ) , 'utf8' ) ) ;
82+ assert . strictEqual ( installedPackageJson . main , './out/cjs/main.cjs' ) ;
83+ assert . strictEqual ( installedPackageJson . types , './out/cjs/main.d.ts' ) ;
84+ assert . deepStrictEqual ( installedPackageJson . exports , {
85+ import : {
86+ types : './out/esm/main.d.ts' ,
87+ default : './out/esm/main.mjs' ,
88+ } ,
89+ require : {
90+ types : './out/cjs/main.d.ts' ,
91+ default : './out/cjs/main.cjs' ,
92+ } ,
93+ } ) ;
94+
95+ for ( const target of [
96+ installedPackageJson . main ,
97+ installedPackageJson . types ,
98+ installedPackageJson . exports . import . types ,
99+ installedPackageJson . exports . import . default ,
100+ installedPackageJson . exports . require . types ,
101+ installedPackageJson . exports . require . default ,
102+ ] ) {
103+ assert . ok ( fs . statSync ( path . resolve ( installedPackageRoot , target ) ) . isFile ( ) , `${ target } must be a file` ) ;
104+ }
105+
76106 const requireFromConsumer = createRequire ( path . join ( testRoot , 'legacy' , 'consumer.cjs' ) ) ;
77107 assert . strictEqual (
78- requireFromConsumer . resolve ( '@vscode/python-environments' ) ,
79- path . join ( testRoot , 'node_modules' , '@vscode' , 'python-environments' , 'out' , 'cjs' , 'main.cjs' ) ,
108+ canonicalPath ( requireFromConsumer . resolve ( '@vscode/python-environments' ) ) ,
109+ canonicalPath ( path . join ( installedPackageRoot , installedPackageJson . exports . require . default ) ) ,
80110 'CommonJS consumers should resolve the packaged CommonJS entry point' ,
81111 ) ;
82112
83113 const esmEntryPoint = execFileSync (
84114 process . execPath ,
85- [
86- '--input-type=module' ,
87- '--eval' ,
88- "console.log(import.meta.resolve('@vscode/python-environments'))" ,
89- ] ,
115+ [ '--input-type=module' , '--eval' , "console.log(import.meta.resolve('@vscode/python-environments'))" ] ,
90116 {
91117 cwd : path . join ( testRoot , 'modern' ) ,
92118 encoding : 'utf8' ,
93119 } ,
94120 ) . trim ( ) ;
95121 assert . strictEqual (
96- fileURLToPath ( esmEntryPoint ) ,
97- path . join ( testRoot , 'node_modules' , '@vscode' , 'python-environments' , 'out' , 'esm' , 'main.mjs' ) ,
122+ canonicalPath ( fileURLToPath ( esmEntryPoint ) ) ,
123+ canonicalPath ( path . join ( installedPackageRoot , installedPackageJson . exports . import . default ) ) ,
98124 'ES module consumers should resolve the packaged ES module entry point' ,
99125 ) ;
100126} finally {
0 commit comments