소스 검색

Stop `fig run` starting everything when a service has no links

This was thanks to the semantics of project.up(), which starts everything
if you pass it an empty list of service names. (That logic should
probably be moved out to main.py.)

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 11 년 전
부모
커밋
944e15fa65
2개의 변경된 파일14개의 추가작업 그리고 7개의 파일을 삭제
  1. 8 5
      fig/cli/main.py
  2. 6 2
      tests/integration/cli_test.py

+ 8 - 5
fig/cli/main.py

@@ -220,11 +220,14 @@ class TopLevelCommand(Command):
         service = self.project.get_service(options['SERVICE'])
 
         if not options['--no-deps']:
-            self.project.up(
-                service_names=service.get_linked_names(),
-                start_links=True,
-                recreate=False
-            )
+            deps = service.get_linked_names()
+
+            if len(deps) > 0:
+                self.project.up(
+                    service_names=deps,
+                    start_links=True,
+                    recreate=False,
+                )
 
         tty = True
         if options['-d'] or options['-T'] or not sys.stdin.isatty():

+ 6 - 2
tests/integration/cli_test.py

@@ -103,9 +103,13 @@ class CLITestCase(DockerClientTestCase):
 
 
     @patch('dockerpty.start')
-    def test_run_with_links(self, mock_stdout):
-        mock_stdout.fileno = lambda: 1
+    def test_run_service_without_links(self, mock_stdout):
+        self.command.base_dir = 'tests/fixtures/links-figfile'
+        self.command.dispatch(['run', 'console', '/bin/true'], None)
+        self.assertEqual(len(self.command.project.containers()), 0)
 
+    @patch('dockerpty.start')
+    def test_run_service_with_links(self, mock_stdout):
         self.command.base_dir = 'tests/fixtures/links-figfile'
         self.command.dispatch(['run', 'web', '/bin/true'], None)
         db = self.command.project.get_service('db')