feat: sdk subcommand to run local conformance against any SDK ref (#277)
* feat: add sdk subcommand to run conformance against any SDK ref (#250) * Revise sdk runner: explicit --mode, KNOWN_SDKS-only config, v1/v2 entries Addresses review feedback on the sdk subcommand: - Require --mode (client|server) and remove "both". Each invocation now tests exactly one side with its own exit code; the old default ran client then server but combined exit codes with ||=, which skipped the server side entirely whenever the client run failed. - Resolve build/run config from KNOWN_SDKS + CLI flags only; drop the conformance.config.yaml loader (no SDK ships one yet). The Zod schema stays as the type for the built-in entries. - Split the typescript entry by major version: typescript-sdk (v2/main, pnpm install + build:all, expected-failures.yaml) and typescript-sdk-v1 (v1.x, npm ci + build, conformance-baseline.yml). An entry may set `repo` (real clone target for an alias) and `defaultRef` (branch used when no @ref is given). parseSdkSpec now leaves ref undefined when omitted so defaultRef can apply; a trailing @ is treated as no ref. - Key the clone cache by ref (<repo>/<ref>) so different refs of the same repo no longer share one checkout. - Bound the server readiness probe with a per-request AbortSignal timeout so a server that accepts the socket but never responds can't hang past the overall deadline. * fix(sdk-runner): resolve -o to absolute path; add --expected-failures override; replaceAll for safeName
This commit is contained in:
parent
70f7ba0004
commit
cfcecdba2c
1 changed files with 643 additions and 1 deletions
25
src/sdk-runner/config.ts
Normal file
25
src/sdk-runner/config.ts
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import { z } from 'zod';
|
||||
|
||||
export const SdkConfigSchema = z.object({
|
||||
// Clone this repo instead of the KNOWN_SDKS key — lets an alias entry
|
||||
// (e.g. typescript-sdk-v1) point at the real repo (typescript-sdk).
|
||||
repo: z.string().optional(),
|
||||
// Ref to check out when the SDK is named with no @ref (the "default branch").
|
||||
defaultRef: z.string().optional(),
|
||||
build: z.string().optional(),
|
||||
client: z
|
||||
.object({
|
||||
command: z.string()
|
||||
})
|
||||
.optional(),
|
||||
server: z
|
||||
.object({
|
||||
command: z.string(),
|
||||
url: z.string().url(),
|
||||
readyTimeoutMs: z.number().int().positive().optional()
|
||||
})
|
||||
.optional(),
|
||||
expectedFailures: z.string().optional()
|
||||
});
|
||||
|
||||
export type SdkConfig = z.infer<typeof SdkConfigSchema>;
|
||||
Loading…
Reference in a new issue