Move slowTest and externalTest to test/common.js

These are used outside of the integration tests, but including the
integration index file causes the very slow setup of the contorller
and host.  Avoid the integration setup costs when running commands
such as `pnpm mocha test/lib` by moving these utility functions to
the common test functions.
This commit is contained in:
Hornwitser committed 2026-09-15 22:18:16 +02:00
1 parent ea1cb67502
commit 92d2662078
13 files changed
+38 -34

No files matched your search

+22
View File
@@ -33,3 +33,25 @@ export function testRoundTripJsonSerialisable(Class, tests) {
}
}
}
/**
* Mark that this test takes a lot of time, or depends on a test that takes a
* lot of time.
*/
export function slowTest(test) {
if (process.env.FAST_TEST) {
test.skip();
}
test.timeout(30000);
}
/**
* Mark that this test depends on an external API and may be slow or flaky.
*/
export function externalTest(test) {
if (process.env.NO_EXTERNAL_TEST) {
test.skip();
}
test.timeout(60000);
}
+1 -1
View File
@@ -6,7 +6,7 @@ import path from "node:path";
import * as hostServer from "@clusterio/host/dist/node/src/server.js";
import { Link, wait } from "@clusterio/lib";
import { testLines } from "../lib/factorio/lines.js";
import { slowTest, externalTest } from "../integration/index.js";
import { slowTest, externalTest } from "../common.js";
import "../setup_logging.js";
+2 -1
View File
@@ -10,11 +10,12 @@ import * as libBuildMod from "@clusterio/lib/build_mod.js";
import * as testStrings from "../lib/factorio/test_strings.js";
import {
TestControl, TestControlConnector, url, controlToken, slowTest,
TestControl, TestControlConnector, url, controlToken,
execCtl, execCtlProcess, execController, execHost, sendRcon, getControl,
spawnNode, instancesDir, factorioDir, databaseDir, controllerConfigPath,
requiresFactorio, hasFactorio,
} from "./index.js";
import { slowTest } from "../common.js";
import { ControllerEcho, HostEchoReceived } from "../file/test_plugin/messages.js";
-19
View File
@@ -119,25 +119,6 @@ export class TestHostConnector extends lib.WebSocketClientConnector {
}
}
// Mark that this test takes a lot of time, or depends on a test that takes a lot of time.
export function slowTest(test) {
if (process.env.FAST_TEST) {
test.skip();
}
test.timeout(30000);
}
// Mark that this test depends on an external API and may be slow or flaky.
export function externalTest(test) {
if (process.env.NO_EXTERNAL_TEST) {
test.skip();
}
test.timeout(60000);
}
// Mark that this test or suite of tests requires a factorio install to run.
export function requiresFactorio(testOrSuite) {
if (testOrSuite.skip) {
+2 -2
View File
@@ -3,9 +3,9 @@ import assert from "node:assert/strict";
import * as lib from "@clusterio/lib";
import fs from "node:fs/promises";
import { testMatrix } from "../common.js";
import { slowTest, testMatrix } from "../common.js";
import {
slowTest, exec, execCtl, execCtlProcess, sendRcon, getControl,
execCtl, execCtlProcess, sendRcon, getControl,
requiresFactorio, hasFactorio, instancesDir,
} from "./index.js";
+2 -1
View File
@@ -3,9 +3,10 @@ import events from "node:events";
import jwt from "jsonwebtoken";
import {
TestControlConnector, TestHostConnector, TestControl, get, exec, url, controlToken, slowTest,
TestControlConnector, TestHostConnector, TestControl, url, controlToken,
} from "./index.js";
import { ConnectionClosed, ProtocolError, PolicyViolation, AuthenticationFailed } from "@clusterio/lib";
import { slowTest } from "../common.js";
let tokenHost = jwt.sign({ aud: "host", host: 0 }, Buffer.from("TestSecretDoNotUse", "base64"));
+1 -1
View File
@@ -6,7 +6,7 @@ import path from "node:path";
import { patch, SaveModule } from "@clusterio/host/dist/node/src/patch.js";
import * as lib from "@clusterio/lib";
import { slowTest } from "./index.js";
import { slowTest } from "../common.js";
// The server integration test is required to run before this one
+2 -1
View File
@@ -8,7 +8,8 @@ import { InstanceManager } from "@clusterio/controller";
import { FactorioServer, _getFactorioVersion } from "@clusterio/host/dist/node/src/server.js";
import { logger } from "@clusterio/lib";
import { slowTest, factorioDir, requiresFactorio } from "./index.js";
import { factorioDir, requiresFactorio } from "./index.js";
import { slowTest } from "../common.js";
describe("Integration of host/src/server", function() {
+1 -1
View File
@@ -8,7 +8,7 @@ import JSZip from "jszip"; // Added for creating mock zips
const nativeFetch = global.fetch;
import { ModStore, ModInfo, ModVersionEquality } from "@clusterio/lib"; // Adjust path based on compiled output
import { externalTest } from "../integration/index.js";
import { externalTest } from "../common.js";
import "../setup_logging.js";
const MODS_DIR = path.join("temp", "test", "mod_store", "mods");
+1 -1
View File
@@ -2,7 +2,7 @@ import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import { fetchFactorioVersions } from "@clusterio/lib";
import { slowTest, externalTest } from "../../integration/index.js";
import { slowTest, externalTest } from "../../common.js";
describe("FactorioVersions", function() {
describe("fetchFactorioVersions", function() {
+1 -1
View File
@@ -1,7 +1,7 @@
import assert from "node:assert/strict";
import { fetchLatestReleases, resolveReleaseChannel } from "@clusterio/lib";
import { slowTest, externalTest } from "../../integration/index.js";
import { slowTest, externalTest } from "../../common.js";
describe("LatestReleases", function() {
describe("fetchLatestReleases", function() {
+1 -1
View File
@@ -3,7 +3,7 @@ import fs from "node:fs/promises";
import path from "node:path";
import * as lib from "@clusterio/lib";
import { slowTest } from "../integration/index.js";
import { slowTest } from "../common.js";
import "../setup_logging.js";
+2 -4
View File
@@ -2,11 +2,9 @@ import assert from "node:assert/strict";
import * as lib from "@clusterio/lib";
import { ModDependencyResolveRequest, ModDependency, ModInfo } from "@clusterio/lib";
import { testMatrix, testRoundTripJsonSerialisable } from "../common.js";
import { Controller, ControlConnection } from "@clusterio/controller";
import { externalTest } from "../integration/index.js";
import { externalTest, testMatrix, testRoundTripJsonSerialisable } from "../common.js";
import "../setup_logging.js";
describe("messages/mod", function() {