Files
blackroad-metaverse/tests/module-loader.test.js
Alexa Louise 14017cc547 Pi deployment mega-session: 136+ containers deployed
Massive deployment session deploying entire BlackRoad/Lucidia infrastructure to Raspberry Pi 4B:
- Cleaned /tmp space: 595MB → 5.2GB free
- Total containers: 136+ running simultaneously
- Ports: 3067-3200+
- Disk: 25G/29G (92% usage)
- Memory: 3.6Gi/7.9Gi

Deployment scripts created:
- /tmp/continue-deploy.sh (v2-* deployments)
- /tmp/absolute-final-deploy.sh (final-* deployments)
- /tmp/deployment-status.sh (monitoring)

Infrastructure maximized on single Pi 4B (8GB RAM, 32GB SD).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-22 23:09:10 -06:00

76 lines
2.3 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { ModuleLoader } from '../module-loader.js';
test('buildDependencyGraph maps dependencies and dependents', () => {
const loader = new ModuleLoader();
const configs = [
{ name: 'a', deps: [] },
{ name: 'b', deps: ['a'] },
{ name: 'c', deps: ['b'] },
{ name: 'wild', deps: ['*'] }
];
const graph = loader.buildDependencyGraph(configs);
assert.deepEqual(graph.get('b').deps, ['a']);
assert.deepEqual(graph.get('a').dependents, ['b']);
assert.deepEqual(graph.get('wild').deps, []);
});
test('topologicalSort orders dependencies before dependents', () => {
const loader = new ModuleLoader();
const configs = [
{ name: 'a', deps: [] },
{ name: 'b', deps: ['a'] },
{ name: 'c', deps: ['b'] }
];
const graph = loader.buildDependencyGraph(configs);
const order = loader.topologicalSort(graph);
assert.ok(order.includes('a'));
assert.ok(order.includes('b'));
assert.ok(order.includes('c'));
assert.ok(order.indexOf('a') < order.indexOf('b'));
assert.ok(order.indexOf('b') < order.indexOf('c'));
});
test('topologicalSort throws on cycles', () => {
const loader = new ModuleLoader();
const graph = new Map([
['a', { deps: ['b'], dependents: [] }],
['b', { deps: ['a'], dependents: [] }]
]);
assert.throws(() => loader.topologicalSort(graph), /Circular dependency/);
});
test('loadModule returns module and runs init', async () => {
const loader = new ModuleLoader();
const fixtureUrl = new URL('./fixtures/test-module.js', import.meta.url);
const loadedModule = await loader.loadModule({
name: 'fixture',
path: fixtureUrl.href,
deps: []
});
assert.equal(loadedModule.name, 'fixture');
assert.equal(loadedModule.initialized, true);
});
test('loadModule returns placeholder for missing module', async () => {
const loader = new ModuleLoader();
const missingUrl = new URL('./fixtures/does-not-exist.js', import.meta.url);
const loadedModule = await loader.loadModule({
name: 'missing',
path: missingUrl.href,
deps: []
});
assert.equal(loadedModule.placeholder, true);
assert.equal(loadedModule.name, 'missing');
});