Skip to content

Commit 2adc557

Browse files
committed
feat: debug output to help diagnose why windows is being windows again
1 parent 3352675 commit 2adc557

1 file changed

Lines changed: 140 additions & 84 deletions

File tree

test/unit/quiet-test.js

Lines changed: 140 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -35,107 +35,163 @@ const Module = require('module')
3535
const originalRequire = Module.prototype.require
3636

3737
before(() => {
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

7287
after(() => {
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

78105
test('Set up env', () => {
79106
assert.ok(awsLite.testing.isEnabled(), 'AWS client testing enabled')
80107
})
81108

82109
test('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

107149
test('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

141197
test('deploy.sam with default (no quiet param) shows output', async () => {

0 commit comments

Comments
 (0)