Skip to content

Commit 65f32a0

Browse files
committed
More error logging
1 parent a2e01db commit 65f32a0

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

src/test/package.test.ts

+34-7
Original file line numberDiff line numberDiff line change
@@ -89,33 +89,60 @@ function createManifest(extra: Partial<ManifestPackage> = {}): ManifestPackage {
8989
};
9090
}
9191

92+
const PROCESS_ERROR_MESSAGE = 'PROCESS ERROR';
9293
async function testPrintAndValidatePackagedFiles(files: IFile[], cwd: string, manifest: ManifestPackage, options: IPackageOptions, errorExpected: boolean, warningExpected: boolean): Promise<void> {
9394
const originalLogError = log.error;
9495
const originalLogWarn = log.warn;
9596
const originalProcessExit = process.exit;
9697
const warns: string[] = [];
9798
const errors: string[] = [];
99+
let exited = false;
100+
let errorThrown: string | undefined;
98101
log.error = (message: string) => errors.push(message);
99102
log.warn = (message: string) => warns.push(message);
100-
process.exit = (() => { throw Error('Error'); }) as () => never;
103+
process.exit = (() => { exited = true; throw Error(PROCESS_ERROR_MESSAGE); }) as () => never;
101104

102-
let exitedOrErrorThrown = false;
103105
try {
104106
await printAndValidatePackagedFiles(files, cwd, manifest, options);
105-
} catch (e) {
106-
exitedOrErrorThrown = true;
107+
} catch (e: any) {
108+
if (e instanceof Error && e.message !== PROCESS_ERROR_MESSAGE) {
109+
errorThrown = e.message + '\n' + e.stack;
110+
}
107111
} finally {
108112
process.exit = originalProcessExit;
109113
log.error = originalLogError;
110114
log.warn = originalLogWarn;
111115
}
112116

113-
if (errorExpected !== !!errors.length || exitedOrErrorThrown !== errorExpected) {
114-
throw new Error(errors.length ? errors.join('\n') : 'Expected error');
117+
// Validate that the correct number of errors and warnings were thrown
118+
const messages = [];
119+
120+
if (errorExpected !== !!errors.length) {
121+
if (errors.length) {
122+
messages.push(...errors);
123+
} else {
124+
messages.push('Expected an error');
125+
}
115126
}
116127

117128
if (warningExpected !== !!warns.length) {
118-
throw new Error(warns.length ? warns.join('\n') : 'Expected warning');
129+
if (warns.length) {
130+
messages.push(...warns);
131+
} else {
132+
messages.push('Expected a warning');
133+
}
134+
}
135+
136+
if (!errorExpected && exited) {
137+
messages.push('Process exited');
138+
}
139+
140+
if (!errorExpected && !!errorThrown && !exited) {
141+
messages.push('Error thrown: ' + errorThrown);
142+
}
143+
144+
if (messages.length) {
145+
throw new Error(messages.join('\n'));
119146
}
120147
}
121148

0 commit comments

Comments
 (0)