def test_conditional_subcommands_from_entry_point_sys_argv(self): """Subcommands from entry-point are properly parsed from sys.argv.""" stdout = io.StringIO() self.patchStdoutAndStderr(stdout=stdout) expected_errors = [ "usage: cloud-init analyze", "usage: cloud-init clean", "usage: cloud-init collect-logs", "usage: cloud-init devel", "usage: cloud-init status", "usage: cloud-init schema", ] conditional_subcommands = [ "analyze", "clean", "collect-logs", "devel", "status", "schema", ] # The cloud-init entrypoint calls main without passing sys_argv for subcommand in conditional_subcommands: with mock.patch("sys.argv", ["cloud-init", subcommand, "-h"]): try: cli.main() except SystemExit as e: self.assertEqual(0, e.code) # exit 2 on proper -h usage for error_message in expected_errors: self.assertIn(error_message, stdout.getvalue())
def test_conditional_subcommands_from_entry_point_sys_argv( self, subcommand, capsys, mock_get_user_data_file, tmpdir): """Subcommands from entry-point are properly parsed from sys.argv.""" expected_error = f"usage: cloud-init {subcommand}" # The cloud-init entrypoint calls main without passing sys_argv with mock.patch("sys.argv", ["cloud-init", subcommand, "-h"]): try: cli.main() except SystemExit as e: assert 0 == e.code # exit 2 on proper -h usage out, _err = capsys.readouterr() assert expected_error in out
def _call_main(self, sysv_args=None): if not sysv_args: sysv_args = ['cloud-init'] try: return cli.main(sysv_args=sysv_args) except SystemExit as e: return e.code
def test_conditional_subcommands_from_entry_point_sys_argv(self): """Subcommands from entry-point are properly parsed from sys.argv.""" stdout = six.StringIO() self.patchStdoutAndStderr(stdout=stdout) expected_errors = [ 'usage: cloud-init analyze', 'usage: cloud-init collect-logs', 'usage: cloud-init devel' ] conditional_subcommands = ['analyze', 'collect-logs', 'devel'] # The cloud-init entrypoint calls main without passing sys_argv for subcommand in conditional_subcommands: with mock.patch('sys.argv', ['cloud-init', subcommand, '-h']): try: cli.main() except SystemExit as e: self.assertEqual(0, e.code) # exit 2 on proper -h usage for error_message in expected_errors: self.assertIn(error_message, stdout.getvalue())