mirror of https://github.com/docker/compose.git
Extract helper methods for building config objects from dicts
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
parent
3f3c05e465
commit
2c75a8fdf5
|
@ -10,7 +10,7 @@
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
- id: flake8
|
- id: flake8
|
||||||
- id: name-tests-test
|
- id: name-tests-test
|
||||||
exclude: 'tests/integration/testcases.py'
|
exclude: 'tests/(helpers\.py|integration/testcases\.py)'
|
||||||
- id: requirements-txt-fixer
|
- id: requirements-txt-fixer
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
- repo: git://github.com/asottile/reorder_python_imports
|
- repo: git://github.com/asottile/reorder_python_imports
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
from __future__ import absolute_import
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from compose.config.config import ConfigDetails
|
||||||
|
from compose.config.config import ConfigFile
|
||||||
|
from compose.config.config import load
|
||||||
|
|
||||||
|
|
||||||
|
def build_config(contents, **kwargs):
|
||||||
|
return load(build_config_details(contents, **kwargs))
|
||||||
|
|
||||||
|
|
||||||
|
def build_config_details(contents, working_dir='working_dir', filename='filename.yml'):
|
||||||
|
return ConfigDetails(
|
||||||
|
working_dir,
|
||||||
|
[ConfigFile(filename, contents)])
|
|
@ -7,6 +7,7 @@ import py
|
||||||
import pytest
|
import pytest
|
||||||
from docker.errors import NotFound
|
from docker.errors import NotFound
|
||||||
|
|
||||||
|
from ..helpers import build_config
|
||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
from compose.config import config
|
from compose.config import config
|
||||||
from compose.config import ConfigurationError
|
from compose.config import ConfigurationError
|
||||||
|
@ -20,13 +21,6 @@ from compose.service import ConvergenceStrategy
|
||||||
from tests.integration.testcases import v2_only
|
from tests.integration.testcases import v2_only
|
||||||
|
|
||||||
|
|
||||||
def build_service_dicts(service_config):
|
|
||||||
return config.load(
|
|
||||||
config.ConfigDetails(
|
|
||||||
'working_dir',
|
|
||||||
[config.ConfigFile(None, service_config)]))
|
|
||||||
|
|
||||||
|
|
||||||
class ProjectTest(DockerClientTestCase):
|
class ProjectTest(DockerClientTestCase):
|
||||||
|
|
||||||
def test_containers(self):
|
def test_containers(self):
|
||||||
|
@ -67,19 +61,18 @@ class ProjectTest(DockerClientTestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_volumes_from_service(self):
|
def test_volumes_from_service(self):
|
||||||
service_dicts = build_service_dicts({
|
|
||||||
'data': {
|
|
||||||
'image': 'busybox:latest',
|
|
||||||
'volumes': ['/var/data'],
|
|
||||||
},
|
|
||||||
'db': {
|
|
||||||
'image': 'busybox:latest',
|
|
||||||
'volumes_from': ['data'],
|
|
||||||
},
|
|
||||||
})
|
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
config_data=service_dicts,
|
config_data=build_config({
|
||||||
|
'data': {
|
||||||
|
'image': 'busybox:latest',
|
||||||
|
'volumes': ['/var/data'],
|
||||||
|
},
|
||||||
|
'db': {
|
||||||
|
'image': 'busybox:latest',
|
||||||
|
'volumes_from': ['data'],
|
||||||
|
},
|
||||||
|
}),
|
||||||
client=self.client,
|
client=self.client,
|
||||||
)
|
)
|
||||||
db = project.get_service('db')
|
db = project.get_service('db')
|
||||||
|
@ -96,7 +89,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
)
|
)
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
config_data=build_service_dicts({
|
config_data=build_config({
|
||||||
'db': {
|
'db': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
'volumes_from': ['composetest_data_container'],
|
'volumes_from': ['composetest_data_container'],
|
||||||
|
@ -112,7 +105,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
client=self.client,
|
client=self.client,
|
||||||
config_data=build_service_dicts({
|
config_data=build_config({
|
||||||
'version': V2_0,
|
'version': V2_0,
|
||||||
'services': {
|
'services': {
|
||||||
'net': {
|
'net': {
|
||||||
|
@ -139,7 +132,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def get_project():
|
def get_project():
|
||||||
return Project.from_config(
|
return Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
config_data=build_service_dicts({
|
config_data=build_config({
|
||||||
'version': V2_0,
|
'version': V2_0,
|
||||||
'services': {
|
'services': {
|
||||||
'web': {
|
'web': {
|
||||||
|
@ -174,7 +167,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_net_from_service_v1(self):
|
def test_net_from_service_v1(self):
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
config_data=build_service_dicts({
|
config_data=build_config({
|
||||||
'net': {
|
'net': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
'command': ["top"]
|
'command': ["top"]
|
||||||
|
@ -198,7 +191,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def get_project():
|
def get_project():
|
||||||
return Project.from_config(
|
return Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
config_data=build_service_dicts({
|
config_data=build_config({
|
||||||
'web': {
|
'web': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
'net': 'container:composetest_net_container'
|
'net': 'container:composetest_net_container'
|
||||||
|
@ -469,7 +462,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_project_up_starts_depends(self):
|
def test_project_up_starts_depends(self):
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
config_data=build_service_dicts({
|
config_data=build_config({
|
||||||
'console': {
|
'console': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
'command': ["top"],
|
'command': ["top"],
|
||||||
|
@ -504,7 +497,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_project_up_with_no_deps(self):
|
def test_project_up_with_no_deps(self):
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='composetest',
|
name='composetest',
|
||||||
config_data=build_service_dicts({
|
config_data=build_config({
|
||||||
'console': {
|
'console': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
'command': ["top"],
|
'command': ["top"],
|
||||||
|
|
|
@ -11,6 +11,7 @@ from operator import itemgetter
|
||||||
import py
|
import py
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from ...helpers import build_config_details
|
||||||
from compose.config import config
|
from compose.config import config
|
||||||
from compose.config.config import resolve_build_args
|
from compose.config.config import resolve_build_args
|
||||||
from compose.config.config import resolve_environment
|
from compose.config.config import resolve_environment
|
||||||
|
@ -43,12 +44,6 @@ def service_sort(services):
|
||||||
return sorted(services, key=itemgetter('name'))
|
return sorted(services, key=itemgetter('name'))
|
||||||
|
|
||||||
|
|
||||||
def build_config_details(contents, working_dir='working_dir', filename='filename.yml'):
|
|
||||||
return config.ConfigDetails(
|
|
||||||
working_dir,
|
|
||||||
[config.ConfigFile(filename, contents)])
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigTest(unittest.TestCase):
|
class ConfigTest(unittest.TestCase):
|
||||||
def test_load(self):
|
def test_load(self):
|
||||||
service_dicts = config.load(
|
service_dicts = config.load(
|
||||||
|
|
Loading…
Reference in New Issue