# exclusions.txt — corpus cases this kit cannot run, and why. # # The corpus in sources/jq.test is byte-for-byte upstream and is never edited. Where a case # cannot run under this kit's harness, it is named here instead, so every skip is visible, # reasoned, and auditable against the upstream file. This file is a scoring asset: it is # hash-verified against the import and restored before grading. # # One verbatim program line per entry. An entry that matches no case in the corpus is a hard # error (exit 2), not a shrug — a silent no-op would quietly re-admit a case the kit cannot run # if the corpus pin ever moved. # # Nothing is excluded for being hard. The module-loader cases below are excluded because the # kit physically cannot deliver their inputs, not because the semantics are difficult. # -------------------------------------------------------------------------------------------- # Module loading from disk. # # These cases resolve `import` and `include` against a module search path supplied by jq's -L # flag, reading roughly twenty fixture files spread across nested directories upstream # (tests/modules/{b,c,lib/jq/e,home2/.jq,...}). Drydock copies a kit's declared sources into the # application flattened by basename, so that directory tree cannot be carried, and the interface # this kit fixes exercises no flag but -c. # # Only the loader cases are excluded. The module *grammar* cases — `module (.+1); 0`, # `module []; 0`, `include "a" (.+1); 0`, `include "a" []; 0`, `include "\ "; 0`, # `include "\(a)"; 0`, and `%::wat` — remain in the scored set: they are parse errors that a # correct front end rejects without ever touching the filesystem. # -------------------------------------------------------------------------------------------- import "a" as foo; import "b" as bar; def fooa: foo::a; [fooa, bar::a, bar::b, foo::a] import "c" as foo; [foo::a, foo::c] include "c"; [a, c] import "data" as $e; import "data" as $d; [$d[].this,$e[].that,$d::d[].this,$e::e[].that]|join(";") import "data" as $a; import "data" as $b; def f: {$a, $b}; f include "shadow1"; e include "shadow1"; include "shadow2"; e import "shadow1" as f; import "shadow2" as f; import "shadow1" as e; [e::e, f::e] import "syntaxerror" as e; . import "test_bind_order" as check; check::check # `modulemeta` reports a module's declared dependencies and definitions. Its three cases take # the module name "c" as input and read tests/modules/c/c.jq from the search path, so they fail # for the same reason as the loader cases above. modulemeta modulemeta | .deps | length modulemeta | .defs | length