Просмотр исходного кода

Add a test for and fix behavior with bogus arguments

We should have been using %s, not %r here.
Dan McGee 13 лет назад
Родитель
Сommit
f36fb92b8f
2 измененных файлов с 11 добавлено и 4 удалено
  1. 1 1
      celery/bin/base.py
  2. 10 3
      celery/tests/test_bin/__init__.py

+ 1 - 1
celery/bin/base.py

@@ -108,7 +108,7 @@ class Command(object):
         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)

+ 10 - 3
celery/tests/test_bin/__init__.py

@@ -18,12 +18,13 @@ APP = MyApp()  # <-- Used by test_with_custom_app
 
 
 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 @@ class test_Command(AppCase):
     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: