1- const { test, after } = require ( 'node:test' )
1+ const { test } = require ( 'node:test' )
22const assert = require ( 'node:assert/strict' )
3- const { join } = require ( 'path' )
3+ const { join, dirname } = require ( 'path' )
44const { mkdtempSync, mkdirSync, writeFileSync, rmSync } = require ( 'fs' )
55const { tmpdir } = require ( 'os' )
66const inventory = require ( '@architect/inventory' )
77const { updater } = require ( '@architect/utils' )
88
9- let tmpDirs = [ ]
10-
119function createTmpDir ( structure ) {
1210 const tmpDir = mkdtempSync ( join ( tmpdir ( ) , 'arc-test-' ) )
13- tmpDirs . push ( tmpDir )
14- const { dirname } = require ( 'path' )
1511
1612 function createStructure ( base , obj ) {
1713 for ( const [ key , value ] of Object . entries ( obj ) ) {
@@ -33,16 +29,14 @@ function createTmpDir (structure) {
3329 return tmpDir
3430}
3531
36- after ( ( ) => {
37- tmpDirs . forEach ( dir => {
38- try {
39- rmSync ( dir , { recursive : true , force : true } )
40- }
41- catch {
42- // Ignore cleanup errors
43- }
44- } )
45- } )
32+ function cleanupTmpDir ( dir ) {
33+ try {
34+ rmSync ( dir , { recursive : true , force : true } )
35+ }
36+ catch {
37+ // Ignore cleanup errors
38+ }
39+ }
4640
4741let published
4842function publish ( params , callback ) {
@@ -105,99 +99,139 @@ test('Set up env', () => {
10599 assert . ok ( staticDeployMod , 'Static asset deployment module is present' )
106100} )
107101
108- test ( `Skip static deploy if @static isn't defined` , ( t , done ) => {
102+ test ( `Skip static deploy if @static isn't defined` , async ( ) => {
109103 setup ( )
110104 let arc = '@app\n an-app'
111105 let cwd = createTmpDir ( { 'app.arc' : arc } )
112- staticDeploy ( cwd , err => {
113- if ( err ) assert . fail ( err )
114- assert . ok ( ! published , 'Publish not called' )
115- done ( )
106+ await new Promise ( ( resolve , reject ) => {
107+ staticDeploy ( cwd , err => {
108+ cleanupTmpDir ( cwd )
109+ if ( err ) reject ( err )
110+ else {
111+ assert . ok ( ! published , 'Publish not called' )
112+ resolve ( )
113+ }
114+ } )
116115 } )
117116} )
118117
119- test ( `Static deploy exits gracefully if @http is defined, but public/ folder is not present` , ( t , done ) => {
118+ test ( `Static deploy exits gracefully if @http is defined, but public/ folder is not present` , async ( ) => {
120119 setup ( )
121120 let arc = '@app\n an-app\n @http'
122121 let cwd = createTmpDir ( { 'app.arc' : arc } )
123- staticDeploy ( cwd , err => {
124- if ( err ) assert . fail ( err )
125- assert . ok ( ! published , 'Publish not called' )
126- done ( )
122+ await new Promise ( ( resolve , reject ) => {
123+ staticDeploy ( cwd , err => {
124+ cleanupTmpDir ( cwd )
125+ if ( err ) reject ( err )
126+ else {
127+ assert . ok ( ! published , 'Publish not called' )
128+ resolve ( )
129+ }
130+ } )
127131 } )
128132} )
129133
130- test ( `Publish static deploy if @static is defined` , ( t , done ) => {
134+ test ( `Publish static deploy if @static is defined` , async ( ) => {
131135 setup ( )
132136 let arc = '@app\n an-app\n @static'
133137 let cwd = createTmpDir ( {
134138 'app.arc' : arc ,
135139 'public' : { } ,
136140 } )
137- staticDeploy ( cwd , err => {
138- if ( err ) assert . fail ( err )
139- assert . strictEqual ( published . Bucket , params . bucket , 'Bucket is unchanged' )
140- assert . strictEqual ( published . prefix , null , 'Prefix set to null by default' )
141- assert . strictEqual ( published . prune , null , 'Prune set to null by default' )
142- assert . strictEqual ( published . region , params . region , 'Region is unchaged' )
143- done ( )
141+ await new Promise ( ( resolve , reject ) => {
142+ staticDeploy ( cwd , err => {
143+ cleanupTmpDir ( cwd )
144+ if ( err ) reject ( err )
145+ else {
146+ assert . strictEqual ( published . Bucket , params . bucket , 'Bucket is unchanged' )
147+ assert . strictEqual ( published . prefix , null , 'Prefix set to null by default' )
148+ assert . strictEqual ( published . prune , null , 'Prune set to null by default' )
149+ assert . strictEqual ( published . region , params . region , 'Region is unchaged' )
150+ resolve ( )
151+ }
152+ } )
144153 } )
145154} )
146155
147- test ( `Publish static deploy if @http is defined and public/ folder is present` , ( t , done ) => {
156+ test ( `Publish static deploy if @http is defined and public/ folder is present` , async ( ) => {
148157 setup ( )
149158 let arc = '@app\n an-app\n @http'
150159 let cwd = createTmpDir ( { 'app.arc' : arc , 'public' : { } } )
151- staticDeploy ( cwd , err => {
152- if ( err ) assert . fail ( err )
153- assert . ok ( published , 'Publish was called' )
154- done ( )
160+ await new Promise ( ( resolve , reject ) => {
161+ staticDeploy ( cwd , err => {
162+ cleanupTmpDir ( cwd )
163+ if ( err ) reject ( err )
164+ else {
165+ assert . ok ( published , 'Publish was called' )
166+ resolve ( )
167+ }
168+ } )
155169 } )
156170} )
157171
158- test ( `Respect prune param` , ( t , done ) => {
172+ test ( `Respect prune param` , async ( ) => {
159173 setup ( )
160174 let arc = '@app\n an-app\n @static'
161175 let cwd = createTmpDir ( { 'app.arc' : arc , 'public' : { } } )
162176 params . prune = true
163- staticDeploy ( cwd , err => {
164- if ( err ) assert . fail ( err )
165- assert . ok ( published . prune , 'Prune is unchaged' )
166- done ( )
177+ await new Promise ( ( resolve , reject ) => {
178+ staticDeploy ( cwd , err => {
179+ cleanupTmpDir ( cwd )
180+ if ( err ) reject ( err )
181+ else {
182+ assert . ok ( published . prune , 'Prune is unchaged' )
183+ resolve ( )
184+ }
185+ } )
167186 } )
168187} )
169188
170- test ( `Respect prune setting in project manifest` , ( t , done ) => {
189+ test ( `Respect prune setting in project manifest` , async ( ) => {
171190 setup ( )
172191 let arc = '@app\n an-app\n @static\n prune true'
173192 let cwd = createTmpDir ( { 'app.arc' : arc , 'public' : { } } )
174- staticDeploy ( cwd , err => {
175- if ( err ) assert . fail ( err )
176- assert . ok ( published . prune , 'Prune is enabled' )
177- done ( )
193+ await new Promise ( ( resolve , reject ) => {
194+ staticDeploy ( cwd , err => {
195+ cleanupTmpDir ( cwd )
196+ if ( err ) reject ( err )
197+ else {
198+ assert . ok ( published . prune , 'Prune is enabled' )
199+ resolve ( )
200+ }
201+ } )
178202 } )
179203} )
180204
181- test ( `Respect prefix param` , ( t , done ) => {
205+ test ( `Respect prefix param` , async ( ) => {
182206 setup ( )
183207 let arc = '@app\n an-app\n @static'
184208 let cwd = createTmpDir ( { 'app.arc' : arc , 'public' : { } } )
185209 params . prefix = 'some-prefix'
186- staticDeploy ( cwd , err => {
187- if ( err ) assert . fail ( err )
188- assert . strictEqual ( published . prefix , 'some-prefix' , 'Prefix is unchanged' )
189- done ( )
210+ await new Promise ( ( resolve , reject ) => {
211+ staticDeploy ( cwd , err => {
212+ cleanupTmpDir ( cwd )
213+ if ( err ) reject ( err )
214+ else {
215+ assert . strictEqual ( published . prefix , 'some-prefix' , 'Prefix is unchanged' )
216+ resolve ( )
217+ }
218+ } )
190219 } )
191220} )
192221
193- test ( `Respect prefix setting in project manifest` , ( t , done ) => {
222+ test ( `Respect prefix setting in project manifest` , async ( ) => {
194223 setup ( )
195224 let arc = '@app\n an-app\n @static\n prefix some-prefix'
196225 let cwd = createTmpDir ( { 'app.arc' : arc , 'public' : { } } )
197- staticDeploy ( cwd , err => {
198- if ( err ) assert . fail ( err )
199- assert . strictEqual ( published . prefix , 'some-prefix' , 'Got correct prefix setting' )
200- done ( )
226+ await new Promise ( ( resolve , reject ) => {
227+ staticDeploy ( cwd , err => {
228+ cleanupTmpDir ( cwd )
229+ if ( err ) reject ( err )
230+ else {
231+ assert . strictEqual ( published . prefix , 'some-prefix' , 'Got correct prefix setting' )
232+ resolve ( )
233+ }
234+ } )
201235 } )
202236} )
203237
0 commit comments