@@ -4,6 +4,7 @@ import path from 'node:path'
44import { execa } from 'execa'
55import { afterEach , describe , expect , it } from 'vitest'
66import { getPackedWorkspacePackages } from './helpers/packed-workspace-packages.js'
7+ import { withWorkspaceIntegrationLock } from './helpers/workspace-build-lock.js'
78
89const packagedArrowLibraries = [
910 '@arrow-js/core' ,
@@ -30,105 +31,107 @@ describe('packaged Arrow exports', () => {
3031 const packDir = path . resolve ( workspace , 'packs' )
3132 const consumerDir = path . resolve ( workspace , 'consumer' )
3233
33- await fs . mkdir ( packDir , { recursive : true } )
34- await fs . mkdir ( consumerDir , { recursive : true } )
35- const tarballs = await getPackedWorkspacePackages (
36- packagedArrowLibraries ,
37- packDir
38- )
34+ await withWorkspaceIntegrationLock ( async ( ) => {
35+ await fs . mkdir ( packDir , { recursive : true } )
36+ await fs . mkdir ( consumerDir , { recursive : true } )
37+ const tarballs = await getPackedWorkspacePackages (
38+ packagedArrowLibraries ,
39+ packDir
40+ )
3941
40- await fs . writeFile (
41- path . resolve ( consumerDir , 'package.json' ) ,
42- `${ JSON . stringify ( {
43- name : 'arrow-package-smoke' ,
44- private : true ,
45- type : 'module' ,
46- dependencies : Object . fromEntries (
47- packagedArrowLibraries . map ( ( packageName ) => [
48- packageName ,
49- `file:${ normalizePath ( tarballs [ packageName ] ) } ` ,
50- ] )
51- ) ,
52- pnpm : {
53- overrides : Object . fromEntries (
42+ await fs . writeFile (
43+ path . resolve ( consumerDir , 'package.json' ) ,
44+ `${ JSON . stringify ( {
45+ name : 'arrow-package-smoke' ,
46+ private : true ,
47+ type : 'module' ,
48+ dependencies : Object . fromEntries (
5449 packagedArrowLibraries . map ( ( packageName ) => [
5550 packageName ,
5651 `file:${ normalizePath ( tarballs [ packageName ] ) } ` ,
5752 ] )
5853 ) ,
59- } ,
60- } , null , 2 ) } \n`
61- )
54+ pnpm : {
55+ overrides : Object . fromEntries (
56+ packagedArrowLibraries . map ( ( packageName ) => [
57+ packageName ,
58+ `file:${ normalizePath ( tarballs [ packageName ] ) } ` ,
59+ ] )
60+ ) ,
61+ } ,
62+ } , null , 2 ) } \n`
63+ )
6264
63- await execa ( 'pnpm' , [ 'install' , '--prefer-offline' ] , {
64- cwd : consumerDir ,
65- } )
65+ await execa ( 'pnpm' , [ 'install' , '--prefer-offline' ] , {
66+ cwd : consumerDir ,
67+ } )
6668
67- const verifyScriptPath = path . resolve ( consumerDir , 'verify.mjs' )
68- await fs . writeFile (
69- verifyScriptPath ,
70- [
71- "const [{ component, html }] = await Promise.all([" ,
72- " import('@arrow-js/core')," ,
73- " import('@arrow-js/core/internal')," ,
74- " import('@arrow-js/framework')," ,
75- " import('@arrow-js/framework/internal')," ,
76- " import('@arrow-js/framework/ssr')," ,
77- " import('@arrow-js/ssr')," ,
78- " import('@arrow-js/hydrate')," ,
79- " import('@arrow-js/highlight')," ,
80- '])' ,
81- 'component(async () => html`<p>ok</p>`)' ,
82- "console.log('imports ok')" ,
83- '' ,
84- ] . join ( '\n' )
85- )
69+ const verifyScriptPath = path . resolve ( consumerDir , 'verify.mjs' )
70+ await fs . writeFile (
71+ verifyScriptPath ,
72+ [
73+ "const [{ component, html }] = await Promise.all([" ,
74+ " import('@arrow-js/core')," ,
75+ " import('@arrow-js/core/internal')," ,
76+ " import('@arrow-js/framework')," ,
77+ " import('@arrow-js/framework/internal')," ,
78+ " import('@arrow-js/framework/ssr')," ,
79+ " import('@arrow-js/ssr')," ,
80+ " import('@arrow-js/hydrate')," ,
81+ " import('@arrow-js/highlight')," ,
82+ '])' ,
83+ 'component(async () => html`<p>ok</p>`)' ,
84+ "console.log('imports ok')" ,
85+ '' ,
86+ ] . join ( '\n' )
87+ )
8688
87- const { stdout } = await execa ( 'node' , [ verifyScriptPath ] , {
88- cwd : consumerDir ,
89- } )
89+ const { stdout } = await execa ( 'node' , [ verifyScriptPath ] , {
90+ cwd : consumerDir ,
91+ } )
9092
91- const frameworkPackage = JSON . parse (
92- await fs . readFile (
93- path . resolve ( consumerDir , 'node_modules/@arrow-js/framework/package.json' ) ,
94- 'utf8'
93+ const frameworkPackage = JSON . parse (
94+ await fs . readFile (
95+ path . resolve ( consumerDir , 'node_modules/@arrow-js/framework/package.json' ) ,
96+ 'utf8'
97+ )
9598 )
96- )
97- const corePackage = JSON . parse (
98- await fs . readFile (
99- path . resolve ( consumerDir , 'node_modules/@arrow-js/core/package.json' ) ,
100- 'utf8'
99+ const corePackage = JSON . parse (
100+ await fs . readFile (
101+ path . resolve ( consumerDir , 'node_modules/@arrow-js/core/package.json' ) ,
102+ 'utf8'
103+ )
101104 )
102- )
103- const ssrPackage = JSON . parse (
104- await fs . readFile (
105- path . resolve ( consumerDir , 'node_modules/@arrow-js/ssr/package.json' ) ,
106- 'utf8'
105+ const ssrPackage = JSON . parse (
106+ await fs . readFile (
107+ path . resolve ( consumerDir , 'node_modules/@arrow-js/ssr/package.json' ) ,
108+ 'utf8'
109+ )
107110 )
108- )
109- const hydratePackage = JSON . parse (
110- await fs . readFile (
111- path . resolve ( consumerDir , 'node_modules/@arrow-js/hydrate/package.json' ) ,
112- 'utf8'
111+ const hydratePackage = JSON . parse (
112+ await fs . readFile (
113+ path . resolve ( consumerDir , 'node_modules/@arrow-js/hydrate/package.json' ) ,
114+ 'utf8'
115+ )
113116 )
114- )
115- const highlightPackage = JSON . parse (
116- await fs . readFile (
117- path . resolve ( consumerDir , 'node_modules/@arrow-js/highlight/package.json' ) ,
118- 'utf8'
117+ const highlightPackage = JSON . parse (
118+ await fs . readFile (
119+ path . resolve ( consumerDir , 'node_modules/@arrow-js/highlight/package.json' ) ,
120+ 'utf8'
121+ )
119122 )
120- )
121123
122- expect ( stdout ) . toContain ( 'imports ok' )
123- expect ( corePackage . exports [ './internal' ] . import ) . toBe ( './dist/internal.mjs' )
124- expect ( frameworkPackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
125- expect ( frameworkPackage . exports [ './internal' ] . import ) . toBe ( './dist/internal.mjs' )
126- expect ( frameworkPackage . exports [ './ssr' ] . import ) . toBe ( './dist/ssr.mjs' )
127- expect ( ssrPackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
128- expect ( hydratePackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
129- expect ( highlightPackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
124+ expect ( stdout ) . toContain ( 'imports ok' )
125+ expect ( corePackage . exports [ './internal' ] . import ) . toBe ( './dist/internal.mjs' )
126+ expect ( frameworkPackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
127+ expect ( frameworkPackage . exports [ './internal' ] . import ) . toBe ( './dist/internal.mjs' )
128+ expect ( frameworkPackage . exports [ './ssr' ] . import ) . toBe ( './dist/ssr.mjs' )
129+ expect ( ssrPackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
130+ expect ( hydratePackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
131+ expect ( highlightPackage . exports [ '.' ] . import ) . toBe ( './dist/index.mjs' )
132+ } )
130133 } ,
131- 90_000
134+ 150_000
132135 )
133136} )
134137
0 commit comments