|
|
@@ -474,9 +474,9 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['up', '-d'])
|
|
|
result = self.dispatch(['ps'])
|
|
|
|
|
|
- self.assertIn('multiplecomposefiles_simple_1', result.stdout)
|
|
|
- self.assertIn('multiplecomposefiles_another_1', result.stdout)
|
|
|
- self.assertNotIn('multiplecomposefiles_yetanother_1', result.stdout)
|
|
|
+ assert 'multiplecomposefiles_simple_1' in result.stdout
|
|
|
+ assert 'multiplecomposefiles_another_1' in result.stdout
|
|
|
+ assert 'multiplecomposefiles_yetanother_1' not in result.stdout
|
|
|
|
|
|
def test_ps_alternate_composefile(self):
|
|
|
config_path = os.path.abspath(
|
|
|
@@ -487,9 +487,37 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['-f', 'compose2.yml', 'up', '-d'])
|
|
|
result = self.dispatch(['-f', 'compose2.yml', 'ps'])
|
|
|
|
|
|
- self.assertNotIn('multiplecomposefiles_simple_1', result.stdout)
|
|
|
- self.assertNotIn('multiplecomposefiles_another_1', result.stdout)
|
|
|
- self.assertIn('multiplecomposefiles_yetanother_1', result.stdout)
|
|
|
+ assert 'multiplecomposefiles_simple_1' not in result.stdout
|
|
|
+ assert 'multiplecomposefiles_another_1' not in result.stdout
|
|
|
+ assert 'multiplecomposefiles_yetanother_1' in result.stdout
|
|
|
+
|
|
|
+ def test_ps_services_filter_option(self):
|
|
|
+ self.base_dir = 'tests/fixtures/ps-services-filter'
|
|
|
+ image = self.dispatch(['ps', '--services', '--filter', 'source=image'])
|
|
|
+ build = self.dispatch(['ps', '--services', '--filter', 'source=build'])
|
|
|
+ all_services = self.dispatch(['ps', '--services'])
|
|
|
+
|
|
|
+ assert 'with_build' in all_services.stdout
|
|
|
+ assert 'with_image' in all_services.stdout
|
|
|
+ assert 'with_build' in build.stdout
|
|
|
+ assert 'with_build' not in image.stdout
|
|
|
+ assert 'with_image' in image.stdout
|
|
|
+ assert 'with_image' not in build.stdout
|
|
|
+
|
|
|
+ def test_ps_services_filter_status(self):
|
|
|
+ self.base_dir = 'tests/fixtures/ps-services-filter'
|
|
|
+ self.dispatch(['up', '-d'])
|
|
|
+ self.dispatch(['pause', 'with_image'])
|
|
|
+ paused = self.dispatch(['ps', '--services', '--filter', 'status=paused'])
|
|
|
+ stopped = self.dispatch(['ps', '--services', '--filter', 'status=stopped'])
|
|
|
+ running = self.dispatch(['ps', '--services', '--filter', 'status=running'])
|
|
|
+
|
|
|
+ assert 'with_build' not in stopped.stdout
|
|
|
+ assert 'with_image' not in stopped.stdout
|
|
|
+ assert 'with_build' not in paused.stdout
|
|
|
+ assert 'with_image' in paused.stdout
|
|
|
+ assert 'with_build' in running.stdout
|
|
|
+ assert 'with_image' in running.stdout
|
|
|
|
|
|
def test_pull(self):
|
|
|
result = self.dispatch(['pull'])
|
|
|
@@ -518,23 +546,26 @@ class CLITestCase(DockerClientTestCase):
|
|
|
'image library/nonexisting-image:latest not found' in result.stderr or
|
|
|
'pull access denied for nonexisting-image' in result.stderr)
|
|
|
|
|
|
+ def test_pull_with_quiet(self):
|
|
|
+ assert self.dispatch(['pull', '--quiet']).stderr == ''
|
|
|
+ assert self.dispatch(['pull', '--quiet']).stdout == ''
|
|
|
+
|
|
|
def test_pull_with_parallel_failure(self):
|
|
|
result = self.dispatch([
|
|
|
'-f', 'ignore-pull-failures.yml', 'pull', '--parallel'],
|
|
|
returncode=1
|
|
|
)
|
|
|
|
|
|
- self.assertRegexpMatches(result.stderr, re.compile('^Pulling simple', re.MULTILINE))
|
|
|
- self.assertRegexpMatches(result.stderr, re.compile('^Pulling another', re.MULTILINE))
|
|
|
- self.assertRegexpMatches(result.stderr,
|
|
|
- re.compile('^ERROR: for another .*does not exist.*', re.MULTILINE))
|
|
|
- self.assertRegexpMatches(result.stderr,
|
|
|
- re.compile('''^(ERROR: )?(b')?.* nonexisting-image''',
|
|
|
- re.MULTILINE))
|
|
|
-
|
|
|
- def test_pull_with_quiet(self):
|
|
|
- assert self.dispatch(['pull', '--quiet']).stderr == ''
|
|
|
- assert self.dispatch(['pull', '--quiet']).stdout == ''
|
|
|
+ assert re.search(re.compile('^Pulling simple', re.MULTILINE), result.stderr)
|
|
|
+ assert re.search(re.compile('^Pulling another', re.MULTILINE), result.stderr)
|
|
|
+ assert re.search(
|
|
|
+ re.compile('^ERROR: for another .*does not exist.*', re.MULTILINE),
|
|
|
+ result.stderr
|
|
|
+ )
|
|
|
+ assert re.search(
|
|
|
+ re.compile('''^(ERROR: )?(b')?.* nonexisting-image''', re.MULTILINE),
|
|
|
+ result.stderr
|
|
|
+ )
|
|
|
|
|
|
def test_build_plain(self):
|
|
|
self.base_dir = 'tests/fixtures/simple-dockerfile'
|
|
|
@@ -573,7 +604,6 @@ class CLITestCase(DockerClientTestCase):
|
|
|
assert BUILD_CACHE_TEXT not in result.stdout
|
|
|
assert BUILD_PULL_TEXT in result.stdout
|
|
|
|
|
|
- @pytest.mark.xfail(reason='17.10.0 RC bug remove after GA https://github.com/moby/moby/issues/35116')
|
|
|
def test_build_failed(self):
|
|
|
self.base_dir = 'tests/fixtures/simple-failing-dockerfile'
|
|
|
self.dispatch(['build', 'simple'], returncode=1)
|
|
|
@@ -587,7 +617,6 @@ class CLITestCase(DockerClientTestCase):
|
|
|
]
|
|
|
assert len(containers) == 1
|
|
|
|
|
|
- @pytest.mark.xfail(reason='17.10.0 RC bug remove after GA https://github.com/moby/moby/issues/35116')
|
|
|
def test_build_failed_forcerm(self):
|
|
|
self.base_dir = 'tests/fixtures/simple-failing-dockerfile'
|
|
|
self.dispatch(['build', '--force-rm', 'simple'], returncode=1)
|
|
|
@@ -809,36 +838,36 @@ class CLITestCase(DockerClientTestCase):
|
|
|
def test_down_timeout(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert service.containers()[0].is_running
|
|
|
""
|
|
|
|
|
|
self.dispatch(['down', '-t', '1'], None)
|
|
|
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 0
|
|
|
|
|
|
def test_down_signal(self):
|
|
|
self.base_dir = 'tests/fixtures/stop-signal-composefile'
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert service.containers()[0].is_running
|
|
|
|
|
|
self.dispatch(['down', '-t', '1'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 0
|
|
|
|
|
|
def test_up_detached(self):
|
|
|
self.dispatch(['up', '-d'])
|
|
|
service = self.project.get_service('simple')
|
|
|
another = self.project.get_service('another')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
- self.assertEqual(len(another.containers()), 1)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert len(another.containers()) == 1
|
|
|
|
|
|
# Ensure containers don't have stdin and stdout connected in -d mode
|
|
|
container, = service.containers()
|
|
|
- self.assertFalse(container.get('Config.AttachStderr'))
|
|
|
- self.assertFalse(container.get('Config.AttachStdout'))
|
|
|
- self.assertFalse(container.get('Config.AttachStdin'))
|
|
|
+ assert not container.get('Config.AttachStderr')
|
|
|
+ assert not container.get('Config.AttachStdout')
|
|
|
+ assert not container.get('Config.AttachStdin')
|
|
|
|
|
|
def test_up_attached(self):
|
|
|
self.base_dir = 'tests/fixtures/echo-services'
|
|
|
@@ -858,7 +887,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
|
|
|
network_name = self.project.networks.networks['default'].full_name
|
|
|
networks = self.client.networks(names=[network_name])
|
|
|
- self.assertEqual(len(networks), 1)
|
|
|
+ assert len(networks) == 1
|
|
|
assert networks[0]['Driver'] == 'bridge' if not is_cluster(self.client) else 'overlay'
|
|
|
assert 'com.docker.network.bridge.enable_icc' not in networks[0]['Options']
|
|
|
|
|
|
@@ -866,17 +895,17 @@ class CLITestCase(DockerClientTestCase):
|
|
|
|
|
|
for service in services:
|
|
|
containers = service.containers()
|
|
|
- self.assertEqual(len(containers), 1)
|
|
|
+ assert len(containers) == 1
|
|
|
|
|
|
container = containers[0]
|
|
|
- self.assertIn(container.id, network['Containers'])
|
|
|
+ assert container.id in network['Containers']
|
|
|
|
|
|
networks = container.get('NetworkSettings.Networks')
|
|
|
- self.assertEqual(list(networks), [network['Name']])
|
|
|
+ assert list(networks) == [network['Name']]
|
|
|
|
|
|
- self.assertEqual(
|
|
|
- sorted(networks[network['Name']]['Aliases']),
|
|
|
- sorted([service.name, container.short_id]))
|
|
|
+ assert sorted(networks[network['Name']]['Aliases']) == sorted(
|
|
|
+ [service.name, container.short_id]
|
|
|
+ )
|
|
|
|
|
|
for service in services:
|
|
|
assert self.lookup(container, service.name)
|
|
|
@@ -1213,13 +1242,13 @@ class CLITestCase(DockerClientTestCase):
|
|
|
console = self.project.get_service('console')
|
|
|
|
|
|
# console was not started
|
|
|
- self.assertEqual(len(web.containers()), 1)
|
|
|
- self.assertEqual(len(db.containers()), 1)
|
|
|
- self.assertEqual(len(console.containers()), 0)
|
|
|
+ assert len(web.containers()) == 1
|
|
|
+ assert len(db.containers()) == 1
|
|
|
+ assert len(console.containers()) == 0
|
|
|
|
|
|
# web has links
|
|
|
web_container = web.containers()[0]
|
|
|
- self.assertTrue(web_container.get('HostConfig.Links'))
|
|
|
+ assert web_container.get('HostConfig.Links')
|
|
|
|
|
|
def test_up_with_net_is_invalid(self):
|
|
|
self.base_dir = 'tests/fixtures/net-container'
|
|
|
@@ -1241,8 +1270,9 @@ class CLITestCase(DockerClientTestCase):
|
|
|
foo = self.project.get_service('foo')
|
|
|
foo_container = foo.containers()[0]
|
|
|
|
|
|
- assert foo_container.get('HostConfig.NetworkMode') == \
|
|
|
- 'container:{}'.format(bar_container.id)
|
|
|
+ assert foo_container.get('HostConfig.NetworkMode') == 'container:{}'.format(
|
|
|
+ bar_container.id
|
|
|
+ )
|
|
|
|
|
|
@v3_only()
|
|
|
def test_up_with_healthcheck(self):
|
|
|
@@ -1294,46 +1324,55 @@ class CLITestCase(DockerClientTestCase):
|
|
|
web = self.project.get_service('web')
|
|
|
db = self.project.get_service('db')
|
|
|
console = self.project.get_service('console')
|
|
|
- self.assertEqual(len(web.containers()), 1)
|
|
|
- self.assertEqual(len(db.containers()), 0)
|
|
|
- self.assertEqual(len(console.containers()), 0)
|
|
|
+ assert len(web.containers()) == 1
|
|
|
+ assert len(db.containers()) == 0
|
|
|
+ assert len(console.containers()) == 0
|
|
|
|
|
|
def test_up_with_force_recreate(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
|
|
|
old_ids = [c.id for c in service.containers()]
|
|
|
|
|
|
self.dispatch(['up', '-d', '--force-recreate'], None)
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
|
|
|
new_ids = [c.id for c in service.containers()]
|
|
|
|
|
|
- self.assertNotEqual(old_ids, new_ids)
|
|
|
+ assert old_ids != new_ids
|
|
|
|
|
|
def test_up_with_no_recreate(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
|
|
|
old_ids = [c.id for c in service.containers()]
|
|
|
|
|
|
self.dispatch(['up', '-d', '--no-recreate'], None)
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
|
|
|
new_ids = [c.id for c in service.containers()]
|
|
|
|
|
|
- self.assertEqual(old_ids, new_ids)
|
|
|
+ assert old_ids == new_ids
|
|
|
|
|
|
def test_up_with_force_recreate_and_no_recreate(self):
|
|
|
self.dispatch(
|
|
|
['up', '-d', '--force-recreate', '--no-recreate'],
|
|
|
returncode=1)
|
|
|
|
|
|
- def test_up_with_timeout_detached(self):
|
|
|
- result = self.dispatch(['up', '-d', '-t', '1'], returncode=1)
|
|
|
- assert "-d and --timeout cannot be combined." in result.stderr
|
|
|
+ def test_up_with_timeout(self):
|
|
|
+ self.dispatch(['up', '-d', '-t', '1'])
|
|
|
+ service = self.project.get_service('simple')
|
|
|
+ another = self.project.get_service('another')
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert len(another.containers()) == 1
|
|
|
+
|
|
|
+ @mock.patch.dict(os.environ)
|
|
|
+ def test_up_with_ignore_remove_orphans(self):
|
|
|
+ os.environ["COMPOSE_IGNORE_ORPHANS"] = "True"
|
|
|
+ result = self.dispatch(['up', '-d', '--remove-orphans'], returncode=1)
|
|
|
+ assert "COMPOSE_IGNORE_ORPHANS and --remove-orphans cannot be combined." in result.stderr
|
|
|
|
|
|
def test_up_handles_sigint(self):
|
|
|
proc = start_process(self.base_dir, ['up', '-t', '2'])
|
|
|
@@ -1365,14 +1404,14 @@ class CLITestCase(DockerClientTestCase):
|
|
|
proc = start_process(self.base_dir, ['up', '--abort-on-container-exit'])
|
|
|
wait_on_condition(ContainerCountCondition(self.project, 0))
|
|
|
proc.wait()
|
|
|
- self.assertEqual(proc.returncode, 0)
|
|
|
+ assert proc.returncode == 0
|
|
|
|
|
|
def test_up_handles_abort_on_container_exit_code(self):
|
|
|
self.base_dir = 'tests/fixtures/abort-on-container-exit-1'
|
|
|
proc = start_process(self.base_dir, ['up', '--abort-on-container-exit'])
|
|
|
wait_on_condition(ContainerCountCondition(self.project, 0))
|
|
|
proc.wait()
|
|
|
- self.assertEqual(proc.returncode, 1)
|
|
|
+ assert proc.returncode == 1
|
|
|
|
|
|
@v2_only()
|
|
|
@no_cluster('Container PID mode does not work across clusters')
|
|
|
@@ -1403,27 +1442,27 @@ class CLITestCase(DockerClientTestCase):
|
|
|
def test_exec_without_tty(self):
|
|
|
self.base_dir = 'tests/fixtures/links-composefile'
|
|
|
self.dispatch(['up', '-d', 'console'])
|
|
|
- self.assertEqual(len(self.project.containers()), 1)
|
|
|
+ assert len(self.project.containers()) == 1
|
|
|
|
|
|
stdout, stderr = self.dispatch(['exec', '-T', 'console', 'ls', '-1d', '/'])
|
|
|
- self.assertEqual(stderr, "")
|
|
|
- self.assertEqual(stdout, "/\n")
|
|
|
+ assert stderr == ""
|
|
|
+ assert stdout == "/\n"
|
|
|
|
|
|
def test_exec_custom_user(self):
|
|
|
self.base_dir = 'tests/fixtures/links-composefile'
|
|
|
self.dispatch(['up', '-d', 'console'])
|
|
|
- self.assertEqual(len(self.project.containers()), 1)
|
|
|
+ assert len(self.project.containers()) == 1
|
|
|
|
|
|
stdout, stderr = self.dispatch(['exec', '-T', '--user=operator', 'console', 'whoami'])
|
|
|
- self.assertEqual(stdout, "operator\n")
|
|
|
- self.assertEqual(stderr, "")
|
|
|
+ assert stdout == "operator\n"
|
|
|
+ assert stderr == ""
|
|
|
|
|
|
@v2_2_only()
|
|
|
def test_exec_service_with_environment_overridden(self):
|
|
|
name = 'service'
|
|
|
self.base_dir = 'tests/fixtures/environment-exec'
|
|
|
self.dispatch(['up', '-d'])
|
|
|
- self.assertEqual(len(self.project.containers()), 1)
|
|
|
+ assert len(self.project.containers()) == 1
|
|
|
|
|
|
stdout, stderr = self.dispatch([
|
|
|
'exec',
|
|
|
@@ -1441,27 +1480,27 @@ class CLITestCase(DockerClientTestCase):
|
|
|
# added option from command line
|
|
|
assert 'alpha=beta' in stdout
|
|
|
|
|
|
- self.assertEqual(stderr, '')
|
|
|
+ assert stderr == ''
|
|
|
|
|
|
def test_run_service_without_links(self):
|
|
|
self.base_dir = 'tests/fixtures/links-composefile'
|
|
|
self.dispatch(['run', 'console', '/bin/true'])
|
|
|
- self.assertEqual(len(self.project.containers()), 0)
|
|
|
+ assert len(self.project.containers()) == 0
|
|
|
|
|
|
# Ensure stdin/out was open
|
|
|
container = self.project.containers(stopped=True, one_off=OneOffFilter.only)[0]
|
|
|
config = container.inspect()['Config']
|
|
|
- self.assertTrue(config['AttachStderr'])
|
|
|
- self.assertTrue(config['AttachStdout'])
|
|
|
- self.assertTrue(config['AttachStdin'])
|
|
|
+ assert config['AttachStderr']
|
|
|
+ assert config['AttachStdout']
|
|
|
+ assert config['AttachStdin']
|
|
|
|
|
|
def test_run_service_with_links(self):
|
|
|
self.base_dir = 'tests/fixtures/links-composefile'
|
|
|
self.dispatch(['run', 'web', '/bin/true'], None)
|
|
|
db = self.project.get_service('db')
|
|
|
console = self.project.get_service('console')
|
|
|
- self.assertEqual(len(db.containers()), 1)
|
|
|
- self.assertEqual(len(console.containers()), 0)
|
|
|
+ assert len(db.containers()) == 1
|
|
|
+ assert len(console.containers()) == 0
|
|
|
|
|
|
@v2_only()
|
|
|
def test_run_service_with_dependencies(self):
|
|
|
@@ -1469,8 +1508,8 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['run', 'web', '/bin/true'], None)
|
|
|
db = self.project.get_service('db')
|
|
|
console = self.project.get_service('console')
|
|
|
- self.assertEqual(len(db.containers()), 1)
|
|
|
- self.assertEqual(len(console.containers()), 0)
|
|
|
+ assert len(db.containers()) == 1
|
|
|
+ assert len(console.containers()) == 0
|
|
|
|
|
|
def test_run_service_with_scaled_dependencies(self):
|
|
|
self.base_dir = 'tests/fixtures/v2-dependencies'
|
|
|
@@ -1487,22 +1526,22 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.base_dir = 'tests/fixtures/links-composefile'
|
|
|
self.dispatch(['run', '--no-deps', 'web', '/bin/true'])
|
|
|
db = self.project.get_service('db')
|
|
|
- self.assertEqual(len(db.containers()), 0)
|
|
|
+ assert len(db.containers()) == 0
|
|
|
|
|
|
def test_run_does_not_recreate_linked_containers(self):
|
|
|
self.base_dir = 'tests/fixtures/links-composefile'
|
|
|
self.dispatch(['up', '-d', 'db'])
|
|
|
db = self.project.get_service('db')
|
|
|
- self.assertEqual(len(db.containers()), 1)
|
|
|
+ assert len(db.containers()) == 1
|
|
|
|
|
|
old_ids = [c.id for c in db.containers()]
|
|
|
|
|
|
self.dispatch(['run', 'web', '/bin/true'], None)
|
|
|
- self.assertEqual(len(db.containers()), 1)
|
|
|
+ assert len(db.containers()) == 1
|
|
|
|
|
|
new_ids = [c.id for c in db.containers()]
|
|
|
|
|
|
- self.assertEqual(old_ids, new_ids)
|
|
|
+ assert old_ids == new_ids
|
|
|
|
|
|
def test_run_without_command(self):
|
|
|
self.base_dir = 'tests/fixtures/commands-composefile'
|
|
|
@@ -1511,18 +1550,12 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['run', 'implicit'])
|
|
|
service = self.project.get_service('implicit')
|
|
|
containers = service.containers(stopped=True, one_off=OneOffFilter.only)
|
|
|
- self.assertEqual(
|
|
|
- [c.human_readable_command for c in containers],
|
|
|
- [u'/bin/sh -c echo "success"'],
|
|
|
- )
|
|
|
+ assert [c.human_readable_command for c in containers] == [u'/bin/sh -c echo "success"']
|
|
|
|
|
|
self.dispatch(['run', 'explicit'])
|
|
|
service = self.project.get_service('explicit')
|
|
|
containers = service.containers(stopped=True, one_off=OneOffFilter.only)
|
|
|
- self.assertEqual(
|
|
|
- [c.human_readable_command for c in containers],
|
|
|
- [u'/bin/true'],
|
|
|
- )
|
|
|
+ assert [c.human_readable_command for c in containers] == [u'/bin/true']
|
|
|
|
|
|
@pytest.mark.skipif(SWARM_SKIP_RM_VOLUMES, reason='Swarm DELETE /containers/<id> bug')
|
|
|
def test_run_rm(self):
|
|
|
@@ -1534,7 +1567,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
'running'))
|
|
|
service = self.project.get_service('test')
|
|
|
containers = service.containers(one_off=OneOffFilter.only)
|
|
|
- self.assertEqual(len(containers), 1)
|
|
|
+ assert len(containers) == 1
|
|
|
mounts = containers[0].get('Mounts')
|
|
|
for mount in mounts:
|
|
|
if mount['Destination'] == '/container-path':
|
|
|
@@ -1543,7 +1576,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
os.kill(proc.pid, signal.SIGINT)
|
|
|
wait_on_process(proc, 1)
|
|
|
|
|
|
- self.assertEqual(len(service.containers(stopped=True, one_off=OneOffFilter.only)), 0)
|
|
|
+ assert len(service.containers(stopped=True, one_off=OneOffFilter.only)) == 0
|
|
|
|
|
|
volumes = self.client.volumes()['Volumes']
|
|
|
assert volumes is not None
|
|
|
@@ -1611,7 +1644,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['run', '--user={user}'.format(user=user), name], returncode=1)
|
|
|
service = self.project.get_service(name)
|
|
|
container = service.containers(stopped=True, one_off=OneOffFilter.only)[0]
|
|
|
- self.assertEqual(user, container.get('Config.User'))
|
|
|
+ assert user == container.get('Config.User')
|
|
|
|
|
|
def test_run_service_with_user_overridden_short_form(self):
|
|
|
self.base_dir = 'tests/fixtures/user-composefile'
|
|
|
@@ -1620,7 +1653,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['run', '-u', user, name], returncode=1)
|
|
|
service = self.project.get_service(name)
|
|
|
container = service.containers(stopped=True, one_off=OneOffFilter.only)[0]
|
|
|
- self.assertEqual(user, container.get('Config.User'))
|
|
|
+ assert user == container.get('Config.User')
|
|
|
|
|
|
def test_run_service_with_environment_overridden(self):
|
|
|
name = 'service'
|
|
|
@@ -1635,13 +1668,13 @@ class CLITestCase(DockerClientTestCase):
|
|
|
service = self.project.get_service(name)
|
|
|
container = service.containers(stopped=True, one_off=OneOffFilter.only)[0]
|
|
|
# env overridden
|
|
|
- self.assertEqual('notbar', container.environment['foo'])
|
|
|
+ assert 'notbar' == container.environment['foo']
|
|
|
# keep environment from yaml
|
|
|
- self.assertEqual('world', container.environment['hello'])
|
|
|
+ assert 'world' == container.environment['hello']
|
|
|
# added option from command line
|
|
|
- self.assertEqual('beta', container.environment['alpha'])
|
|
|
+ assert 'beta' == container.environment['alpha']
|
|
|
# make sure a value with a = don't crash out
|
|
|
- self.assertEqual('moto=bobo', container.environment['allo'])
|
|
|
+ assert 'moto=bobo' == container.environment['allo']
|
|
|
|
|
|
def test_run_service_without_map_ports(self):
|
|
|
# create one off container
|
|
|
@@ -1657,8 +1690,8 @@ class CLITestCase(DockerClientTestCase):
|
|
|
container.stop()
|
|
|
|
|
|
# check the ports
|
|
|
- self.assertEqual(port_random, None)
|
|
|
- self.assertEqual(port_assigned, None)
|
|
|
+ assert port_random is None
|
|
|
+ assert port_assigned is None
|
|
|
|
|
|
def test_run_service_with_map_ports(self):
|
|
|
# create one off container
|
|
|
@@ -1716,8 +1749,8 @@ class CLITestCase(DockerClientTestCase):
|
|
|
container.stop()
|
|
|
|
|
|
# check the ports
|
|
|
- self.assertEqual(port_short, "127.0.0.1:30000")
|
|
|
- self.assertEqual(port_full, "127.0.0.1:30001")
|
|
|
+ assert port_short == "127.0.0.1:30000"
|
|
|
+ assert port_full == "127.0.0.1:30001"
|
|
|
|
|
|
def test_run_with_expose_ports(self):
|
|
|
# create one off container
|
|
|
@@ -1726,7 +1759,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
container = self.project.get_service('simple').containers(one_off=OneOffFilter.only)[0]
|
|
|
|
|
|
ports = container.ports
|
|
|
- self.assertEqual(len(ports), 9)
|
|
|
+ assert len(ports) == 9
|
|
|
# exposed ports are not mapped to host ports
|
|
|
assert ports['3000/tcp'] is None
|
|
|
assert ports['3001/tcp'] is None
|
|
|
@@ -1748,7 +1781,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
|
|
|
service = self.project.get_service('service')
|
|
|
container, = service.containers(stopped=True, one_off=OneOffFilter.only)
|
|
|
- self.assertEqual(container.name, name)
|
|
|
+ assert container.name == name
|
|
|
|
|
|
def test_run_service_with_workdir_overridden(self):
|
|
|
self.base_dir = 'tests/fixtures/run-workdir'
|
|
|
@@ -1757,7 +1790,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['run', '--workdir={workdir}'.format(workdir=workdir), name])
|
|
|
service = self.project.get_service(name)
|
|
|
container = service.containers(stopped=True, one_off=True)[0]
|
|
|
- self.assertEqual(workdir, container.get('Config.WorkingDir'))
|
|
|
+ assert workdir == container.get('Config.WorkingDir')
|
|
|
|
|
|
def test_run_service_with_workdir_overridden_short_form(self):
|
|
|
self.base_dir = 'tests/fixtures/run-workdir'
|
|
|
@@ -1766,7 +1799,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['run', '-w', workdir, name])
|
|
|
service = self.project.get_service(name)
|
|
|
container = service.containers(stopped=True, one_off=True)[0]
|
|
|
- self.assertEqual(workdir, container.get('Config.WorkingDir'))
|
|
|
+ assert workdir == container.get('Config.WorkingDir')
|
|
|
|
|
|
@v2_only()
|
|
|
def test_run_interactive_connects_to_network(self):
|
|
|
@@ -1854,7 +1887,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
result = self.dispatch(['run', 'simple'])
|
|
|
|
|
|
if six.PY2: # Can't retrieve output on Py3. See issue #3670
|
|
|
- assert value == result.stdout.strip()
|
|
|
+ assert value in result.stdout.strip()
|
|
|
|
|
|
container = self.project.containers(one_off=OneOffFilter.only, stopped=True)[0]
|
|
|
environment = container.get('Config.Env')
|
|
|
@@ -1887,19 +1920,19 @@ class CLITestCase(DockerClientTestCase):
|
|
|
service = self.project.get_service('simple')
|
|
|
service.create_container()
|
|
|
kill_service(service)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
self.dispatch(['rm', '--force'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 0
|
|
|
service = self.project.get_service('simple')
|
|
|
service.create_container()
|
|
|
kill_service(service)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
self.dispatch(['rm', '-f'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 0
|
|
|
service = self.project.get_service('simple')
|
|
|
service.create_container()
|
|
|
self.dispatch(['rm', '-fs'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 0
|
|
|
|
|
|
def test_rm_stop(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
@@ -1923,43 +1956,43 @@ class CLITestCase(DockerClientTestCase):
|
|
|
service.create_container(one_off=False)
|
|
|
service.create_container(one_off=True)
|
|
|
kill_service(service)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
- self.assertEqual(len(service.containers(stopped=True, one_off=OneOffFilter.only)), 1)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
+ assert len(service.containers(stopped=True, one_off=OneOffFilter.only)) == 1
|
|
|
self.dispatch(['rm', '-f'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 0)
|
|
|
- self.assertEqual(len(service.containers(stopped=True, one_off=OneOffFilter.only)), 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 0
|
|
|
+ assert len(service.containers(stopped=True, one_off=OneOffFilter.only)) == 0
|
|
|
|
|
|
service.create_container(one_off=False)
|
|
|
service.create_container(one_off=True)
|
|
|
kill_service(service)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
- self.assertEqual(len(service.containers(stopped=True, one_off=OneOffFilter.only)), 1)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
+ assert len(service.containers(stopped=True, one_off=OneOffFilter.only)) == 1
|
|
|
self.dispatch(['rm', '-f', '--all'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 0)
|
|
|
- self.assertEqual(len(service.containers(stopped=True, one_off=OneOffFilter.only)), 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 0
|
|
|
+ assert len(service.containers(stopped=True, one_off=OneOffFilter.only)) == 0
|
|
|
|
|
|
def test_stop(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert service.containers()[0].is_running
|
|
|
|
|
|
self.dispatch(['stop', '-t', '1'], None)
|
|
|
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
- self.assertFalse(service.containers(stopped=True)[0].is_running)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
+ assert not service.containers(stopped=True)[0].is_running
|
|
|
|
|
|
def test_stop_signal(self):
|
|
|
self.base_dir = 'tests/fixtures/stop-signal-composefile'
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert service.containers()[0].is_running
|
|
|
|
|
|
self.dispatch(['stop', '-t', '1'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
- self.assertFalse(service.containers(stopped=True)[0].is_running)
|
|
|
- self.assertEqual(service.containers(stopped=True)[0].exit_code, 0)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
+ assert not service.containers(stopped=True)[0].is_running
|
|
|
+ assert service.containers(stopped=True)[0].exit_code == 0
|
|
|
|
|
|
def test_start_no_containers(self):
|
|
|
result = self.dispatch(['start'], returncode=1)
|
|
|
@@ -1971,39 +2004,39 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['up', '-d'])
|
|
|
simple = self.project.get_service('simple').containers()[0]
|
|
|
log_config = simple.get('HostConfig.LogConfig')
|
|
|
- self.assertTrue(log_config)
|
|
|
- self.assertEqual(log_config.get('Type'), 'none')
|
|
|
+ assert log_config
|
|
|
+ assert log_config.get('Type') == 'none'
|
|
|
|
|
|
another = self.project.get_service('another').containers()[0]
|
|
|
log_config = another.get('HostConfig.LogConfig')
|
|
|
- self.assertTrue(log_config)
|
|
|
- self.assertEqual(log_config.get('Type'), 'json-file')
|
|
|
- self.assertEqual(log_config.get('Config')['max-size'], '10m')
|
|
|
+ assert log_config
|
|
|
+ assert log_config.get('Type') == 'json-file'
|
|
|
+ assert log_config.get('Config')['max-size'] == '10m'
|
|
|
|
|
|
def test_up_logging_legacy(self):
|
|
|
self.base_dir = 'tests/fixtures/logging-composefile-legacy'
|
|
|
self.dispatch(['up', '-d'])
|
|
|
simple = self.project.get_service('simple').containers()[0]
|
|
|
log_config = simple.get('HostConfig.LogConfig')
|
|
|
- self.assertTrue(log_config)
|
|
|
- self.assertEqual(log_config.get('Type'), 'none')
|
|
|
+ assert log_config
|
|
|
+ assert log_config.get('Type') == 'none'
|
|
|
|
|
|
another = self.project.get_service('another').containers()[0]
|
|
|
log_config = another.get('HostConfig.LogConfig')
|
|
|
- self.assertTrue(log_config)
|
|
|
- self.assertEqual(log_config.get('Type'), 'json-file')
|
|
|
- self.assertEqual(log_config.get('Config')['max-size'], '10m')
|
|
|
+ assert log_config
|
|
|
+ assert log_config.get('Type') == 'json-file'
|
|
|
+ assert log_config.get('Config')['max-size'] == '10m'
|
|
|
|
|
|
def test_pause_unpause(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertFalse(service.containers()[0].is_paused)
|
|
|
+ assert not service.containers()[0].is_paused
|
|
|
|
|
|
self.dispatch(['pause'], None)
|
|
|
- self.assertTrue(service.containers()[0].is_paused)
|
|
|
+ assert service.containers()[0].is_paused
|
|
|
|
|
|
self.dispatch(['unpause'], None)
|
|
|
- self.assertFalse(service.containers()[0].is_paused)
|
|
|
+ assert not service.containers()[0].is_paused
|
|
|
|
|
|
def test_pause_no_containers(self):
|
|
|
result = self.dispatch(['pause'], returncode=1)
|
|
|
@@ -2077,7 +2110,7 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['up', '-d'])
|
|
|
|
|
|
result = self.dispatch(['logs', '-f', '-t'])
|
|
|
- self.assertRegexpMatches(result.stdout, '(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})')
|
|
|
+ assert re.search('(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})', result.stdout)
|
|
|
|
|
|
def test_logs_tail(self):
|
|
|
self.base_dir = 'tests/fixtures/logs-tail-composefile'
|
|
|
@@ -2092,36 +2125,36 @@ class CLITestCase(DockerClientTestCase):
|
|
|
def test_kill(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert service.containers()[0].is_running
|
|
|
|
|
|
self.dispatch(['kill'], None)
|
|
|
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
- self.assertFalse(service.containers(stopped=True)[0].is_running)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
+ assert not service.containers(stopped=True)[0].is_running
|
|
|
|
|
|
def test_kill_signal_sigstop(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
+ assert service.containers()[0].is_running
|
|
|
|
|
|
self.dispatch(['kill', '-s', 'SIGSTOP'], None)
|
|
|
|
|
|
- self.assertEqual(len(service.containers()), 1)
|
|
|
+ assert len(service.containers()) == 1
|
|
|
# The container is still running. It has only been paused
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert service.containers()[0].is_running
|
|
|
|
|
|
def test_kill_stopped_service(self):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
service = self.project.get_service('simple')
|
|
|
self.dispatch(['kill', '-s', 'SIGSTOP'], None)
|
|
|
- self.assertTrue(service.containers()[0].is_running)
|
|
|
+ assert service.containers()[0].is_running
|
|
|
|
|
|
self.dispatch(['kill', '-s', 'SIGKILL'], None)
|
|
|
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
- self.assertFalse(service.containers(stopped=True)[0].is_running)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
+ assert not service.containers(stopped=True)[0].is_running
|
|
|
|
|
|
def test_restart(self):
|
|
|
service = self.project.get_service('simple')
|
|
|
@@ -2130,23 +2163,17 @@ class CLITestCase(DockerClientTestCase):
|
|
|
started_at = container.dictionary['State']['StartedAt']
|
|
|
self.dispatch(['restart', '-t', '1'], None)
|
|
|
container.inspect()
|
|
|
- self.assertNotEqual(
|
|
|
- container.dictionary['State']['FinishedAt'],
|
|
|
- '0001-01-01T00:00:00Z',
|
|
|
- )
|
|
|
- self.assertNotEqual(
|
|
|
- container.dictionary['State']['StartedAt'],
|
|
|
- started_at,
|
|
|
- )
|
|
|
+ assert container.dictionary['State']['FinishedAt'] != '0001-01-01T00:00:00Z'
|
|
|
+ assert container.dictionary['State']['StartedAt'] != started_at
|
|
|
|
|
|
def test_restart_stopped_container(self):
|
|
|
service = self.project.get_service('simple')
|
|
|
container = service.create_container()
|
|
|
container.start()
|
|
|
container.kill()
|
|
|
- self.assertEqual(len(service.containers(stopped=True)), 1)
|
|
|
+ assert len(service.containers(stopped=True)) == 1
|
|
|
self.dispatch(['restart', '-t', '1'], None)
|
|
|
- self.assertEqual(len(service.containers(stopped=False)), 1)
|
|
|
+ assert len(service.containers(stopped=False)) == 1
|
|
|
|
|
|
def test_restart_no_containers(self):
|
|
|
result = self.dispatch(['restart'], returncode=1)
|
|
|
@@ -2156,23 +2183,23 @@ class CLITestCase(DockerClientTestCase):
|
|
|
project = self.project
|
|
|
|
|
|
self.dispatch(['scale', 'simple=1'])
|
|
|
- self.assertEqual(len(project.get_service('simple').containers()), 1)
|
|
|
+ assert len(project.get_service('simple').containers()) == 1
|
|
|
|
|
|
self.dispatch(['scale', 'simple=3', 'another=2'])
|
|
|
- self.assertEqual(len(project.get_service('simple').containers()), 3)
|
|
|
- self.assertEqual(len(project.get_service('another').containers()), 2)
|
|
|
+ assert len(project.get_service('simple').containers()) == 3
|
|
|
+ assert len(project.get_service('another').containers()) == 2
|
|
|
|
|
|
self.dispatch(['scale', 'simple=1', 'another=1'])
|
|
|
- self.assertEqual(len(project.get_service('simple').containers()), 1)
|
|
|
- self.assertEqual(len(project.get_service('another').containers()), 1)
|
|
|
+ assert len(project.get_service('simple').containers()) == 1
|
|
|
+ assert len(project.get_service('another').containers()) == 1
|
|
|
|
|
|
self.dispatch(['scale', 'simple=1', 'another=1'])
|
|
|
- self.assertEqual(len(project.get_service('simple').containers()), 1)
|
|
|
- self.assertEqual(len(project.get_service('another').containers()), 1)
|
|
|
+ assert len(project.get_service('simple').containers()) == 1
|
|
|
+ assert len(project.get_service('another').containers()) == 1
|
|
|
|
|
|
self.dispatch(['scale', 'simple=0', 'another=0'])
|
|
|
- self.assertEqual(len(project.get_service('simple').containers()), 0)
|
|
|
- self.assertEqual(len(project.get_service('another').containers()), 0)
|
|
|
+ assert len(project.get_service('simple').containers()) == 0
|
|
|
+ assert len(project.get_service('another').containers()) == 0
|
|
|
|
|
|
def test_scale_v2_2(self):
|
|
|
self.base_dir = 'tests/fixtures/scale'
|
|
|
@@ -2267,10 +2294,10 @@ class CLITestCase(DockerClientTestCase):
|
|
|
result = self.dispatch(['port', '--index=' + str(index), 'simple', str(number)])
|
|
|
return result.stdout.rstrip()
|
|
|
|
|
|
- self.assertEqual(get_port(3000), containers[0].get_local_port(3000))
|
|
|
- self.assertEqual(get_port(3000, index=1), containers[0].get_local_port(3000))
|
|
|
- self.assertEqual(get_port(3000, index=2), containers[1].get_local_port(3000))
|
|
|
- self.assertEqual(get_port(3002), "")
|
|
|
+ assert get_port(3000) == containers[0].get_local_port(3000)
|
|
|
+ assert get_port(3000, index=1) == containers[0].get_local_port(3000)
|
|
|
+ assert get_port(3000, index=2) == containers[1].get_local_port(3000)
|
|
|
+ assert get_port(3002) == ""
|
|
|
|
|
|
def test_events_json(self):
|
|
|
events_proc = start_process(self.base_dir, ['events', '--json'])
|
|
|
@@ -2321,8 +2348,8 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self._project = get_project(self.base_dir, [config_path])
|
|
|
|
|
|
containers = self.project.containers(stopped=True)
|
|
|
- self.assertEqual(len(containers), 1)
|
|
|
- self.assertIn("FOO=1", containers[0].get('Config.Env'))
|
|
|
+ assert len(containers) == 1
|
|
|
+ assert "FOO=1" in containers[0].get('Config.Env')
|
|
|
|
|
|
@mock.patch.dict(os.environ)
|
|
|
def test_home_and_env_var_in_volume_path(self):
|
|
|
@@ -2342,11 +2369,11 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
|
|
|
containers = self.project.containers()
|
|
|
- self.assertEqual(len(containers), 2)
|
|
|
+ assert len(containers) == 2
|
|
|
|
|
|
web, db = containers
|
|
|
- self.assertEqual(web.human_readable_command, 'top')
|
|
|
- self.assertEqual(db.human_readable_command, 'top')
|
|
|
+ assert web.human_readable_command == 'top'
|
|
|
+ assert db.human_readable_command == 'top'
|
|
|
|
|
|
def test_up_with_multiple_files(self):
|
|
|
self.base_dir = 'tests/fixtures/override-files'
|
|
|
@@ -2366,21 +2393,18 @@ class CLITestCase(DockerClientTestCase):
|
|
|
None)
|
|
|
|
|
|
containers = self.project.containers()
|
|
|
- self.assertEqual(len(containers), 3)
|
|
|
+ assert len(containers) == 3
|
|
|
|
|
|
web, other, db = containers
|
|
|
- self.assertEqual(web.human_readable_command, 'top')
|
|
|
- self.assertEqual(db.human_readable_command, 'top')
|
|
|
- self.assertEqual(other.human_readable_command, 'top')
|
|
|
+ assert web.human_readable_command == 'top'
|
|
|
+ assert db.human_readable_command == 'top'
|
|
|
+ assert other.human_readable_command == 'top'
|
|
|
|
|
|
def test_up_with_extends(self):
|
|
|
self.base_dir = 'tests/fixtures/extends'
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
|
|
|
- self.assertEqual(
|
|
|
- set([s.name for s in self.project.services]),
|
|
|
- set(['mydb', 'myweb']),
|
|
|
- )
|
|
|
+ assert set([s.name for s in self.project.services]) == set(['mydb', 'myweb'])
|
|
|
|
|
|
# Sort by name so we get [db, web]
|
|
|
containers = sorted(
|
|
|
@@ -2388,19 +2412,17 @@ class CLITestCase(DockerClientTestCase):
|
|
|
key=lambda c: c.name,
|
|
|
)
|
|
|
|
|
|
- self.assertEqual(len(containers), 2)
|
|
|
+ assert len(containers) == 2
|
|
|
web = containers[1]
|
|
|
|
|
|
- self.assertEqual(
|
|
|
- set(get_links(web)),
|
|
|
- set(['db', 'mydb_1', 'extends_mydb_1']))
|
|
|
+ assert set(get_links(web)) == set(['db', 'mydb_1', 'extends_mydb_1'])
|
|
|
|
|
|
expected_env = set([
|
|
|
"FOO=1",
|
|
|
"BAR=2",
|
|
|
"BAZ=2",
|
|
|
])
|
|
|
- self.assertTrue(expected_env <= set(web.get('Config.Env')))
|
|
|
+ assert expected_env <= set(web.get('Config.Env'))
|
|
|
|
|
|
def test_top_services_not_running(self):
|
|
|
self.base_dir = 'tests/fixtures/top'
|
|
|
@@ -2412,9 +2434,9 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['up', '-d'])
|
|
|
result = self.dispatch(['top'])
|
|
|
|
|
|
- self.assertIn('top_service_a', result.stdout)
|
|
|
- self.assertIn('top_service_b', result.stdout)
|
|
|
- self.assertNotIn('top_not_a_service', result.stdout)
|
|
|
+ assert 'top_service_a' in result.stdout
|
|
|
+ assert 'top_service_b' in result.stdout
|
|
|
+ assert 'top_not_a_service' not in result.stdout
|
|
|
|
|
|
def test_top_processes_running(self):
|
|
|
self.base_dir = 'tests/fixtures/top'
|
|
|
@@ -2473,14 +2495,14 @@ class CLITestCase(DockerClientTestCase):
|
|
|
self.dispatch(['up', '-d'], None)
|
|
|
|
|
|
containers = self.project.containers()
|
|
|
- self.assertEqual(len(containers), 2)
|
|
|
+ assert len(containers) == 2
|
|
|
|
|
|
web, db = containers
|
|
|
- self.assertEqual(web.human_readable_command, 'sleep 100')
|
|
|
- self.assertEqual(db.human_readable_command, 'top')
|
|
|
+ assert web.human_readable_command == 'sleep 100'
|
|
|
+ assert db.human_readable_command == 'top'
|
|
|
|
|
|
def test_up_with_duplicate_override_yaml_files(self):
|
|
|
self.base_dir = 'tests/fixtures/duplicate-override-yaml-files'
|
|
|
- with self.assertRaises(DuplicateOverrideFileFound):
|
|
|
+ with pytest.raises(DuplicateOverrideFileFound):
|
|
|
get_project(self.base_dir, [])
|
|
|
self.base_dir = None
|