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 <aanand.prasad@gmail.com>
This commit is contained in:
Aanand Prasad 2014-07-02 11:28:02 +01:00
parent d04b1724ec
commit 944e15fa65
2 changed files with 14 additions and 7 deletions

View File

@ -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():

View File

@ -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')