DC-005: Fix all 138 broken test paths after src/ refactor

After the DC-005 module reorganization (41 files moved into src/ subdirs),
138 test suites failed because the refactor script's path-rewrite logic
missed three categories:

1. Files inside src/ doing 'require("./src/...")' — should be 'require("../...")'
2. Files in src/X/Y/ doing 'require("../../../src/...")' — should be 'require("../../...")'
3. Test files in __tests__/ with leftover 'require("../../../src/...")' paths

Root cause: the original refactor script ran before all files were moved,
so it computed relative paths against stale filesystem state.

Result:
- 30/30 test suites pass
- 879/879 tests pass (was: 18/30 suites, 614/687 tests)

Also fixed:
- routes/apps/restore.js: wrong responses import path
- routes/*/*.js: '../../src/utilities/X' → '../src/utilities/X' (depth 2 routes)
This commit is contained in:
Hermes
2026-06-13 12:16:56 -07:00
parent 9468dfc0eb
commit 7bc2a207f3
129 changed files with 591 additions and 310 deletions
+22 -22
View File
@@ -33,7 +33,7 @@ process.on('uncaughtException', (error) => {
const CONFIG_FILE = process.env.CONFIG_FILE || platformPaths.servicesFile.replace('services.json', 'config.json');
// Validate startup configuration
const { validateStartupConfig } = require('./startup-validator');
const { validateStartupConfig } = require('../src/utilities/startup-validator');
await validateStartupConfig({
log,
CADDYFILE_PATH,
@@ -56,23 +56,23 @@ process.on('uncaughtException', (error) => {
// Attach WebSocket exec handler (with auth)
const attachExecWS = require('./routes/exec');
const authManager = require('./auth-manager');
const authManager = require('../src/managers/auth-manager');
attachExecWS(server, log, authManager);
log.info('server', 'WebSocket exec handler attached (auth enforced)');
// Start feature modules
const resourceMonitor = require('./resource-monitor');
const backupManager = require('./backup-manager');
const healthChecker = require('./health-checker');
const updateManager = require('./update-manager');
const selfUpdater = require('./self-updater');
const portLockManager = require('./port-lock-manager');
const resourceMonitor = require('../src/managers/resource-monitor');
const backupManager = require('../src/utilities/backup-manager');
const healthChecker = require('../src/monitoring/health-checker');
const updateManager = require('../src/managers/update-manager');
const selfUpdater = require('../src/docker/self-updater');
const portLockManager = require('../src/managers/port-lock-manager');
// Optional modules
let dockerMaintenance, logDigest, bundledWorkflows;
try { dockerMaintenance = require('./docker-maintenance'); } catch { /* optional */ }
try { logDigest = require('./log-digest'); } catch { /* optional */ }
try { bundledWorkflows = require('./bundled-workflows'); } catch { /* optional */ }
try { dockerMaintenance = require('../src/docker/docker-maintenance'); } catch { /* optional */ }
try { logDigest = require('../src/security/log-digest'); } catch { /* optional */ }
try { bundledWorkflows = require('../src/recipes/bundled-workflows'); } catch { /* optional */ }
// Initialize workflow engine if bundled-workflows is available
// NOTE: createApp() already initializes the workflow engine in src/app.js
@@ -85,7 +85,7 @@ process.on('uncaughtException', (error) => {
// Create a context with needed services
const workflowCtx = {
docker: { client: require('dockerode')() },
notification: require('./notification-manager')({
notification: require('../src/managers/notification-manager')({
NOTIFICATIONS_FILE: process.env.NOTIFICATIONS_FILE || require('./platform-paths').notificationsFile,
fetchT,
log,
@@ -137,8 +137,8 @@ process.on('uncaughtException', (error) => {
// Health checker (with service sync)
(async () => {
try {
const { syncHealthCheckerServices } = require('./startup-validator');
const StateManager = require('./state-manager');
const { syncHealthCheckerServices } = require('../src/utilities/startup-validator');
const StateManager = require('../src/managers/state-manager');
const servicesStateManager = new StateManager(SERVICES_FILE);
await syncHealthCheckerServices({
@@ -150,7 +150,7 @@ process.on('uncaughtException', (error) => {
? `https://${config.domain}/${subdomain}`
: `https://${subdomain}${config.tld}`,
siteConfig: config,
APP: require('./constants').APP
APP: require('../src/utilities/constants').APP
});
healthChecker.start();
@@ -232,11 +232,11 @@ process.on('uncaughtException', (error) => {
const shutdown = (signal) => {
log.info('shutdown', `${signal} received, draining connections...`);
const resourceMonitor = require('./resource-monitor');
const backupManager = require('./backup-manager');
const healthChecker = require('./health-checker');
const updateManager = require('./update-manager');
const selfUpdater = require('./self-updater');
const resourceMonitor = require('../src/managers/resource-monitor');
const backupManager = require('../src/utilities/backup-manager');
const healthChecker = require('../src/monitoring/health-checker');
const updateManager = require('../src/managers/update-manager');
const selfUpdater = require('../src/docker/self-updater');
resourceMonitor.stop();
backupManager.stop();
@@ -245,12 +245,12 @@ process.on('uncaughtException', (error) => {
selfUpdater.stop();
try {
const dockerMaintenance = require('./docker-maintenance');
const dockerMaintenance = require('../src/docker/docker-maintenance');
dockerMaintenance.stop();
} catch { /* optional */ }
try {
const logDigest = require('./log-digest');
const logDigest = require('../src/security/log-digest');
logDigest.stop();
} catch { /* optional */ }