浏览代码

Fixes #602 Allowing `help $cmd` with no figfile

Signed-off-by: Michael A. Smith <[email protected]>
Michael A. Smith 11 年之前
父节点
当前提交
782a46fd60
共有 3 个文件被更改,包括 15 次插入0 次删除
  1. 5 0
      fig/cli/command.py
  2. 0 0
      tests/fixtures/no-figfile/.gitignore
  3. 10 0
      tests/integration/cli_test.py

+ 5 - 0
fig/cli/command.py

@@ -42,6 +42,11 @@ class Command(DocoptCommand):
                 raise errors.ConnectionErrorGeneric(self.get_client().base_url)
 
     def perform_command(self, options, handler, command_options):
+        if options['COMMAND'] == 'help':
+            # Skip looking up the figfile.
+            handler(None, command_options)
+            return
+
         explicit_config_path = options.get('--file') or os.environ.get('FIG_FILE')
         project = self.get_project(
             self.get_config_path(explicit_config_path),

+ 0 - 0
tests/fixtures/no-figfile/.gitignore


+ 10 - 0
tests/integration/cli_test.py

@@ -25,6 +25,16 @@ class CLITestCase(DockerClientTestCase):
     def project(self):
         return self.command.get_project(self.command.get_config_path())
 
+    def test_help(self):
+        old_base_dir = self.command.base_dir
+        self.command.base_dir = 'tests/fixtures/no-figfile'
+        with self.assertRaises(SystemExit) as exc_context:
+            self.command.dispatch(['help', 'up'], None)
+            self.assertIn('Usage: up [options] [SERVICE...]', str(exc_context.exception))
+        # self.project.kill() fails during teardown
+        # unless there is a figfile.
+        self.command.base_dir = old_base_dir
+
     @patch('sys.stdout', new_callable=StringIO)
     def test_ps(self, mock_stdout):
         self.project.get_service('simple').create_container()