From d8660aa0ecd46dc0af99e48714149b4f7b00c8f1 Mon Sep 17 00:00:00 2001 From: refaktor Date: Mon, 7 Sep 2026 10:13:18 +0200 Subject: [PATCH] fixing internal tests, challenging runtime behaviour / design, cli-parse dialect --- internal/basics.rye | 6 +++++ internal/cli-parse/test_basic.rye | 4 +-- internal/cli-parse/test_cli_integration.rye | 24 ++++++++++++++++- internal/cli-parse/test_help.rye | 6 ++--- internal/cli-parse/test_subcommands.rye | 30 ++++++++++----------- internal/testing_quirks.rye | 5 ++++ 6 files changed, 54 insertions(+), 21 deletions(-) diff --git a/internal/basics.rye b/internal/basics.rye index 48ba81f5..352ab0e1 100644 --- a/internal/basics.rye +++ b/internal/basics.rye @@ -11,6 +11,12 @@ section "Printing functions" stdout { print 123 } "123" + newline } group "prn" + ; added: block printing has no trailing space + stdout { print [ 1 2 3 ] } "1 2 3\n" + stdout { print [ 1 ] } "1\n" + stdout { print [] } "\n" + stdout { prn [ 1 2 ] } "1 2" + stdout { prns [ 1 2 ] } "1 2 " mold\nowrap ?prn { { object } } { diff --git a/internal/cli-parse/test_basic.rye b/internal/cli-parse/test_basic.rye index d48bc9f7..e90565e5 100644 --- a/internal/cli-parse/test_basic.rye +++ b/internal/cli-parse/test_basic.rye @@ -33,12 +33,12 @@ assert\display "integer option provided" { ; Positional argument assert\display "positional argument" { - ( parse-args { "file.txt" } { file: string required } ) -> "_file" + ( parse-args { "file.txt" } { file: string required } ) -> "file" } "file.txt" ; Multiple positional arguments (many) assert\display "multiple positional arguments" { - length? ( parse-args { "a.txt" "b.txt" "c.txt" } { files: string many } ) -> "_files" + length? ( parse-args { "a.txt" "b.txt" "c.txt" } { files: string many } ) -> "files" } 3 print "" diff --git a/internal/cli-parse/test_cli_integration.rye b/internal/cli-parse/test_cli_integration.rye index c7191fc7..bbbd3440 100644 --- a/internal/cli-parse/test_cli_integration.rye +++ b/internal/cli-parse/test_cli_integration.rye @@ -27,7 +27,29 @@ assert\display "full spec positional value" { -v|verbose flag -o|output string input: string - } ) -> "_input" + } ) -> "input" } "in.txt" print "" + + +assert\display "my test 1" { + ; Minimal variant: imgtool convert + spec2: { + program "imgtool" + -v|verbose flag + -q|quality integer optional 85 doc "JPEG quality" + input: string required doc "Input image" + output: string optional "out.jpg" doc "Output image" + } + + argv2: { "-v" "-q" 92 "in.png" "out.jpg" } + args2: parse-args argv2 spec2 + + [ ( args2 -> "verbose" ) ; true + ( args2 -> "quality" ) ; 92 + ( args2 |probe -> "input" ) ; "in.png" + ( args2 |probe -> "output" ) ; "out.jpg" + ] + +} [ "" "" ] diff --git a/internal/cli-parse/test_help.rye b/internal/cli-parse/test_help.rye index 0f8b2dfa..9adcf759 100644 --- a/internal/cli-parse/test_help.rye +++ b/internal/cli-parse/test_help.rye @@ -26,8 +26,8 @@ assert\display "help contains subcommand" { contains generate-help { program "git-like" subcommand { - init { doc "Initialize repo" } - clone { doc "Clone repo" } + 'init { doc "Initialize repo" } + 'clone { doc "Clone repo" } } } "init" } true @@ -40,7 +40,7 @@ assert\display "help for subcommand" { 'remote { doc "Manage remotes" subcommand { - add { doc "Add a remote" } + 'add { doc "Add a remote" } } } } diff --git a/internal/cli-parse/test_subcommands.rye b/internal/cli-parse/test_subcommands.rye index 235db0d3..b37204f6 100644 --- a/internal/cli-parse/test_subcommands.rye +++ b/internal/cli-parse/test_subcommands.rye @@ -3,13 +3,13 @@ print "## Subcommand Tests" ; Basic subcommand assert\display "basic subcommand" { - ( parse-args { init --force } { + ( parse-args { init } { -v|verbose flag subcommand { - init { -f|force flag doc "Force initialization" } - build { -o|output string doc "Output directory" } + 'init { -f|force flag doc "Force initialization" } + 'build { -o|output string doc "Output directory" } } - } ) -> "command" + } ) |probe -> "command" } "init" ; Subcommand force flag @@ -17,8 +17,8 @@ assert\display "subcommand flag" { ( parse-args { init --force } { -v|verbose flag subcommand { - init { -f|force flag } - build { -o|output string } + 'init { -f|force flag } + 'build { -o|output string } } } ) -> "force" } true @@ -28,8 +28,8 @@ assert\display "subcommand with global flag" { ( parse-args { --verbose init } { -v|verbose flag subcommand { - init { -f|force flag } - build { -o|output string } + 'init { -f|force flag } + 'build { -o|output string } } } ) -> "verbose" } true @@ -41,11 +41,11 @@ assert\display "nested subcommand" { 'remote { doc "Manage remotes" subcommand { - add { + 'add { name: string required doc "Remote name" url: string required doc "Remote URL" } - remove { + 'remove { name: string required } } @@ -60,14 +60,14 @@ assert\display "nested subcommand positional args" { subcommand { 'remote { subcommand { - add { + 'add { name: string required url: string required } } } } - } ) -> "_name" + } ) |probe -> "name" } "origin" ; Command path length @@ -76,7 +76,7 @@ assert\display "command path length" { subcommand { 'remote { subcommand { - add { name: string required url: string required } + 'add { name: string required url: string required } } } } @@ -88,8 +88,8 @@ assert\display "string subcommand from CLI" { ( parse-args { "init" "--force" } { -v|verbose flag subcommand { - init { -f|force flag } - build { -o|output string } + 'init { -f|force flag } + 'build { -o|output string } } } ) -> "command" } "init" diff --git a/internal/testing_quirks.rye b/internal/testing_quirks.rye index e908f2da..48dfd599 100644 --- a/internal/testing_quirks.rye +++ b/internal/testing_quirks.rye @@ -855,6 +855,11 @@ assert\display "prns prints with space" { capture-stdout { prns "hello" } } "hello " +; added: capture block printing spacing (no trailing space) +assert\display "block print spacing - no trailing space" { + capture-stdout { print [ 1 2 ] } +} "1 2\n" + ; ══════════════════════════════════════════════════════════════════════════════ ; 30. MATH CONTEXT QUIRKS ; ══════════════════════════════════════════════════════════════════════════════