# 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
Project document