Skip to content

Commit a63f75f

Browse files
committed
schema_salad/tests: add tests for cli args testing: --version, empty args
- fix return condition in main()
1 parent 04c6784 commit a63f75f

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

schema_salad/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def main(argsl=None): # type: (List[str]) -> int
8787

8888
if args.version is None and args.schema is None:
8989
print('%s: error: too few arguments' % sys.argv[0])
90-
exit(0)
90+
return 1
9191

9292
if args.quiet:
9393
_logger.setLevel(logging.WARN)

schema_salad/tests/test_cli_args.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import unittest
2+
import sys
3+
4+
import schema_salad.main as cli_parser
5+
6+
""" for capturing print() output """
7+
from contextlib import contextmanager
8+
from StringIO import StringIO
9+
10+
@contextmanager
11+
def captured_output():
12+
new_out, new_err = StringIO(), StringIO()
13+
old_out, old_err = sys.stdout, sys.stderr
14+
try:
15+
sys.stdout, sys.stderr = new_out, new_err
16+
yield sys.stdout, sys.stderr
17+
finally:
18+
sys.stdout, sys.stderr = old_out, old_err
19+
20+
21+
""" test different sets of command line arguments"""
22+
class ParseCliArgs(unittest.TestCase):
23+
24+
def test_version(self):
25+
args = [["--version"], ["-v"]]
26+
for arg in args:
27+
with captured_output() as (out, err):
28+
cli_parser.main(arg)
29+
30+
response = out.getvalue().strip() # capture output and strip newline
31+
self.assertTrue("Current version" in response)
32+
33+
def test_empty_input(self):
34+
# running schema_salad tool wihtout any args
35+
args = []
36+
with captured_output() as (out, err):
37+
cli_parser.main(args)
38+
39+
response = out.getvalue().strip()
40+
self.assertTrue("error: too few arguments" in response)

0 commit comments

Comments
 (0)