add missing unit test suite
This commit is contained in:
160 files changed
+19260
-1164
No files matched your search
@@ -0,0 +1,38 @@
|
||||
// @ts-expect-error -- bun:test is a runtime built-in with no types installed
|
||||
import { describe, expect, test } from 'bun:test';
|
||||
import { parseConfigErrors } from '../../src/lib/server/compose-validate/effective-compose';
|
||||
|
||||
describe('parseConfigErrors (docker compose config stderr)', () => {
|
||||
test('a schema error becomes one COMPOSE_SCHEMA_ERROR finding', () => {
|
||||
const stderr = `validating /tmp/x/docker-compose.yml: services.web.ports.0 must be a string or number`;
|
||||
const out = parseConfigErrors(stderr);
|
||||
expect(out).toHaveLength(1);
|
||||
expect(out[0].ruleId).toBe('COMPOSE_SCHEMA_ERROR');
|
||||
expect(out[0].severity).toBe('error');
|
||||
expect(out[0].message).toContain('services.web.ports.0');
|
||||
expect(out[0].message).not.toContain('validating');
|
||||
});
|
||||
|
||||
test('a line number in the message is lifted to .line', () => {
|
||||
const out = parseConfigErrors('yaml: line 7: mapping values are not allowed here');
|
||||
expect(out[0].line).toBe(7);
|
||||
});
|
||||
|
||||
test('duplicate error lines are collapsed', () => {
|
||||
const out = parseConfigErrors('error: boom\nerror: boom\n');
|
||||
expect(out).toHaveLength(1);
|
||||
expect(out[0].message).toBe('boom');
|
||||
});
|
||||
|
||||
test('empty stderr still yields a single generic error', () => {
|
||||
const out = parseConfigErrors(' \n \n');
|
||||
expect(out).toHaveLength(1);
|
||||
expect(out[0].ruleId).toBe('COMPOSE_SCHEMA_ERROR');
|
||||
});
|
||||
|
||||
test('blank lines are ignored', () => {
|
||||
const out = parseConfigErrors('\n\nservices.db.image is required\n\n');
|
||||
expect(out).toHaveLength(1);
|
||||
expect(out[0].message).toBe('services.db.image is required');
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user