Files
clide/test/ipc/schema_v1_test.dart
T
jpmschweitzerandClaude 235cbcc046 add Dart core package — IPC envelopes, daemon, ping round-trip
First real content for the `clide` Dart package at the repo root.
One AOT-compiled binary (ADR 0005) with two modes:

  * `clide --daemon`  long-running unix-socket server; listens on
    `$XDG_RUNTIME_DIR/clide-$USER.sock` with stale-socket
    reclaim, accepts JSON-lines request/response traffic, clean
    SIGTERM shutdown unlinks the socket file.
  * `clide <subcommand>`  one-shot; opens the socket, sends a
    request, writes the response JSON to stdout, exits with the
    dispatcher's error code per ADR 0006 (0/1/2/3/4). Unknown
    subcommands forward to the daemon so extensions can register
    their own without CLI changes.

Tier 0 handlers: `ping` (returns pong + version + UTC ts) and
`version`. Both are covered by `test/ipc/` + `test/daemon/`; the
subprocess test builds `bin/clide`, starts it, pings it, SIGTERMs
it, and asserts the socket file disappears.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-04-21 15:36:40 +02:00

29 lines
693 B
Dart

import 'package:clide/clide.dart';
import 'package:test/test.dart';
void main() {
group('schema_v1', () {
test('schema version is 1', () {
expect(ipcSchemaVersion, 1);
});
test('exit codes match ADR 0006', () {
expect(IpcExitCode.ok, 0);
expect(IpcExitCode.userError, 1);
expect(IpcExitCode.toolError, 2);
expect(IpcExitCode.notFound, 3);
expect(IpcExitCode.conflict, 4);
});
test('error kinds are unique strings', () {
final kinds = <String>{
IpcErrorKind.userError,
IpcErrorKind.toolError,
IpcErrorKind.notFound,
IpcErrorKind.conflict,
};
expect(kinds.length, 4);
});
});
}