@kirrosh/zond 0.26.0 → 0.26.1

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/CHANGELOG.md CHANGED
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.26.1] — 2026-07-09
8
+
9
+ Follow-up from the v0.26.0 petstore verify audit (report-zond findings).
10
+
11
+ ### Fixed
12
+ - **`zond run` on a non-existent path is now a hard error (ARV-383):** a path
13
+ absent on disk exits 2 with `No such file or directory: <path> — nothing to
14
+ run`, instead of falling through to the ARV-357 empty-report path and
15
+ reporting a green 0-test "pass". Real trigger: a probe that matched 0 fields
16
+ never created its output dir, then `zond run <that-dir>` went silently green.
17
+ An existing-but-empty dir keeps its ARV-357 advisory exit-0 behavior.
18
+
7
19
  ## [0.26.0] — 2026-07-09
8
20
 
9
21
  Deterministic gap-fills surfaced by a docgen-core-service audit — all pass the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kirrosh/zond",
3
- "version": "0.26.0",
3
+ "version": "0.26.1",
4
4
  "description": "API testing platform — define tests in YAML, run from CLI, generate from OpenAPI specs",
5
5
  "license": "MIT",
6
6
  "module": "index.ts",
@@ -160,6 +160,26 @@ export async function runCommand(options: RunOptions): Promise<number> {
160
160
  // the rogue character. Mutating options.paths so downstream lookups
161
161
  // (collection by test_path, env-file search) see the cleaned form.
162
162
  options.paths = options.paths.map((p) => p.trim());
163
+
164
+ // ARV-383: a path that does not exist on disk is a hard error, not an
165
+ // empty (exit-0) run. Without this, `parseDirectorySafe` globs a missing
166
+ // cwd -> 0 suites and run falls through to the ARV-357 empty-report path,
167
+ // reporting a green 0-test "pass". Real-world trigger: a probe that matched
168
+ // 0 fields never created its output dir, then `zond run <that-dir>` went
169
+ // silently green. An existing-but-empty dir still flows to ARV-357.
170
+ const missingPaths: string[] = [];
171
+ for (const p of options.paths) {
172
+ try {
173
+ await stat(p);
174
+ } catch {
175
+ missingPaths.push(p);
176
+ }
177
+ }
178
+ if (missingPaths.length > 0) {
179
+ printError(`No such file or directory: ${missingPaths.join(", ")} — nothing to run`);
180
+ return 2;
181
+ }
182
+
163
183
  const primaryPath = options.paths[0]!;
164
184
 
165
185
  // 1. Parse test files from every input path (collect parse errors instead