From ab5e2d2ed3500ac4f3738e4d3dcf26e723555c7a Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 5 Oct 2025 10:11:17 +0900 Subject: [PATCH] added a new test case using an exterally downloaded script --- README.md | 1 + t/JSON.awk.in | 28 ++++++++++++++++++++++++++++ t/JSON.awk.out | 16 ++++++++++++++++ t/Makefile.am | 1 + t/Makefile.in | 1 + t/h-003.hawk | 16 ++++++++++++++-- 6 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 t/JSON.awk.in create mode 100644 t/JSON.awk.out diff --git a/README.md b/README.md index fc33abe0..b029bc4d 100644 --- a/README.md +++ b/README.md @@ -274,6 +274,7 @@ The `@pragma` keyword enables you to modify Hawk’s behavior. You can place a p | entry | global | function name | | change the program entry point | | implicit | file | on, off | on | allow undeclared variables | | multilinestr | file | on, off | off | allow a multiline string literal without continuation | +| rwpipe | file | on, off | on | allow the two-way pipe operator `|&` | | striprecspc | global | on, off | off | removes leading and trailing blank fields in splitting a record if FS is a regular expression mathcing all spaces | | stripstrspc | global | on, off | on | trim leading and trailing spaces when converting a string to a number | | numstrdetect | global | on, off | on | trim leading and trailing spaces when converting a string to a number | diff --git a/t/JSON.awk.in b/t/JSON.awk.in new file mode 100644 index 00000000..05f9c374 --- /dev/null +++ b/t/JSON.awk.in @@ -0,0 +1,28 @@ +{ + "first_name": "John", + "last_name": "Smith", + "is_alive": true, + "age": 27, + "address": { + "street_address": "21 2nd Street", + "city": "New York", + "state": "NY", + "postal_code": "10021-3100" + }, + "phone_numbers": [ + { + "type": "home", + "number": "212 555-1234" + }, + { + "type": "office", + "number": "646 555-4567" + } + ], + "children": [ + "Catherine", + "Thomas", + "Trevor" + ], + "spouse": null +} diff --git a/t/JSON.awk.out b/t/JSON.awk.out new file mode 100644 index 00000000..feb9ee95 --- /dev/null +++ b/t/JSON.awk.out @@ -0,0 +1,16 @@ +["first_name"] "John" +["last_name"] "Smith" +["is_alive"] true +["age"] 27 +["address","street_address"] "21 2nd Street" +["address","city"] "New York" +["address","state"] "NY" +["address","postal_code"] "10021-3100" +["phone_numbers",0,"type"] "home" +["phone_numbers",0,"number"] "212 555-1234" +["phone_numbers",1,"type"] "office" +["phone_numbers",1,"number"] "646 555-4567" +["children",0] "Catherine" +["children",1] "Thomas" +["children",2] "Trevor" +["spouse"] null diff --git a/t/Makefile.am b/t/Makefile.am index 94538c30..ce5d1819 100644 --- a/t/Makefile.am +++ b/t/Makefile.am @@ -26,6 +26,7 @@ EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) tap.inc err.sh \ journal-toc.hawk journal-toc.in journal-toc.out journal-toc-html.out \ bibtex-to-html.hawk bibtex-to-html.out \ fs-test.hawk fs-test.in fs-test.out \ + JSON.awk.in JSON.awk.out \ two-way-pipe.hawk two-way-pipe.out check_PROGRAMS = t-001 t-002 t-003 t-004 t-005 t-006 t-007 t-008 t-009 diff --git a/t/Makefile.in b/t/Makefile.in index 52f8f821..00acba3f 100644 --- a/t/Makefile.in +++ b/t/Makefile.in @@ -650,6 +650,7 @@ EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) tap.inc err.sh \ journal-toc.hawk journal-toc.in journal-toc.out journal-toc-html.out \ bibtex-to-html.hawk bibtex-to-html.out \ fs-test.hawk fs-test.in fs-test.out \ + JSON.awk.in JSON.awk.out \ two-way-pipe.hawk two-way-pipe.out t_001_SOURCES = t-001.c tap.h diff --git a/t/h-003.hawk b/t/h-003.hawk index 410d2b6b..9bb2cf23 100644 --- a/t/h-003.hawk +++ b/t/h-003.hawk @@ -60,7 +60,7 @@ function run_test (x, more_opts, in_name, set_out_name, out_name) cmd=sprintf("%s %s -f %s/%s.hawk --modlibdirs=%s %s > %s", ARGV[0], more_opts, TDIR, x, hawk::modlibdirs(), inf, outf); } ##print cmd; - system (cmd); + system(cmd); same = are_files_identical(expf, outf); if (same <= 0) @@ -75,6 +75,17 @@ function run_test (x, more_opts, in_name, set_out_name, out_name) } } +function run_github_step_JSON_awk() { + @local url, tgt, tgt_hawk; + url = "https://raw.githubusercontent.com/step-/JSON.awk/refs/heads/master/JSON.awk"; + tgt = sprintf("%s.%d", "JSON.awk", sys::getpid()); + tgt_hawk = sprintf("%s/%s.hawk", TDIR, tgt); + + system(sprintf("curl -k -o %s %s", tgt_hawk, url)); + run_test(tgt, "", "JSON.awk", 0, "JSON.awk"); + sys::unlink(tgt_hawk); +} + function main() { run_test("journal-toc", "", @nil, 0, @nil); @@ -83,6 +94,7 @@ function main() run_test("fs-test", "", "fs-test", 0, "fs-test"); run_test("two-way-pipe", "", @nil, 0, "two-way-pipe"); - tap_end (); + run_github_step_JSON_awk(); + tap_end(); }