pokemon-showdown/test/main.js
Slayer95 b0dc94f196
Further update tests after startup refactor (#11521)
- Adds config.lazysockets to prevent listening to the network
- Fixes modlog tests
2026-01-25 07:58:21 -05:00

73 lines
2.2 KiB
JavaScript

'use strict';
require('child_process').execSync('node "' + __dirname + '/../build"');
const path = require('path');
const fs = require('fs');
const noop = () => {};
// Load and override configuration before starting the server
let config;
try {
require.resolve('../config/config');
} catch (err) {
if (err.code !== 'MODULE_NOT_FOUND' && err.code !== 'ENOENT') throw err; // Should never happen
console.log("config.js doesn't exist - creating one with default settings...");
fs.writeFileSync(
path.resolve(__dirname, '../config/config.js'),
fs.readFileSync(path.resolve(__dirname, '../config/config-example.js'))
);
} finally {
config = require('../config/config');
}
Object.assign(config, require('../config/config-example'));
// Actually crash if we crash
config.crashguard = false;
// Don't allow config to be overridden while test is running
config.watchconfig = false;
// Don't try to write to file system
config.nofswriting = true;
// Don't try to listen to the network
config.lazysockets = true;
// Allow renaming without a token
config.noguestsecurity = true;
// Test a normal ladder
config.fakeladder = false;
// Don't log monitor messages to the console (necessary so that chat monitor tests don't clog up stdout)
config.loglevel = 3;
// If sqlite is enabled at all, run tests in server/modlog
config.usesqlitemodlog = true;
require('./../dist/lib/process-manager').ProcessManager.disabled = true;
// stop chatrooms from loading through modifying the require cache
try {
const chatrooms = require('../config/chatrooms.json');
chatrooms.splice(0, chatrooms.length);
} catch {}
// Don't create a REPL
require('../dist/lib/repl').Repl.start = noop;
// Start the server.
const server = require('../dist/server');
// Preload so that sim tests have access to Dex ASAP
const { Dex } = require('../dist/sim/dex');
global.Dex = Dex;
global.toID = Dex.toID;
before('initialization', async function () {
this.timeout(0); // Remove timeout limitation
await server.readyPromise;
LoginServer.disabled = true;
Ladders.disabled = true;
process.on('unhandledRejection', err => {
// I'd throw the err, but we have a heisenbug on our hands and I'd
// rather not have it screw with Travis in the interim
console.log(err);
});
});