|
| 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