import mock try: import unittest2 as unittest except ImportError: import unittest import six from tests.helpers import load_bin cli = load_bin("pungi-koji") class PungiKojiTestCase(unittest.TestCase): @mock.patch('sys.argv', new=['prog', '--version']) @mock.patch('sys.stderr', new_callable=six.StringIO) @mock.patch('sys.stdout', new_callable=six.StringIO) @mock.patch('pungi_cli_fake_pungi-koji.get_full_version', return_value='a-b-c.111') def test_version(self, get_full_version, stdout, stderr): with self.assertRaises(SystemExit): cli.main() # Python 2.7 prints the version to stderr, 3.4+ to stdout. if six.PY3: self.assertMultiLineEqual(stdout.getvalue(), 'a-b-c.111\n') else: self.assertMultiLineEqual(stderr.getvalue(), 'a-b-c.111\n')