@@ -35,107 +35,163 @@ const Module = require('module')
3535const originalRequire = Module . prototype . require
3636
3737before ( ( ) => {
38- awsLite . testing . enable ( )
39-
40- // Override require to inject mocks
41- Module . prototype . require = function ( id ) {
42- // Mock @aws -lite/client
43- if ( id === '@aws-lite/client' ) {
44- return function mockAwsLite ( ) {
45- return Promise . resolve ( {
46- cloudformation : {
47- DescribeStacks : ( ) => Promise . reject ( { message : 'Stack does not exist' , statusCode : 400 } ) ,
48- DescribeStackResources : ( ) => Promise . resolve ( { StackResources : [ ] } ) ,
49- } ,
50- s3 : {
51- HeadBucket : ( ) => Promise . resolve ( { statusCode : 200 } ) ,
52- ListBuckets : ( ) => Promise . resolve ( { Buckets : [ { Name : 'test-bucket' } ] } ) ,
53- PutObject : ( ) => Promise . resolve ( { ETag : '"mock-etag"' } ) ,
54- } ,
55- } )
38+ try {
39+ console . error ( '[DEBUG] Before hook starting' )
40+ console . error ( '[DEBUG] Platform:' , process . platform )
41+ console . error ( '[DEBUG] Node version:' , process . version )
42+
43+ awsLite . testing . enable ( )
44+ console . error ( '[DEBUG] AWS testing enabled' )
45+
46+ // Override require to inject mocks
47+ Module . prototype . require = function ( id ) {
48+ // Mock @aws -lite/client
49+ if ( id === '@aws-lite/client' ) {
50+ return function mockAwsLite ( ) {
51+ return Promise . resolve ( {
52+ cloudformation : {
53+ DescribeStacks : ( ) => Promise . reject ( { message : 'Stack does not exist' , statusCode : 400 } ) ,
54+ DescribeStackResources : ( ) => Promise . resolve ( { StackResources : [ ] } ) ,
55+ } ,
56+ s3 : {
57+ HeadBucket : ( ) => Promise . resolve ( { statusCode : 200 } ) ,
58+ ListBuckets : ( ) => Promise . resolve ( { Buckets : [ { Name : 'test-bucket' } ] } ) ,
59+ PutObject : ( ) => Promise . resolve ( { ETag : '"mock-etag"' } ) ,
60+ } ,
61+ } )
62+ }
5663 }
57- }
58- // Mock fs.writeFileSync to prevent sam.json creation
59- if ( id === 'fs' && this . filename && this . filename . includes ( 'sam/00-before' ) ) {
60- return {
61- ... originalRequire . apply ( this , [ 'fs' ] ) ,
62- writeFileSync : ( ) => { } , // No-op during tests
64+ // Mock fs.writeFileSync to prevent sam.json creation
65+ if ( id === 'fs' && this . filename && this . filename . includes ( 'sam/00-before' ) ) {
66+ return {
67+ ... originalRequire . apply ( this , [ 'fs' ] ) ,
68+ writeFileSync : ( ) => { } , // No-op during tests
69+ }
6370 }
71+ return originalRequire . apply ( this , arguments )
6472 }
65- return originalRequire . apply ( this , arguments )
66- }
73+ console . error ( '[DEBUG] Module.prototype.require mocked' )
6774
68- // Load deploy module with mocks in place
69- deploy = require ( '../../' )
75+ // Load deploy module with mocks in place
76+ deploy = require ( '../../' )
77+ console . error ( '[DEBUG] Deploy module loaded' )
78+ console . error ( '[DEBUG] Before hook completed' )
79+ }
80+ catch ( err ) {
81+ console . error ( '[DEBUG] Before hook failed:' , err . message )
82+ console . error ( '[DEBUG] Stack:' , err . stack )
83+ throw err
84+ }
7085} )
7186
7287after ( ( ) => {
73- Module . prototype . require = originalRequire
74- awsLite . testing . disable ( )
75- awsLite . testing . reset ( )
88+ try {
89+ console . error ( '[DEBUG] After hook starting' )
90+ Module . prototype . require = originalRequire
91+ console . error ( '[DEBUG] Module.prototype.require restored' )
92+ awsLite . testing . disable ( )
93+ console . error ( '[DEBUG] AWS testing disabled' )
94+ awsLite . testing . reset ( )
95+ console . error ( '[DEBUG] AWS testing reset' )
96+ console . error ( '[DEBUG] After hook completed' )
97+ }
98+ catch ( err ) {
99+ console . error ( '[DEBUG] After hook failed:' , err . message )
100+ console . error ( '[DEBUG] Stack:' , err . stack )
101+ throw err
102+ }
76103} )
77104
78105test ( 'Set up env' , ( ) => {
79106 assert . ok ( awsLite . testing . isEnabled ( ) , 'AWS client testing enabled' )
80107} )
81108
82109test ( 'deploy.sam with quiet=false shows output' , async ( ) => {
83- let inv = await inventory ( {
84- rawArc : '@app\ntest-app\n@static' ,
85- deployStage : 'staging' ,
86- } )
87-
88- captureOutput ( )
89-
90- await deploy . sam ( {
91- inventory : inv ,
92- isDryRun : true ,
93- region : 'us-west-2' ,
94- shouldHydrate : false ,
95- quiet : false , // Explicitly not quiet
96- } )
97-
98- restoreOutput ( )
99-
100- let outputCount = getOutputCount ( )
101- let outputContent = getOutputContent ( )
102-
103- assert . ok ( outputCount > 0 , `Non-quiet mode shows output (${ outputCount } messages)` )
104- assert . ok ( outputContent . includes ( 'Deploy' ) , `Output contains deploy messages: ${ outputContent . substring ( 0 , 100 ) } ...` )
110+ try {
111+ console . error ( '[DEBUG] Starting deploy.sam quiet=false test' )
112+ let inv = await inventory ( {
113+ rawArc : '@app\ntest-app\n@static' ,
114+ deployStage : 'staging' ,
115+ } )
116+ console . error ( '[DEBUG] Inventory created' )
117+
118+ captureOutput ( )
119+ console . error ( '[DEBUG] Output capture started' )
120+
121+ await deploy . sam ( {
122+ inventory : inv ,
123+ isDryRun : true ,
124+ region : 'us-west-2' ,
125+ shouldHydrate : false ,
126+ quiet : false , // Explicitly not quiet
127+ } )
128+ console . error ( '[DEBUG] deploy.sam completed' )
129+
130+ restoreOutput ( )
131+ console . error ( '[DEBUG] Output restored' )
132+
133+ let outputCount = getOutputCount ( )
134+ let outputContent = getOutputContent ( )
135+ console . error ( `[DEBUG] Output count: ${ outputCount } , content length: ${ outputContent . length } ` )
136+ console . error ( `[DEBUG] First 200 chars: ${ outputContent . substring ( 0 , 200 ) } ` )
137+
138+ assert . ok ( outputCount > 0 , `Non-quiet mode shows output (${ outputCount } messages)` )
139+ assert . ok ( outputContent . includes ( 'Deploy' ) , `Output contains deploy messages: ${ outputContent . substring ( 0 , 100 ) } ...` )
140+ console . error ( '[DEBUG] Test passed' )
141+ }
142+ catch ( err ) {
143+ console . error ( '[DEBUG] Test failed with error:' , err . message )
144+ console . error ( '[DEBUG] Stack:' , err . stack )
145+ throw err
146+ }
105147} )
106148
107149test ( 'deploy.sam with quiet=true suppresses updater output' , async ( ) => {
108- let inv = await inventory ( {
109- rawArc : '@app\ntest-app\n@static' ,
110- deployStage : 'staging' ,
111- } )
112-
113- // Test quiet=false (normal mode)
114- captureOutput ( )
115- await deploy . sam ( {
116- inventory : inv ,
117- isDryRun : true ,
118- region : 'us-west-2' ,
119- shouldHydrate : false ,
120- quiet : false ,
121- } )
122- restoreOutput ( )
123- let normalCount = getOutputCount ( )
124-
125- // Test quiet=true
126- captureOutput ( )
127- await deploy . sam ( {
128- inventory : inv ,
129- isDryRun : true ,
130- region : 'us-west-2' ,
131- shouldHydrate : false ,
132- quiet : true ,
133- } )
134- restoreOutput ( )
135- let quietCount = getOutputCount ( )
136-
137- assert . ok ( normalCount > 8 , `Normal mode has substantial output (${ normalCount } messages)` )
138- assert . ok ( quietCount < 3 , `Quiet mode suppresses most output (${ quietCount } messages, was ${ normalCount } )` )
150+ try {
151+ console . error ( '[DEBUG] Starting deploy.sam quiet comparison test' )
152+ let inv = await inventory ( {
153+ rawArc : '@app\ntest-app\n@static' ,
154+ deployStage : 'staging' ,
155+ } )
156+ console . error ( '[DEBUG] Inventory created' )
157+
158+ // Test quiet=false (normal mode)
159+ console . error ( '[DEBUG] Testing quiet=false' )
160+ captureOutput ( )
161+ await deploy . sam ( {
162+ inventory : inv ,
163+ isDryRun : true ,
164+ region : 'us-west-2' ,
165+ shouldHydrate : false ,
166+ quiet : false ,
167+ } )
168+ restoreOutput ( )
169+ let normalCount = getOutputCount ( )
170+ console . error ( `[DEBUG] Normal mode output count: ${ normalCount } ` )
171+
172+ // Test quiet=true
173+ console . error ( '[DEBUG] Testing quiet=true' )
174+ captureOutput ( )
175+ await deploy . sam ( {
176+ inventory : inv ,
177+ isDryRun : true ,
178+ region : 'us-west-2' ,
179+ shouldHydrate : false ,
180+ quiet : true ,
181+ } )
182+ restoreOutput ( )
183+ let quietCount = getOutputCount ( )
184+ console . error ( `[DEBUG] Quiet mode output count: ${ quietCount } ` )
185+
186+ assert . ok ( normalCount > 8 , `Normal mode has substantial output (${ normalCount } messages)` )
187+ assert . ok ( quietCount < 3 , `Quiet mode suppresses most output (${ quietCount } messages, was ${ normalCount } )` )
188+ console . error ( '[DEBUG] Test passed' )
189+ }
190+ catch ( err ) {
191+ console . error ( '[DEBUG] Test failed with error:' , err . message )
192+ console . error ( '[DEBUG] Stack:' , err . stack )
193+ throw err
194+ }
139195} )
140196
141197test ( 'deploy.sam with default (no quiet param) shows output' , async ( ) => {
0 commit comments