1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 22:58:07 +02:00

Merge pull request #18401 from timvandermeij/test-orphaned-browsers

Fix orphaned browser processes due to uncaught exceptions in the tests
This commit is contained in:
Tim van der Meij 2024-07-06 15:43:26 +02:00 committed by GitHub
commit fe692435d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -970,8 +970,6 @@ async function startBrowsers({ baseUrl, initializeSession }) {
await puppeteer.trimCache();
const browserNames = options.noChrome ? ["firefox"] : ["firefox", "chrome"];
sessions = [];
for (const browserName of browserNames) {
// The session must be pushed first and augmented with the browser once
// it's initialized. The reason for this is that browser initialization
@ -1078,25 +1076,33 @@ async function main() {
stats = [];
}
if (options.downloadOnly) {
await ensurePDFsDownloaded();
} else if (options.unitTest) {
// Allows linked PDF files in unit-tests as well.
await ensurePDFsDownloaded();
startUnitTest("/test/unit/unit_test.html", "unit");
} else if (options.fontTest) {
startUnitTest("/test/font/font_test.html", "font");
} else if (options.integration) {
// Allows linked PDF files in integration-tests as well.
await ensurePDFsDownloaded();
startIntegrationTest();
} else {
startRefTest(options.masterMode, options.reftest);
try {
if (options.downloadOnly) {
await ensurePDFsDownloaded();
} else if (options.unitTest) {
// Allows linked PDF files in unit-tests as well.
await ensurePDFsDownloaded();
await startUnitTest("/test/unit/unit_test.html", "unit");
} else if (options.fontTest) {
await startUnitTest("/test/font/font_test.html", "font");
} else if (options.integration) {
// Allows linked PDF files in integration-tests as well.
await ensurePDFsDownloaded();
await startIntegrationTest();
} else {
await startRefTest(options.masterMode, options.reftest);
}
} catch (e) {
// Close the browsers if uncaught exceptions occur, otherwise the spawned
// processes can become orphaned and keep running after `test.mjs` exits
// because the teardown logic of the tests did not get a chance to run.
console.error(e);
await Promise.all(sessions.map(session => closeSession(session.name)));
}
}
var server;
var sessions;
var sessions = [];
var onAllSessionsClosed;
var host = "127.0.0.1";
var options = parseOptions();