#! /usr/bin/env dbqn "usage: exe name [opts --] [tests]"!1≤≠•args # BQN is called with the first argument, or all up to the last -- files‿exe ← •args ⊔˜ 2 ∾˜ ⊑◶⟨1⌾⊑,«⊸(⊣-<)⟩ ∨`⌾⌽ •args≡¨<"--" files ↩ ⟨"prim"⟩⍟(0=≠) files Include ← ("! %"≢3⊸↑) ∧ (0<≠)◶0‿('#'≠⊑) Cases ← Include¨⊸/ · •FLines "cases/"∾∾⟜".bqn" c ← ∾ Cases¨ files Trim ← ((∨`∧∨`⌾⌽)' '⊸≠)⊸/ e‿i ← <˘⍉> ('%'⊸= (∨´⊣)◶⟨"1"≍○<⊢, Trim¨(+`-2⊸×)⊸⊔⟩ ⊢)¨ c lf ← @+10 code‿r‿err ← {inp⇐∾∾⟜lf¨i∾⟨""⟩} •SH exe err ! 0≡code rv ← (•BQN¨e) = (•BQN "⟨"∾r∾"⟩") np ← ⍕≠c •Out (0<≠)◶⟨ "All "∾np∾" passed!"˙ (⍕≠)∾" of "∾np∾" failed:"∾·(∾lf⊸∾¨)⊏⟜c ⟩ /1≢¨rv