hwylterm/tests/cli/tester.nim

86 lines
2.1 KiB
Nim
Raw Normal View History

2025-01-26 13:31:34 -06:00
import std/[os, unittest]
2025-01-13 17:13:22 -06:00
import ./lib
2025-01-26 13:31:34 -06:00
if commandLineParams().len == 0:
preCompileTestModules()
2025-01-24 17:42:29 -06:00
2025-01-13 17:13:22 -06:00
suite "hwylcli":
2025-01-23 19:25:09 -06:00
okWithArgs(
"posBasic",
"a b c d e",
"""args=@["a", "b", "c", "d", "e"]"""
)
okWithArgs(
"posFirst",
"a b c d e",
"""first=@["a", "b", "c"], second=d, third=e"""
)
failWithArgs(
"posFirst",
"a b",
"error missing positional args, got: 2, expected at least: 3",
)
okWithArgs("posLast", "a b", """first=a, second=b, third=@[]""")
okWithArgs("posNoMulti", "5 b c", """first=5, second=b, third=c""")
failWithArgs("posNoMulti", "5 b c d", """error unexepected positional args, got: 4, expected: 3""")
okWithArgs("enumFlag","--color red", "color=red")
failWithArgs("enumFlag","--color black", "error failed to parse value for color as enum: black expected one of: red,blue,green")
okWithArgs("subcommands", "a b c","""input=b outputs=@["c"]""")
failWithArgs("subcommands", "b b c","""error got unexpected positionals args: b c""")
okWithArgs("subcommands","b --input in --outputs out1 --outputs out2", """input=in outputs=@["out1", "out2"]""")
okWithArgs("posFirst", "--help",
2025-01-13 17:13:22 -06:00
"""usage:
positionals first... second third [flags]
flags:
-h --help show this help""")
2025-01-23 19:25:09 -06:00
2025-01-24 17:42:29 -06:00
okWithArgs("flagSettings", "--help",
"""usage:
flag-settings [flags]
flags:
--input flag with default hidden
--count a count var with default (0)
-h --help show this help""")
okWithArgs("cliCfgSettingHideDefault", "--help",
"""usage:
setting-hide-default [flags]
flags:
--input flag with default hidden
--count a count var with default
-h --help show this help""")
2025-01-25 15:23:15 -06:00
okWithArgs("customHelp", "--help",
"""usage:
custom-help [flags]
flags:
--input
input (input.txt)
--output
output (output.txt)
-h --help
show this help""")
2025-01-26 13:31:34 -06:00
okWithArgs("subHooks", "a", """preSub from root!
inside sub 'a'
postSub from root!""")
okWithArgs("subHooks", "b a", """preSub from root!
inside sub 'b a'
postSub from root!
inside sub 'b'""")
okWithArgs("subHooks", "c a","""preSub from 'c'!
inside sub 'c a'
postSub from root!
inside sub c""")