diff --git a/buildozer/scripts/client.py b/buildozer/scripts/client.py index e30a9b4c5..fcf41ef2d 100644 --- a/buildozer/scripts/client.py +++ b/buildozer/scripts/client.py @@ -14,9 +14,10 @@ def main(): except BuildozerCommandException: # don't show the exception in the command line. The log already show # the command failed. - pass + sys.exit(1) except BuildozerException as error: Buildozer().error('%s' % error) + sys.exit(1) if __name__ == '__main__': main() diff --git a/tests/scripts/__init__.py b/tests/scripts/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/scripts/test_client.py b/tests/scripts/test_client.py new file mode 100644 index 000000000..4ab189bf7 --- /dev/null +++ b/tests/scripts/test_client.py @@ -0,0 +1,26 @@ +import sys +import mock +import unittest +from buildozer import BuildozerCommandException +from buildozer.scripts import client + + +class TestClient(unittest.TestCase): + + def test_run_command_called(self): + """ + Checks Buildozer.run_command() is being called with arguments from command line. + """ + with mock.patch('buildozer.Buildozer.run_command') as m_run_command: + client.main() + assert m_run_command.call_args_list == [mock.call(sys.argv[1:])] + + def test_exit_code(self): + """ + Makes sure the CLI exits with error code on BuildozerCommandException, refs #674. + """ + with mock.patch('buildozer.Buildozer.run_command') as m_run_command: + m_run_command.side_effect = BuildozerCommandException() + with self.assertRaises(SystemExit) as context: + client.main() + assert context.exception.code == 1