From f36fb92b8fca2395521637afaa40f2959cd3bd18 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Tue, 1 Nov 2011 12:34:45 -0500 Subject: [PATCH] Add a test for and fix behavior with bogus arguments We should have been using %s, not %r here. --- celery/bin/base.py | 2 +- celery/tests/test_bin/__init__.py | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/celery/bin/base.py b/celery/bin/base.py index 9bf7319b6db..2d550b4b7e9 100644 --- a/celery/bin/base.py +++ b/celery/bin/base.py @@ -108,7 +108,7 @@ def handle_argv(self, prog_name, argv): options, args = self.parse_options(prog_name, argv) if not self.supports_args and args: sys.stderr.write( - "\nUnrecognized command line arguments: %r\n" % ( + "\nUnrecognized command line arguments: %s\n" % ( ", ".join(args), )) sys.stderr.write("\nTry --help?\n") sys.exit(1) diff --git a/celery/tests/test_bin/__init__.py b/celery/tests/test_bin/__init__.py index 109795888b1..d73ea95dc32 100644 --- a/celery/tests/test_bin/__init__.py +++ b/celery/tests/test_bin/__init__.py @@ -18,12 +18,13 @@ class MyApp(object): class MockCommand(Command): + mock_args = ("arg1", "arg2", "arg3") def parse_options(self, prog_name, arguments): options = Object() options.foo = "bar" options.prog_name = prog_name - return options, (10, 20, 30) + return options, self.mock_args def run(self, *args, **kwargs): return args, kwargs @@ -43,14 +44,20 @@ def test_run_interface(self): def test_execute_from_commandline(self): cmd = MockCommand() args1, kwargs1 = cmd.execute_from_commandline() # sys.argv - self.assertTupleEqual(args1, (10, 20, 30)) + self.assertTupleEqual(args1, cmd.mock_args) self.assertDictContainsSubset({"foo": "bar"}, kwargs1) self.assertTrue(kwargs1.get("prog_name")) args2, kwargs2 = cmd.execute_from_commandline(["foo"]) # pass list - self.assertTupleEqual(args2, (10, 20, 30)) + self.assertTupleEqual(args2, cmd.mock_args) self.assertDictContainsSubset({"foo": "bar", "prog_name": "foo"}, kwargs2) + def test_with_bogus_args(self): + cmd = MockCommand() + cmd.supports_args = False + self.assertRaises(SystemExit, + cmd.execute_from_commandline, argv=["--bogus"]) + def test_with_custom_config_module(self): prev = os.environ.pop("CELERY_CONFIG_MODULE", None) try: