diff options
| author | Marc Vertes <mvertes@free.fr> | 2025-07-18 00:07:30 +0200 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2025-07-18 00:07:30 +0200 |
| commit | 1f563060887b979e0138567fb13bef97dc8fd915 (patch) | |
| tree | a5f6cb42ec7c4bf2db5a8d91b3690f5f9dbb6e66 | |
| parent | 3c7bc23285157858b3dc7468e5abbb16e05f31f7 (diff) | |
fix tests
| -rwxr-xr-x | mp | 29 | ||||
| -rw-r--r-- | readme.md | 10 | ||||
| -rwxr-xr-x | tests | 4 |
3 files changed, 22 insertions, 21 deletions
@@ -1,4 +1,4 @@ -#!/usr/bin/awk -f +#!/usr/bin/env awk -f BEGIN { version = "0.1" @@ -10,11 +10,15 @@ BEGIN { " Prints cmd help or general help text.\n" \ " Example: help help\n" - filename = ARGV[1] - ARGV[1] = "/dev/stdin" - tty = 1 - system("test -t 0") + if (str) { + str = ARGV[1] + parse("", v, "", str) + print format(v) + exit ERROR != 0 + } else filename = ARGV[1] + delete ARGV[1] if (filename) parse(filename, v) - prompt("mp-" version " meta parser. Try \"help\".\n") + if (!notty) printf "%s\nmp> ", "mp version " version ". Type \"help\" for help." } { ERROR = "" @@ -41,22 +45,17 @@ BEGIN { } else if ($1 == "parse") { delete v parse($2, v) - } else if (filename && NF) { + } else if (NF) { error("invalid command: " $1) - } else { - parse("", v, "", $0) - print format(v) } - prompt() + if (ERROR) print ERROR > "/dev/stderr" + if (!notty) printf "%smp> ", s } -END { if (ERROR) exit 1 } +END { exit ERROR != "" } function error(s, n) { ERROR = s; return n } -function prompt(s) { - if (ERROR) print ERROR > "/dev/stderr" - if (tty) printf "%s> ", s > "/dev/stderr" -} +function debug(s) { print s > "/dev/stderr" } function scan(infile, line, r) { TOKEN = "" @@ -10,16 +10,16 @@ an array of strings indexed by strings. The JSON types are: true, false, Key elements: -- T: true type -- F: false type -- N: null type +- t: true type +- f: false type +- n: null type - s: string type -- n: number type +- d: number type - a: array type - o: object type - k: key (object only) - v: value (array and object) -- t: type (one of T, F, N, s, n, a, o) +- t: type (one of t, f, n, s, d, a, o) - [0-9]+: index of key or value ## I/O @@ -1,9 +1,11 @@ #!/bin/sh # Test suite for mp. +# Usage: [FAILFAST=1] tests [pattern] +# Example: tests "obj*" run() { [ "$filter" ] && case $1 in ($filter) ;; (*) return; esac - out=$(printf %s "$2" | ./mp 2>&1) + out=$(./mp -v str=1 "$2" 2>&1) [ "$out" = "$3" ] && pass=$((pass + 1)) && return printf "%s FAIL\nWant: '%s'\n Got: '%s'\n" "$1" "$3" "$out" fail=$((fail + 1)) |
