aboutsummaryrefslogtreecommitdiffstats
path: root/tests/regex-gen.sh
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-06-03 20:16:00 +0200
committerJonas Maier <jonas@x77.dev>2026-06-03 20:19:16 +0200
commit38e8e7bf000aaa1f7f6be15d72be35d6dc585271 (patch)
tree09b08f221e6bb2a64767a4e1e77c63f246cd0a43 /tests/regex-gen.sh
parent5ce263b586c5047d16ee93cc53bc3bce6f7ff12c (diff)
downloadpish-38e8e7bf000aaa1f7f6be15d72be35d6dc585271.tar.gz
shitton of test cases that codex generated
Diffstat (limited to 'tests/regex-gen.sh')
-rwxr-xr-xtests/regex-gen.sh41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/regex-gen.sh b/tests/regex-gen.sh
new file mode 100755
index 0000000..8e2f0c8
--- /dev/null
+++ b/tests/regex-gen.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+cd "$(dirname "$0")"
+
+generate() {
+cat <<"EOF"
+//! Generated by `tests/regex-gen.sh` -- do not modify directly.
+
+mod common;
+use common::regex;
+
+EOF
+
+i=0
+while IFS= read -r line; do
+ i=$((i + 1))
+
+ pattern=$(jq -r '.regex' <<<"$line")
+
+ echo "#[test]"
+ echo "fn r${i}() {"
+
+ echo " let re = regex(r#\"${pattern}\"#);"
+
+ jq -r --arg pat "$pattern" '
+ .accepts[]
+ | " assert!(re.matches(r#\"\(.)\"#), \"pattern: \($pat) | expected accept: \(. )\");"
+ ' <<<"$line"
+
+ jq -r --arg pat "$pattern" '
+ .rejects[]
+ | " assert!(!re.matches(r#\"\(.)\"#), \"pattern: \($pat) | expected reject: \(. )\");"
+ ' <<<"$line"
+
+ echo "}"
+ echo
+done
+}
+
+generate < regex-data.json > regex.rs