--- /dev/null
+from typing import Optional
+from pathlib import Path
+
+from proto.infer import get_parser
+from proto import command
+
+def fun(path: Optional[Path] = None):
+ if path is None:
+ contents = "mock stdin"
+ else:
+ with open(path, "r") as fp:
+ contents = fp.read()
+ return f"mock stdout: {contents}"
+
+def test_command_function():
+ cmd = command(fun)
+ cmd.parse(args=[])
+ assert fun(None) == cmd.run()
+
+def test_command_decorator():
+ @command
+ def cow_says(sound: Optional[str]=None):
+ return sound if sound else "Moo!"
+ cow_says.parse(args=[])
+ assert "Moo!" in cow_says.run()
+
+def test_parser_only():
+ parser = get_parser(fun)
+ args = vars(parser.parse_args(args=[]))
+ assert "mock stdin" in fun(**args)
\ No newline at end of file