Files
spoon/apps/agent-worker/tests/unit/docker-runtime.test.ts
T
Gabriel Brown a6f7ea7f78
Build and Push Spoon Images / quality (push) Successful in 2m22s
Build and Push Spoon Images / build-images (push) Successful in 23m10s
Clean up old stuff & fix ui errors
2026-06-23 14:57:05 -04:00

47 lines
1.5 KiB
TypeScript

import { afterEach, describe, expect, test, vi } from 'vitest';
const loadVolumeSpec = async () => {
vi.resetModules();
process.env.SPOON_WORKER_TOKEN = 'test-worker-token';
process.env.GITHUB_APP_ID = '123';
process.env.GITHUB_APP_PRIVATE_KEY =
'-----BEGIN PRIVATE KEY-----\\ntest\\n-----END PRIVATE KEY-----';
return await import('../../src/runtime/docker');
};
describe('Docker runtime', () => {
afterEach(() => {
delete process.env.SPOON_AGENT_CONTAINER_RUNTIME;
delete process.env.SPOON_AGENT_CONTAINER_VOLUME_OPTIONS;
vi.resetModules();
});
test('adds SELinux relabel option for Podman workspace mounts by default', async () => {
process.env.SPOON_AGENT_CONTAINER_RUNTIME = 'podman';
const { jobWorkspaceVolumeSpec } = await loadVolumeSpec();
expect(jobWorkspaceVolumeSpec('/tmp/spoon-job')).toBe(
'/tmp/spoon-job:/workspace:Z',
);
});
test('does not add Podman volume options for Docker by default', async () => {
process.env.SPOON_AGENT_CONTAINER_RUNTIME = 'docker';
const { jobWorkspaceVolumeSpec } = await loadVolumeSpec();
expect(jobWorkspaceVolumeSpec('/tmp/spoon-job')).toBe(
'/tmp/spoon-job:/workspace',
);
});
test('allows explicit workspace mount options', async () => {
process.env.SPOON_AGENT_CONTAINER_RUNTIME = 'podman';
process.env.SPOON_AGENT_CONTAINER_VOLUME_OPTIONS = 'z';
const { jobWorkspaceVolumeSpec } = await loadVolumeSpec();
expect(jobWorkspaceVolumeSpec('/tmp/spoon-job')).toBe(
'/tmp/spoon-job:/workspace:z',
);
});
});