hwylterm/tests/cli/tester.nim

117 lines
2.4 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-26 14:17:36 -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""")
2025-01-23 19:25:09 -06:00
failWithArgs(
2025-01-26 14:17:36 -06:00
"posFirst", "a b", "error missing positional args, got: 2, expected at least: 3"
2025-01-23 19:25:09 -06:00
)
okWithArgs("posLast", "a b", """first=a, second=b, third=@[]""")
okWithArgs("posNoMulti", "5 b c", """first=5, second=b, third=c""")
2025-01-26 14:17:36 -06:00
failWithArgs(
"posNoMulti", "5 b c d",
"""error unexepected positional args, got: 4, expected: 3""",
)
2025-01-23 19:25:09 -06:00
2025-01-26 14:17:36 -06:00
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",
)
2025-01-23 19:25:09 -06:00
2025-01-26 14:17:36 -06:00
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"]""",
)
2025-01-23 19:25:09 -06:00
2025-01-27 11:52:53 -06:00
okWithArgs("subcommands", "ccccc", """no flags :)""")
okWithArgs("subcommands", "c", """no flags :)""")
2025-01-26 14:17:36 -06:00
okWithArgs(
"posFirst", "--help",
"""
usage:
2025-01-13 17:13:22 -06:00
positionals first... second third [flags]
flags:
2025-01-26 14:17:36 -06:00
-h --help show this help
""",
)
2025-01-24 17:42:29 -06:00
2025-01-26 14:17:36 -06:00
okWithArgs(
"flagSettings", "--help",
"""
usage:
2025-01-24 17:42:29 -06:00
flag-settings [flags]
flags:
--input flag with default hidden
--count a count var with default (0)
2025-01-26 14:17:36 -06:00
-h --help show this help
""",
)
2025-01-24 17:42:29 -06:00
2025-01-26 14:17:36 -06:00
okWithArgs(
"cliCfgSettingHideDefault", "--help",
"""
usage:
2025-01-24 17:42:29 -06:00
setting-hide-default [flags]
flags:
--input flag with default hidden
--count a count var with default
2025-01-26 14:17:36 -06:00
-h --help show this help
""",
)
2025-01-24 17:42:29 -06:00
2025-01-26 14:17:36 -06:00
okWithArgs(
"customHelp", "--help",
"""
usage:
2025-01-25 15:23:15 -06:00
custom-help [flags]
flags:
--input
input (input.txt)
--output
output (output.txt)
-h --help
2025-01-26 14:17:36 -06:00
show this help
""",
)
okWithArgs(
"subHooks", "a",
"""
preSub from root!
2025-01-26 13:31:34 -06:00
inside sub 'a'
2025-01-26 14:17:36 -06:00
postSub from root!
""",
)
okWithArgs(
"subHooks", "b a",
"""
preSub from root!
2025-01-26 13:31:34 -06:00
inside sub 'b a'
postSub from root!
2025-01-26 14:17:36 -06:00
inside sub 'b'
""",
)
okWithArgs(
"subHooks", "c a",
"""
preSub from 'c'!
2025-01-26 13:31:34 -06:00
inside sub 'c a'
postSub from root!
2025-01-26 14:17:36 -06:00
inside sub c
""",
)
2025-01-28 15:19:15 -06:00
okWithArgs(
"inferShort", "-i input -o output","""input=input, output=output, count=0, nancy=false, ignore=false"""
)