@clowder-ai/plugin-contract 0.1.0-beta.1 → 0.1.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/codegen/generate-contract.d.ts +5 -0
- package/dist/codegen/generate-contract.d.ts.map +1 -1
- package/dist/codegen/generate-contract.js +45 -4
- package/dist/codegen/generate-contract.js.map +1 -1
- package/dist/conformance/behavior-executor.d.ts +18 -0
- package/dist/conformance/behavior-executor.d.ts.map +1 -0
- package/dist/conformance/behavior-executor.js +52 -0
- package/dist/conformance/behavior-executor.js.map +1 -0
- package/dist/conformance/fixtures.d.ts +9 -0
- package/dist/conformance/fixtures.d.ts.map +1 -0
- package/dist/conformance/fixtures.js +8 -0
- package/dist/conformance/fixtures.js.map +1 -0
- package/dist/conformance/index.d.ts +5 -0
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +4 -0
- package/dist/conformance/index.js.map +1 -1
- package/dist/conformance/messaging-loopback-adapter.d.ts +23 -0
- package/dist/conformance/messaging-loopback-adapter.d.ts.map +1 -0
- package/dist/conformance/messaging-loopback-adapter.js +389 -0
- package/dist/conformance/messaging-loopback-adapter.js.map +1 -0
- package/dist/conformance/messaging-loopback-state.d.ts +22 -0
- package/dist/conformance/messaging-loopback-state.d.ts.map +1 -0
- package/dist/conformance/messaging-loopback-state.js +101 -0
- package/dist/conformance/messaging-loopback-state.js.map +1 -0
- package/dist/conformance/runner.d.ts +18 -1
- package/dist/conformance/runner.d.ts.map +1 -1
- package/dist/conformance/runner.js +153 -66
- package/dist/conformance/runner.js.map +1 -1
- package/dist/conformance/stdio-harness/child-process-harness.d.ts +65 -0
- package/dist/conformance/stdio-harness/child-process-harness.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/child-process-harness.js +296 -0
- package/dist/conformance/stdio-harness/child-process-harness.js.map +1 -0
- package/dist/conformance/stdio-harness/dual-transport-oracle.d.ts +26 -0
- package/dist/conformance/stdio-harness/dual-transport-oracle.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/dual-transport-oracle.js +32 -0
- package/dist/conformance/stdio-harness/dual-transport-oracle.js.map +1 -0
- package/dist/conformance/stdio-harness/harness-process-spawn.d.ts +27 -0
- package/dist/conformance/stdio-harness/harness-process-spawn.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/harness-process-spawn.js +43 -0
- package/dist/conformance/stdio-harness/harness-process-spawn.js.map +1 -0
- package/dist/conformance/stdio-harness/index.d.ts +5 -0
- package/dist/conformance/stdio-harness/index.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/index.js +4 -0
- package/dist/conformance/stdio-harness/index.js.map +1 -0
- package/dist/conformance/stdio-harness/ndjson-frame.d.ts +31 -0
- package/dist/conformance/stdio-harness/ndjson-frame.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/ndjson-frame.js +125 -0
- package/dist/conformance/stdio-harness/ndjson-frame.js.map +1 -0
- package/dist/conformance/stdio-harness/node-process-tree-runtime.d.ts +15 -0
- package/dist/conformance/stdio-harness/node-process-tree-runtime.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/node-process-tree-runtime.js +78 -0
- package/dist/conformance/stdio-harness/node-process-tree-runtime.js.map +1 -0
- package/dist/conformance/stdio-harness/process-tree-controller.d.ts +51 -0
- package/dist/conformance/stdio-harness/process-tree-controller.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/process-tree-controller.js +162 -0
- package/dist/conformance/stdio-harness/process-tree-controller.js.map +1 -0
- package/dist/conformance/stdio-harness/windows-sentinel.d.ts +15 -0
- package/dist/conformance/stdio-harness/windows-sentinel.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/windows-sentinel.js +160 -0
- package/dist/conformance/stdio-harness/windows-sentinel.js.map +1 -0
- package/dist/conformance/stdio-harness/wire-shape.d.ts +18 -0
- package/dist/conformance/stdio-harness/wire-shape.d.ts.map +1 -0
- package/dist/conformance/stdio-harness/wire-shape.js +2 -0
- package/dist/conformance/stdio-harness/wire-shape.js.map +1 -0
- package/dist/generated/contract.generated.d.ts +305 -1
- package/dist/generated/contract.generated.d.ts.map +1 -1
- package/dist/generated/contract.generated.js +1 -1
- package/dist/generated/contract.generated.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/validation/index.d.ts +2 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +2 -0
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/manifest.d.ts +23 -0
- package/dist/validation/manifest.d.ts.map +1 -0
- package/dist/validation/manifest.js +53 -0
- package/dist/validation/manifest.js.map +1 -0
- package/dist/validation/signals.d.ts +26 -0
- package/dist/validation/signals.d.ts.map +1 -0
- package/dist/validation/signals.js +206 -0
- package/dist/validation/signals.js.map +1 -0
- package/dist/wire/constants.d.ts +36 -0
- package/dist/wire/constants.d.ts.map +1 -0
- package/dist/wire/constants.js +36 -0
- package/dist/wire/constants.js.map +1 -0
- package/dist/wire/disposition-fixtures.d.ts +110 -0
- package/dist/wire/disposition-fixtures.d.ts.map +1 -0
- package/dist/wire/disposition-fixtures.js +1462 -0
- package/dist/wire/disposition-fixtures.js.map +1 -0
- package/dist/wire/disposition.d.ts +102 -0
- package/dist/wire/disposition.d.ts.map +1 -0
- package/dist/wire/disposition.js +217 -0
- package/dist/wire/disposition.js.map +1 -0
- package/dist/wire/envelope.d.ts +253 -0
- package/dist/wire/envelope.d.ts.map +1 -0
- package/dist/wire/envelope.js +19 -0
- package/dist/wire/envelope.js.map +1 -0
- package/dist/wire/errors.d.ts +222 -0
- package/dist/wire/errors.d.ts.map +1 -0
- package/dist/wire/errors.js +153 -0
- package/dist/wire/errors.js.map +1 -0
- package/dist/wire/grants.d.ts +57 -0
- package/dist/wire/grants.d.ts.map +1 -0
- package/dist/wire/grants.js +59 -0
- package/dist/wire/grants.js.map +1 -0
- package/dist/wire/handshake-byte-bounds.d.ts +69 -0
- package/dist/wire/handshake-byte-bounds.d.ts.map +1 -0
- package/dist/wire/handshake-byte-bounds.js +173 -0
- package/dist/wire/handshake-byte-bounds.js.map +1 -0
- package/dist/wire/handshake.d.ts +146 -0
- package/dist/wire/handshake.d.ts.map +1 -0
- package/dist/wire/handshake.js +189 -0
- package/dist/wire/handshake.js.map +1 -0
- package/dist/wire/index.d.ts +35 -0
- package/dist/wire/index.d.ts.map +1 -0
- package/dist/wire/index.js +53 -0
- package/dist/wire/index.js.map +1 -0
- package/dist/wire/lifecycle-byte-bounds.d.ts +55 -0
- package/dist/wire/lifecycle-byte-bounds.d.ts.map +1 -0
- package/dist/wire/lifecycle-byte-bounds.js +209 -0
- package/dist/wire/lifecycle-byte-bounds.js.map +1 -0
- package/dist/wire/registry.d.ts +283 -0
- package/dist/wire/registry.d.ts.map +1 -0
- package/dist/wire/registry.js +258 -0
- package/dist/wire/registry.js.map +1 -0
- package/dist/wire/request-id.d.ts +34 -0
- package/dist/wire/request-id.d.ts.map +1 -0
- package/dist/wire/request-id.js +40 -0
- package/dist/wire/request-id.js.map +1 -0
- package/dist/wire/row-shapes.d.ts +212 -0
- package/dist/wire/row-shapes.d.ts.map +1 -0
- package/dist/wire/row-shapes.js +59 -0
- package/dist/wire/row-shapes.js.map +1 -0
- package/dist/wire/signal-byte-bounds.d.ts +97 -0
- package/dist/wire/signal-byte-bounds.d.ts.map +1 -0
- package/dist/wire/signal-byte-bounds.js +229 -0
- package/dist/wire/signal-byte-bounds.js.map +1 -0
- package/dist/wire/wire-uint53.d.ts +26 -0
- package/dist/wire/wire-uint53.d.ts.map +1 -0
- package/dist/wire/wire-uint53.js +32 -0
- package/dist/wire/wire-uint53.js.map +1 -0
- package/fixtures/behavior/messaging/adversarial-invariants.json +56 -5
- package/fixtures/manifest/invalid/duplicate-signal-type.json +33 -0
- package/fixtures/signals/invalid/destination-injection.json +15 -0
- package/fixtures/signals/invalid/dynamic-schema-url.json +10 -0
- package/fixtures/signals/invalid/forbidden-raw-privacy.json +10 -0
- package/fixtures/signals/invalid/non-utc-occurred-at.json +12 -0
- package/fixtures/signals/valid/feishu-meeting-artifact.json +18 -0
- package/fixtures/signals/valid/remote-service-declaration.json +10 -0
- package/package.json +13 -5
- package/src/schemas/manifest.schema.json +5 -2
- package/src/schemas/messaging.schema.json +1 -0
- package/src/schemas/physical-limb.schema.json +319 -0
- package/src/schemas/signal.schema.json +129 -0
|
@@ -16,9 +16,12 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { readdir, readFile } from 'node:fs/promises';
|
|
18
18
|
import { createRequire } from 'node:module';
|
|
19
|
-
import { join, relative } from 'node:path';
|
|
19
|
+
import { join, relative, resolve } from 'node:path';
|
|
20
20
|
import { fileURLToPath } from 'node:url';
|
|
21
|
+
import { validateManifest } from '../validation/manifest.js';
|
|
21
22
|
import { validateMessagingSemantics } from '../validation/messaging-semantic.js';
|
|
23
|
+
import { executeBehaviorCase, } from './behavior-executor.js';
|
|
24
|
+
import { MessagingLoopbackAdapter } from './messaging-loopback-adapter.js';
|
|
22
25
|
// Ajv is CJS — use createRequire for clean interop with ESM + verbatimModuleSyntax
|
|
23
26
|
// Use ajv/dist/2020 for JSON Schema 2020-12 ($defs, etc.)
|
|
24
27
|
const require = createRequire(import.meta.url);
|
|
@@ -35,7 +38,7 @@ async function loadSchema(schemaPath) {
|
|
|
35
38
|
}
|
|
36
39
|
async function discoverFixtures(fixturesDir) {
|
|
37
40
|
const fixtures = [];
|
|
38
|
-
const domains = ['manifest', 'messaging'];
|
|
41
|
+
const domains = ['manifest', 'messaging', 'signals'];
|
|
39
42
|
for (const domain of domains) {
|
|
40
43
|
for (const validity of ['valid', 'invalid']) {
|
|
41
44
|
const dir = join(fixturesDir, domain, validity);
|
|
@@ -65,6 +68,7 @@ function getDefaultSchemaId(domain) {
|
|
|
65
68
|
const ids = {
|
|
66
69
|
manifest: 'https://clowder-ai.dev/schemas/manifest/v0.1',
|
|
67
70
|
messaging: 'https://clowder-ai.dev/schemas/messaging/v0.1',
|
|
71
|
+
signals: 'https://clowder-ai.dev/schemas/signals/v0.2',
|
|
68
72
|
};
|
|
69
73
|
return ids[domain] ?? '';
|
|
70
74
|
}
|
|
@@ -110,7 +114,20 @@ async function validateFixture(ajv, fixture, schemas) {
|
|
|
110
114
|
const isSchemaValid = validate(data);
|
|
111
115
|
const semanticResult = fixture.domain === 'messaging' && isSchemaValid
|
|
112
116
|
? validateMessagingSemantics(meta?.schemaRef ?? 'root', data)
|
|
113
|
-
:
|
|
117
|
+
: fixture.domain === 'manifest' && isSchemaValid
|
|
118
|
+
? (() => {
|
|
119
|
+
const result = validateManifest(data);
|
|
120
|
+
return result.valid
|
|
121
|
+
? { valid: true, errors: [] }
|
|
122
|
+
: {
|
|
123
|
+
valid: false,
|
|
124
|
+
errors: result.errors.map(({ instancePath, message }) => ({
|
|
125
|
+
path: instancePath,
|
|
126
|
+
message,
|
|
127
|
+
})),
|
|
128
|
+
};
|
|
129
|
+
})()
|
|
130
|
+
: { valid: true, errors: [] };
|
|
114
131
|
const isValid = isSchemaValid && semanticResult.valid;
|
|
115
132
|
if (fixture.validity === 'valid') {
|
|
116
133
|
// Valid fixtures MUST pass structural and semantic validation.
|
|
@@ -136,117 +153,187 @@ async function validateFixture(ajv, fixture, schemas) {
|
|
|
136
153
|
};
|
|
137
154
|
}
|
|
138
155
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
156
|
+
const defaultBehaviorAdapters = {
|
|
157
|
+
loopback: () => new MessagingLoopbackAdapter(),
|
|
158
|
+
};
|
|
159
|
+
function isMissingDirectory(error) {
|
|
160
|
+
return (typeof error === 'object' &&
|
|
161
|
+
error !== null &&
|
|
162
|
+
'code' in error &&
|
|
163
|
+
error.code === 'ENOENT');
|
|
164
|
+
}
|
|
165
|
+
export async function runConformance(options = {}) {
|
|
166
|
+
const fixturesDir = options.fixturesDir ?? join(PKG_ROOT, 'fixtures');
|
|
144
167
|
const schemasDir = join(PKG_ROOT, 'src', 'schemas');
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
168
|
+
const write = options.write ?? console.log;
|
|
169
|
+
const behaviorAdapters = options.behaviorAdapters ?? defaultBehaviorAdapters;
|
|
170
|
+
const failures = [];
|
|
171
|
+
write('🔍 Conformance runner — @clowder-ai/plugin-contract');
|
|
172
|
+
write(` Fixtures: ${fixturesDir}`);
|
|
173
|
+
write(` Schemas: ${schemasDir}`);
|
|
174
|
+
write('');
|
|
149
175
|
// Load schemas
|
|
150
176
|
const schemas = new Map();
|
|
151
177
|
const manifestSchema = await loadSchema(join(schemasDir, 'manifest.schema.json'));
|
|
152
178
|
const messagingSchema = await loadSchema(join(schemasDir, 'messaging.schema.json'));
|
|
179
|
+
const signalSchema = await loadSchema(join(schemasDir, 'signal.schema.json'));
|
|
153
180
|
const behaviorSchema = await loadSchema(join(schemasDir, 'behavior-fixture.schema.json'));
|
|
154
181
|
schemas.set('manifest', manifestSchema);
|
|
155
182
|
schemas.set('messaging', messagingSchema);
|
|
183
|
+
schemas.set('signals', signalSchema);
|
|
156
184
|
// Set up Ajv with format validation (date-time, uri, email, etc.)
|
|
157
185
|
const ajv = new Ajv({ allErrors: true, strict: false });
|
|
158
186
|
addFormats(ajv);
|
|
187
|
+
ajv.addSchema(signalSchema, signalSchema['$id']);
|
|
159
188
|
ajv.addSchema(manifestSchema, manifestSchema['$id']);
|
|
160
189
|
ajv.addSchema(messagingSchema, messagingSchema['$id']);
|
|
161
190
|
ajv.addSchema(behaviorSchema, behaviorSchema['$id']);
|
|
162
191
|
// Discover and validate fixtures
|
|
163
192
|
const fixtures = await discoverFixtures(fixturesDir);
|
|
164
|
-
if (fixtures.length === 0) {
|
|
165
|
-
console.log('📭 No fixtures found — runner OK (empty run).');
|
|
166
|
-
console.log(' Fixtures will be added by sol per the three-tier fixture plan.');
|
|
167
|
-
process.exit(0);
|
|
168
|
-
}
|
|
169
193
|
const results = [];
|
|
170
194
|
for (const fixture of fixtures) {
|
|
171
195
|
results.push(await validateFixture(ajv, fixture, schemas));
|
|
172
196
|
}
|
|
173
197
|
// Report schema fixtures
|
|
174
|
-
let schemaFailures = 0;
|
|
175
198
|
for (const result of results) {
|
|
176
199
|
const icon = result.passed ? '✅' : '❌';
|
|
177
200
|
const expect = result.fixture.validity === 'valid' ? 'should pass' : 'should fail';
|
|
178
|
-
|
|
179
|
-
if (result.
|
|
201
|
+
write(`${icon} ${result.fixture.relativePath} (${expect})`);
|
|
202
|
+
if (!result.passed) {
|
|
203
|
+
const errors = result.errors ?? ['fixture did not meet its expected validity'];
|
|
204
|
+
failures.push(...errors.map((message) => `${result.fixture.relativePath}: ${message}`));
|
|
205
|
+
}
|
|
206
|
+
if (result.errors && !result.passed) {
|
|
180
207
|
for (const err of result.errors) {
|
|
181
|
-
|
|
208
|
+
write(` → ${err}`);
|
|
182
209
|
}
|
|
183
|
-
schemaFailures++;
|
|
184
210
|
}
|
|
185
211
|
}
|
|
186
|
-
// Validate and
|
|
212
|
+
// Validate and execute behavioral fixtures through registered adapters.
|
|
187
213
|
const behaviorDir = join(fixturesDir, 'behavior');
|
|
188
|
-
let
|
|
214
|
+
let behaviorTotal = 0;
|
|
215
|
+
let behaviorPassed = 0;
|
|
189
216
|
let behaviorFileCount = 0;
|
|
190
|
-
let behaviorFailures = 0;
|
|
191
217
|
const validateBehavior = ajv.getSchema(behaviorSchema['$id']);
|
|
192
218
|
if (!validateBehavior) {
|
|
193
219
|
throw new Error('Behavior fixture schema was not registered');
|
|
194
220
|
}
|
|
221
|
+
let behaviorDomains = [];
|
|
195
222
|
try {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
223
|
+
behaviorDomains = await readdir(behaviorDir);
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
if (!isMissingDirectory(error)) {
|
|
227
|
+
throw error;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
for (const domain of behaviorDomains) {
|
|
231
|
+
const domainDir = join(behaviorDir, domain);
|
|
232
|
+
let entries;
|
|
233
|
+
try {
|
|
234
|
+
entries = await readdir(domainDir);
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
if (isMissingDirectory(error)) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
throw error;
|
|
241
|
+
}
|
|
242
|
+
for (const entry of entries) {
|
|
243
|
+
if (!entry.endsWith('.json'))
|
|
244
|
+
continue;
|
|
245
|
+
const path = join(domainDir, entry);
|
|
246
|
+
const fixturePath = relative(fixturesDir, path);
|
|
247
|
+
let parsed;
|
|
200
248
|
try {
|
|
201
|
-
|
|
249
|
+
parsed = JSON.parse(await readFile(path, 'utf-8'));
|
|
202
250
|
}
|
|
203
|
-
catch {
|
|
251
|
+
catch (error) {
|
|
252
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
253
|
+
write(`❌ ${fixturePath} (invalid JSON)`);
|
|
254
|
+
write(` → ${message}`);
|
|
255
|
+
failures.push(`${fixturePath}: invalid JSON: ${message}`);
|
|
204
256
|
continue;
|
|
205
257
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
data = JSON.parse(await readFile(path, 'utf-8'));
|
|
258
|
+
if (!validateBehavior(parsed)) {
|
|
259
|
+
write(`❌ ${fixturePath} (malformed behavior fixture)`);
|
|
260
|
+
const errors = validateBehavior.errors ?? [];
|
|
261
|
+
for (const validationError of errors) {
|
|
262
|
+
const message = `${validationError.instancePath}: ${validationError.message}`;
|
|
263
|
+
write(` → ${message}`);
|
|
264
|
+
failures.push(`${fixturePath}: ${message}`);
|
|
214
265
|
}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
console.log(` → ${error instanceof Error ? error.message : String(error)}`);
|
|
218
|
-
behaviorFailures++;
|
|
219
|
-
continue;
|
|
266
|
+
if (errors.length === 0) {
|
|
267
|
+
failures.push(`${fixturePath}: malformed behavior fixture`);
|
|
220
268
|
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
const data = parsed;
|
|
272
|
+
const caseCount = data.cases.length;
|
|
273
|
+
behaviorTotal += caseCount;
|
|
274
|
+
behaviorFileCount++;
|
|
275
|
+
const createAdapter = behaviorAdapters[data._meta.executor];
|
|
276
|
+
if (!createAdapter) {
|
|
277
|
+
const message = `unsupported behavior executor ${data._meta.executor}`;
|
|
278
|
+
write(`❌ ${fixturePath} (${message})`);
|
|
279
|
+
failures.push(`${fixturePath}: ${message}`);
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
let filePassed = 0;
|
|
283
|
+
for (const behaviorCase of data.cases) {
|
|
284
|
+
try {
|
|
285
|
+
const report = await executeBehaviorCase(behaviorCase, createAdapter());
|
|
286
|
+
if (report.passed) {
|
|
287
|
+
behaviorPassed++;
|
|
288
|
+
filePassed++;
|
|
225
289
|
}
|
|
226
|
-
|
|
227
|
-
|
|
290
|
+
else {
|
|
291
|
+
failures.push(...report.failures.map((failure) => `${fixturePath}/${report.id}: ${failure}`));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
296
|
+
failures.push(`${fixturePath}/${behaviorCase.id}: adapter threw: ${message}`);
|
|
228
297
|
}
|
|
229
|
-
const caseCount = data.cases.length;
|
|
230
|
-
behaviorCount += caseCount;
|
|
231
|
-
behaviorFileCount++;
|
|
232
|
-
console.log(`✅ ${fixturePath} (${caseCount} validated cases, executor: ${data._meta.executor}; execution skipped — requires P-2)`);
|
|
233
298
|
}
|
|
299
|
+
write(`${filePassed === caseCount ? '✅' : '❌'} ${fixturePath}`);
|
|
300
|
+
write(` ${filePassed}/${caseCount} ${data._meta.executor} behavior cases executed`);
|
|
234
301
|
}
|
|
235
302
|
}
|
|
236
|
-
|
|
237
|
-
|
|
303
|
+
const contractPassed = results.filter(({ passed }) => passed).length;
|
|
304
|
+
write('');
|
|
305
|
+
write(`Results: ${contractPassed}/${results.length} contract fixtures passed`);
|
|
306
|
+
if (behaviorTotal > 0) {
|
|
307
|
+
write(` ${behaviorPassed}/${behaviorTotal} behavior cases executed across ${behaviorFileCount} file(s)`);
|
|
238
308
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
309
|
+
if (results.length === 0) {
|
|
310
|
+
const message = 'no contract fixtures discovered';
|
|
311
|
+
failures.push(message);
|
|
312
|
+
write(`❌ ${message}`);
|
|
243
313
|
}
|
|
244
|
-
if (
|
|
245
|
-
|
|
314
|
+
if (behaviorTotal === 0) {
|
|
315
|
+
const message = 'no behavior cases discovered';
|
|
316
|
+
failures.push(message);
|
|
317
|
+
write(`❌ ${message}`);
|
|
246
318
|
}
|
|
319
|
+
return {
|
|
320
|
+
contractFixtures: { passed: contractPassed, total: results.length },
|
|
321
|
+
behaviorCases: { passed: behaviorPassed, total: behaviorTotal },
|
|
322
|
+
failures,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
const isMain = process.argv[1] !== undefined &&
|
|
326
|
+
resolve(process.argv[1]) === fileURLToPath(import.meta.url);
|
|
327
|
+
if (isMain) {
|
|
328
|
+
runConformance()
|
|
329
|
+
.then((report) => {
|
|
330
|
+
if (report.failures.length > 0) {
|
|
331
|
+
process.exitCode = 1;
|
|
332
|
+
}
|
|
333
|
+
})
|
|
334
|
+
.catch((err) => {
|
|
335
|
+
console.error('Conformance runner crashed:', err);
|
|
336
|
+
process.exitCode = 1;
|
|
337
|
+
});
|
|
247
338
|
}
|
|
248
|
-
main().catch((err) => {
|
|
249
|
-
console.error('Conformance runner crashed:', err);
|
|
250
|
-
process.exit(1);
|
|
251
|
-
});
|
|
252
339
|
//# sourceMappingURL=runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/conformance/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/conformance/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { type ChildProcessWithoutNullStreams } from 'node:child_process';
|
|
2
|
+
import { type HarnessPlatformAdapter, type HarnessTargetLifecycle, type SpawnHarnessChildOptions } from './harness-process-spawn.js';
|
|
3
|
+
import { type DecodedNdjsonFrame, type JsonObject } from './ndjson-frame.js';
|
|
4
|
+
import { type ProcessTreeRuntime } from './process-tree-controller.js';
|
|
5
|
+
export { HarnessCleanupError } from './process-tree-controller.js';
|
|
6
|
+
export type { HarnessPlatformAdapter, SpawnHarnessChildOptions, } from './harness-process-spawn.js';
|
|
7
|
+
export declare const MAX_HARNESS_QUEUED_FRAMES = 16;
|
|
8
|
+
/**
|
|
9
|
+
* Node.js setTimeout uses a 32-bit signed integer internally.
|
|
10
|
+
* Values above 2^31-1 (2_147_483_647) are silently clamped to 1ms,
|
|
11
|
+
* making the timer fire immediately — a correctness hazard.
|
|
12
|
+
*/
|
|
13
|
+
export declare const MAX_TIMER_MS = 2147483647;
|
|
14
|
+
export interface HarnessReceiveOptions {
|
|
15
|
+
readonly timeoutMs: number;
|
|
16
|
+
}
|
|
17
|
+
export interface HarnessChildExit {
|
|
18
|
+
readonly code: number | null;
|
|
19
|
+
readonly signal: NodeJS.Signals | null;
|
|
20
|
+
}
|
|
21
|
+
export interface RunHarnessCaseOptions extends SpawnHarnessChildOptions {
|
|
22
|
+
readonly timeoutMs: number;
|
|
23
|
+
readonly terminateGraceMs?: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class HarnessTimeoutError extends Error {
|
|
26
|
+
constructor(message: string);
|
|
27
|
+
}
|
|
28
|
+
export declare class HarnessChildExitedError extends Error {
|
|
29
|
+
readonly exit: HarnessChildExit;
|
|
30
|
+
constructor(exit: HarnessChildExit);
|
|
31
|
+
}
|
|
32
|
+
export declare class HarnessFrameBacklogError extends Error {
|
|
33
|
+
readonly maxQueuedFrames: number;
|
|
34
|
+
constructor(maxQueuedFrames?: number);
|
|
35
|
+
}
|
|
36
|
+
export declare class HarnessChild {
|
|
37
|
+
private readonly child;
|
|
38
|
+
readonly pid: number | undefined;
|
|
39
|
+
private readonly decoder;
|
|
40
|
+
private readonly frames;
|
|
41
|
+
private readonly waiters;
|
|
42
|
+
private readonly exitPromise;
|
|
43
|
+
private readonly processTree;
|
|
44
|
+
private resolveExit;
|
|
45
|
+
private exit;
|
|
46
|
+
private streamsClosed;
|
|
47
|
+
private stopPromise;
|
|
48
|
+
constructor(child: ChildProcessWithoutNullStreams, target?: HarnessTargetLifecycle, runtime?: ProcessTreeRuntime);
|
|
49
|
+
send(frame: JsonObject): Promise<void>;
|
|
50
|
+
receive(options: HarnessReceiveOptions): Promise<DecodedNdjsonFrame>;
|
|
51
|
+
kill(signal?: NodeJS.Signals): void;
|
|
52
|
+
waitForExit(): Promise<HarnessChildExit>;
|
|
53
|
+
stop(terminateGraceMs?: number): Promise<HarnessChildExit>;
|
|
54
|
+
private stopOnce;
|
|
55
|
+
private assertRunning;
|
|
56
|
+
private enqueue;
|
|
57
|
+
private fail;
|
|
58
|
+
private rejectWaiters;
|
|
59
|
+
private failAndKill;
|
|
60
|
+
private startReap;
|
|
61
|
+
}
|
|
62
|
+
export declare function spawnHarnessChild(options: SpawnHarnessChildOptions): HarnessChild;
|
|
63
|
+
export declare function spawnHarnessChildWithAdapter(options: SpawnHarnessChildOptions, adapter: HarnessPlatformAdapter): HarnessChild;
|
|
64
|
+
export declare function runHarnessCase<T>(options: RunHarnessCaseOptions, execute: (child: HarnessChild) => Promise<T>): Promise<T>;
|
|
65
|
+
//# sourceMappingURL=child-process-harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-process-harness.d.ts","sourceRoot":"","sources":["../../../src/conformance/stdio-harness/child-process-harness.ts"],"names":[],"mappings":"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"}
|