mirror of https://github.com/docker/docs.git
WIP: rename Fig to Compose
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
parent
7be8b4c06d
commit
2af7693e64
|
@ -5,4 +5,4 @@
|
||||||
/dist
|
/dist
|
||||||
/docs/_site
|
/docs/_site
|
||||||
/venv
|
/venv
|
||||||
fig.spec
|
compose.spec
|
||||||
|
|
|
@ -14,4 +14,4 @@ RUN python setup.py install
|
||||||
|
|
||||||
RUN chown -R user /code/
|
RUN chown -R user /code/
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/fig"]
|
ENTRYPOINT ["/usr/local/bin/compose"]
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
from compose.cli.main import main
|
||||||
|
main()
|
|
@ -43,11 +43,15 @@ class Command(DocoptCommand):
|
||||||
|
|
||||||
def perform_command(self, options, handler, command_options):
|
def perform_command(self, options, handler, command_options):
|
||||||
if options['COMMAND'] == 'help':
|
if options['COMMAND'] == 'help':
|
||||||
# Skip looking up the figfile.
|
# Skip looking up the compose file.
|
||||||
handler(None, command_options)
|
handler(None, command_options)
|
||||||
return
|
return
|
||||||
|
|
||||||
explicit_config_path = options.get('--file') or os.environ.get('FIG_FILE')
|
if 'FIG_FILE' in os.environ:
|
||||||
|
log.warn('The FIG_FILE environment variable is deprecated.')
|
||||||
|
log.warn('Please use COMPOSE_FILE instead.')
|
||||||
|
|
||||||
|
explicit_config_path = options.get('--file') or os.environ.get('COMPOSE_FILE') or os.environ.get('FIG_FILE')
|
||||||
project = self.get_project(
|
project = self.get_project(
|
||||||
self.get_config_path(explicit_config_path),
|
self.get_config_path(explicit_config_path),
|
||||||
project_name=options.get('--project-name'),
|
project_name=options.get('--project-name'),
|
||||||
|
@ -59,7 +63,7 @@ class Command(DocoptCommand):
|
||||||
client = docker_client()
|
client = docker_client()
|
||||||
if verbose:
|
if verbose:
|
||||||
version_info = six.iteritems(client.version())
|
version_info = six.iteritems(client.version())
|
||||||
log.info("Fig version %s", __version__)
|
log.info("Compose version %s", __version__)
|
||||||
log.info("Docker base_url: %s", client.base_url)
|
log.info("Docker base_url: %s", client.base_url)
|
||||||
log.info("Docker version: %s",
|
log.info("Docker version: %s",
|
||||||
", ".join("%s=%s" % item for item in version_info))
|
", ".join("%s=%s" % item for item in version_info))
|
||||||
|
@ -72,7 +76,7 @@ class Command(DocoptCommand):
|
||||||
return yaml.safe_load(fh)
|
return yaml.safe_load(fh)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
if e.errno == errno.ENOENT:
|
if e.errno == errno.ENOENT:
|
||||||
raise errors.FigFileNotFound(os.path.basename(e.filename))
|
raise errors.ComposeFileNotFound(os.path.basename(e.filename))
|
||||||
raise errors.UserError(six.text_type(e))
|
raise errors.UserError(six.text_type(e))
|
||||||
|
|
||||||
def get_project(self, config_path, project_name=None, verbose=False):
|
def get_project(self, config_path, project_name=None, verbose=False):
|
||||||
|
@ -88,7 +92,11 @@ class Command(DocoptCommand):
|
||||||
def normalize_name(name):
|
def normalize_name(name):
|
||||||
return re.sub(r'[^a-z0-9]', '', name.lower())
|
return re.sub(r'[^a-z0-9]', '', name.lower())
|
||||||
|
|
||||||
project_name = project_name or os.environ.get('FIG_PROJECT_NAME')
|
if 'FIG_PROJECT_NAME' in os.environ:
|
||||||
|
log.warn('The FIG_PROJECT_NAME environment variable is deprecated.')
|
||||||
|
log.warn('Please use COMPOSE_PROJECT_NAME instead.')
|
||||||
|
|
||||||
|
project_name = project_name or os.environ.get('COMPOSE_PROJECT_NAME') or os.environ.get('FIG_PROJECT_NAME')
|
||||||
if project_name is not None:
|
if project_name is not None:
|
||||||
return normalize_name(project_name)
|
return normalize_name(project_name)
|
||||||
|
|
||||||
|
@ -102,13 +110,13 @@ class Command(DocoptCommand):
|
||||||
if file_path:
|
if file_path:
|
||||||
return os.path.join(self.base_dir, file_path)
|
return os.path.join(self.base_dir, file_path)
|
||||||
|
|
||||||
if os.path.exists(os.path.join(self.base_dir, 'fig.yaml')):
|
if os.path.exists(os.path.join(self.base_dir, 'compose.yaml')):
|
||||||
log.warning("Fig just read the file 'fig.yaml' on startup, rather "
|
log.warning("Fig just read the file 'compose.yaml' on startup, rather "
|
||||||
"than 'fig.yml'")
|
"than 'compose.yml'")
|
||||||
log.warning("Please be aware that fig.yml the expected extension "
|
log.warning("Please be aware that .yml is the expected extension "
|
||||||
"in most cases, and using .yaml can cause compatibility "
|
"in most cases, and using .yaml can cause compatibility "
|
||||||
"issues in future")
|
"issues in future")
|
||||||
|
|
||||||
return os.path.join(self.base_dir, 'fig.yaml')
|
return os.path.join(self.base_dir, 'compose.yaml')
|
||||||
|
|
||||||
return os.path.join(self.base_dir, 'fig.yml')
|
return os.path.join(self.base_dir, 'compose.yml')
|
|
@ -55,8 +55,8 @@ class ConnectionErrorGeneric(UserError):
|
||||||
""" % url)
|
""" % url)
|
||||||
|
|
||||||
|
|
||||||
class FigFileNotFound(UserError):
|
class ComposeFileNotFound(UserError):
|
||||||
def __init__(self, filename):
|
def __init__(self, filename):
|
||||||
super(FigFileNotFound, self).__init__("""
|
super(ComposeFileNotFound, self).__init__("""
|
||||||
Can't find %s. Are you in the right directory?
|
Can't find %s. Are you in the right directory?
|
||||||
""" % filename)
|
""" % filename)
|
|
@ -71,13 +71,13 @@ class TopLevelCommand(Command):
|
||||||
"""Fast, isolated development environments using Docker.
|
"""Fast, isolated development environments using Docker.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
fig [options] [COMMAND] [ARGS...]
|
compose [options] [COMMAND] [ARGS...]
|
||||||
fig -h|--help
|
compose -h|--help
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
--verbose Show more output
|
--verbose Show more output
|
||||||
--version Print version and exit
|
--version Print version and exit
|
||||||
-f, --file FILE Specify an alternate fig file (default: fig.yml)
|
-f, --file FILE Specify an alternate compose file (default: compose.yml)
|
||||||
-p, --project-name NAME Specify an alternate project name (default: directory name)
|
-p, --project-name NAME Specify an alternate project name (default: directory name)
|
||||||
|
|
||||||
Commands:
|
Commands:
|
||||||
|
@ -99,7 +99,7 @@ class TopLevelCommand(Command):
|
||||||
"""
|
"""
|
||||||
def docopt_options(self):
|
def docopt_options(self):
|
||||||
options = super(TopLevelCommand, self).docopt_options()
|
options = super(TopLevelCommand, self).docopt_options()
|
||||||
options['version'] = "fig %s" % __version__
|
options['version'] = "compose %s" % __version__
|
||||||
return options
|
return options
|
||||||
|
|
||||||
def build(self, project, options):
|
def build(self, project, options):
|
||||||
|
@ -107,8 +107,8 @@ class TopLevelCommand(Command):
|
||||||
Build or rebuild services.
|
Build or rebuild services.
|
||||||
|
|
||||||
Services are built once and then tagged as `project_service`,
|
Services are built once and then tagged as `project_service`,
|
||||||
e.g. `figtest_db`. If you change a service's `Dockerfile` or the
|
e.g. `composetest_db`. If you change a service's `Dockerfile` or the
|
||||||
contents of its build directory, you can run `fig build` to rebuild it.
|
contents of its build directory, you can run `compose build` to rebuild it.
|
||||||
|
|
||||||
Usage: build [options] [SERVICE...]
|
Usage: build [options] [SERVICE...]
|
||||||
|
|
||||||
|
@ -261,11 +261,11 @@ class TopLevelCommand(Command):
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
$ fig run web python manage.py shell
|
$ compose run web python manage.py shell
|
||||||
|
|
||||||
By default, linked services will be started, unless they are already
|
By default, linked services will be started, unless they are already
|
||||||
running. If you do not want to start linked services, use
|
running. If you do not want to start linked services, use
|
||||||
`fig run --no-deps SERVICE COMMAND [ARGS...]`.
|
`compose run --no-deps SERVICE COMMAND [ARGS...]`.
|
||||||
|
|
||||||
Usage: run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
|
Usage: run [options] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
|
||||||
|
|
||||||
|
@ -280,7 +280,7 @@ class TopLevelCommand(Command):
|
||||||
--rm Remove container after run. Ignored in detached mode.
|
--rm Remove container after run. Ignored in detached mode.
|
||||||
--service-ports Run command with the service's ports enabled and mapped
|
--service-ports Run command with the service's ports enabled and mapped
|
||||||
to the host.
|
to the host.
|
||||||
-T Disable pseudo-tty allocation. By default `fig run`
|
-T Disable pseudo-tty allocation. By default `compose run`
|
||||||
allocates a TTY.
|
allocates a TTY.
|
||||||
"""
|
"""
|
||||||
service = project.get_service(options['SERVICE'])
|
service = project.get_service(options['SERVICE'])
|
||||||
|
@ -352,7 +352,7 @@ class TopLevelCommand(Command):
|
||||||
Numbers are specified in the form `service=num` as arguments.
|
Numbers are specified in the form `service=num` as arguments.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
$ fig scale web=2 worker=3
|
$ compose scale web=2 worker=3
|
||||||
|
|
||||||
Usage: scale [SERVICE=NUM...]
|
Usage: scale [SERVICE=NUM...]
|
||||||
"""
|
"""
|
||||||
|
@ -372,7 +372,7 @@ class TopLevelCommand(Command):
|
||||||
'Service "%s" cannot be scaled because it specifies a port '
|
'Service "%s" cannot be scaled because it specifies a port '
|
||||||
'on the host. If multiple containers for this service were '
|
'on the host. If multiple containers for this service were '
|
||||||
'created, the port would clash.\n\nRemove the ":" from the '
|
'created, the port would clash.\n\nRemove the ":" from the '
|
||||||
'port definition in fig.yml so Docker can choose a random '
|
'port definition in compose.yml so Docker can choose a random '
|
||||||
'port for each container.' % service_name)
|
'port for each container.' % service_name)
|
||||||
|
|
||||||
def start(self, project, options):
|
def start(self, project, options):
|
||||||
|
@ -387,7 +387,7 @@ class TopLevelCommand(Command):
|
||||||
"""
|
"""
|
||||||
Stop running containers without removing them.
|
Stop running containers without removing them.
|
||||||
|
|
||||||
They can be started again with `fig start`.
|
They can be started again with `compose start`.
|
||||||
|
|
||||||
Usage: stop [SERVICE...]
|
Usage: stop [SERVICE...]
|
||||||
"""
|
"""
|
||||||
|
@ -405,14 +405,14 @@ class TopLevelCommand(Command):
|
||||||
"""
|
"""
|
||||||
Build, (re)create, start and attach to containers for a service.
|
Build, (re)create, start and attach to containers for a service.
|
||||||
|
|
||||||
By default, `fig up` will aggregate the output of each container, and
|
By default, `compose up` will aggregate the output of each container, and
|
||||||
when it exits, all containers will be stopped. If you run `fig up -d`,
|
when it exits, all containers will be stopped. If you run `compose up -d`,
|
||||||
it'll start the containers in the background and leave them running.
|
it'll start the containers in the background and leave them running.
|
||||||
|
|
||||||
If there are existing containers for a service, `fig up` will stop
|
If there are existing containers for a service, `compose up` will stop
|
||||||
and recreate them (preserving mounted volumes with volumes-from),
|
and recreate them (preserving mounted volumes with volumes-from),
|
||||||
so that changes in `fig.yml` are picked up. If you do not want existing
|
so that changes in `compose.yml` are picked up. If you do not want existing
|
||||||
containers to be recreated, `fig up --no-recreate` will re-use existing
|
containers to be recreated, `compose up --no-recreate` will re-use existing
|
||||||
containers.
|
containers.
|
||||||
|
|
||||||
Usage: up [options] [SERVICE...]
|
Usage: up [options] [SERVICE...]
|
|
@ -67,7 +67,7 @@ class Project(object):
|
||||||
dicts = []
|
dicts = []
|
||||||
for service_name, service in list(config.items()):
|
for service_name, service in list(config.items()):
|
||||||
if not isinstance(service, dict):
|
if not isinstance(service, dict):
|
||||||
raise ConfigurationError('Service "%s" doesn\'t have any configuration options. All top level keys in your fig.yml must map to a dictionary of configuration options.' % service_name)
|
raise ConfigurationError('Service "%s" doesn\'t have any configuration options. All top level keys in your compose.yml must map to a dictionary of configuration options.' % service_name)
|
||||||
service['name'] = service_name
|
service['name'] = service_name
|
||||||
dicts.append(service)
|
dicts.append(service)
|
||||||
return cls.from_dicts(name, dicts, client)
|
return cls.from_dicts(name, dicts, client)
|
|
@ -127,7 +127,7 @@ class Service(object):
|
||||||
return project == self.project and name == self.name
|
return project == self.project and name == self.name
|
||||||
|
|
||||||
def get_container(self, number=1):
|
def get_container(self, number=1):
|
||||||
"""Return a :class:`fig.container.Container` for this service. The
|
"""Return a :class:`compose.container.Container` for this service. The
|
||||||
container must be active, and match `number`.
|
container must be active, and match `number`.
|
||||||
"""
|
"""
|
||||||
for container in self.client.containers():
|
for container in self.client.containers():
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -ex
|
set -ex
|
||||||
pushd docs
|
pushd docs
|
||||||
fig run --rm jekyll jekyll build
|
compose run --rm jekyll jekyll build
|
||||||
popd
|
popd
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
set -ex
|
set -ex
|
||||||
mkdir -p `pwd`/dist
|
mkdir -p `pwd`/dist
|
||||||
chmod 777 `pwd`/dist
|
chmod 777 `pwd`/dist
|
||||||
docker build -t fig .
|
docker build -t compose .
|
||||||
docker run -u user -v `pwd`/dist:/code/dist --rm --entrypoint pyinstaller fig -F bin/fig
|
docker run -u user -v `pwd`/dist:/code/dist --rm --entrypoint pyinstaller compose -F bin/compose
|
||||||
mv dist/fig dist/fig-Linux-x86_64
|
mv dist/compose dist/compose-Linux-x86_64
|
||||||
docker run -u user -v `pwd`/dist:/code/dist --rm --entrypoint dist/fig-Linux-x86_64 fig --version
|
docker run -u user -v `pwd`/dist:/code/dist --rm --entrypoint dist/compose-Linux-x86_64 compose --version
|
||||||
|
|
|
@ -5,6 +5,6 @@ virtualenv venv
|
||||||
venv/bin/pip install -r requirements.txt
|
venv/bin/pip install -r requirements.txt
|
||||||
venv/bin/pip install -r requirements-dev.txt
|
venv/bin/pip install -r requirements-dev.txt
|
||||||
venv/bin/pip install .
|
venv/bin/pip install .
|
||||||
venv/bin/pyinstaller -F bin/fig
|
venv/bin/pyinstaller -F bin/compose
|
||||||
mv dist/fig dist/fig-Darwin-x86_64
|
mv dist/compose dist/compose-Darwin-x86_64
|
||||||
dist/fig-Darwin-x86_64 --version
|
dist/compose-Darwin-x86_64 --version
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
find . -type f -name '*.pyc' -delete
|
find . -type f -name '*.pyc' -delete
|
||||||
rm -rf docs/_site build dist fig.egg-info
|
rm -rf docs/_site build dist compose.egg-info
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
script/build-docs
|
|
||||||
|
|
||||||
pushd docs/_site
|
|
||||||
|
|
||||||
export GIT_DIR=.git-gh-pages
|
|
||||||
export GIT_WORK_TREE=.
|
|
||||||
|
|
||||||
if [ ! -d "$GIT_DIR" ]; then
|
|
||||||
git init
|
|
||||||
fi
|
|
||||||
|
|
||||||
if !(git remote | grep origin); then
|
|
||||||
git remote add origin git@github.com:docker/fig.git
|
|
||||||
fi
|
|
||||||
|
|
||||||
git fetch origin
|
|
||||||
git reset --soft origin/gh-pages
|
|
||||||
|
|
||||||
echo ".git-gh-pages" > .gitignore
|
|
||||||
|
|
||||||
git add -A .
|
|
||||||
|
|
||||||
git commit -m "update" || echo "didn't commit"
|
|
||||||
git push origin master:gh-pages
|
|
||||||
|
|
||||||
popd
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -ex
|
set -ex
|
||||||
docker build -t fig .
|
docker build -t compose .
|
||||||
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm --entrypoint flake8 fig fig
|
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm --entrypoint flake8 compose compose
|
||||||
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm --entrypoint nosetests fig $@
|
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm --entrypoint nosetests compose $@
|
||||||
|
|
10
setup.py
10
setup.py
|
@ -48,10 +48,10 @@ if sys.version_info < (2, 7):
|
||||||
|
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='fig',
|
name='compose',
|
||||||
version=find_version("fig", "__init__.py"),
|
version=find_version("compose", "__init__.py"),
|
||||||
description='Fast, isolated development environments using Docker',
|
description='Multi-container orchestration for Docker',
|
||||||
url='http://www.fig.sh/',
|
url='https://www.docker.com/',
|
||||||
author='Docker, Inc.',
|
author='Docker, Inc.',
|
||||||
license='Apache License 2.0',
|
license='Apache License 2.0',
|
||||||
packages=find_packages(exclude=[ 'tests.*', 'tests' ]),
|
packages=find_packages(exclude=[ 'tests.*', 'tests' ]),
|
||||||
|
@ -61,6 +61,6 @@ setup(
|
||||||
tests_require=tests_require,
|
tests_require=tests_require,
|
||||||
entry_points="""
|
entry_points="""
|
||||||
[console_scripts]
|
[console_scripts]
|
||||||
fig=fig.cli.main:main
|
compose=compose.cli.main:main
|
||||||
""",
|
""",
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
implicit:
|
||||||
|
image: composetest_test
|
||||||
|
explicit:
|
||||||
|
image: composetest_test
|
||||||
|
command: [ "/bin/true" ]
|
|
@ -1,5 +0,0 @@
|
||||||
implicit:
|
|
||||||
image: figtest_test
|
|
||||||
explicit:
|
|
||||||
image: figtest_test
|
|
||||||
command: [ "/bin/true" ]
|
|
|
@ -5,7 +5,7 @@ from six import StringIO
|
||||||
from mock import patch
|
from mock import patch
|
||||||
|
|
||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
from fig.cli.main import TopLevelCommand
|
from compose.cli.main import TopLevelCommand
|
||||||
|
|
||||||
|
|
||||||
class CLITestCase(DockerClientTestCase):
|
class CLITestCase(DockerClientTestCase):
|
||||||
|
@ -14,7 +14,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
self.old_sys_exit = sys.exit
|
self.old_sys_exit = sys.exit
|
||||||
sys.exit = lambda code=0: None
|
sys.exit = lambda code=0: None
|
||||||
self.command = TopLevelCommand()
|
self.command = TopLevelCommand()
|
||||||
self.command.base_dir = 'tests/fixtures/simple-figfile'
|
self.command.base_dir = 'tests/fixtures/simple-composefile'
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
sys.exit = self.old_sys_exit
|
sys.exit = self.old_sys_exit
|
||||||
|
@ -27,43 +27,44 @@ class CLITestCase(DockerClientTestCase):
|
||||||
|
|
||||||
def test_help(self):
|
def test_help(self):
|
||||||
old_base_dir = self.command.base_dir
|
old_base_dir = self.command.base_dir
|
||||||
self.command.base_dir = 'tests/fixtures/no-figfile'
|
self.command.base_dir = 'tests/fixtures/no-composefile'
|
||||||
with self.assertRaises(SystemExit) as exc_context:
|
with self.assertRaises(SystemExit) as exc_context:
|
||||||
self.command.dispatch(['help', 'up'], None)
|
self.command.dispatch(['help', 'up'], None)
|
||||||
self.assertIn('Usage: up [options] [SERVICE...]', str(exc_context.exception))
|
self.assertIn('Usage: up [options] [SERVICE...]', str(exc_context.exception))
|
||||||
# self.project.kill() fails during teardown
|
# self.project.kill() fails during teardown
|
||||||
# unless there is a figfile.
|
# unless there is a composefile.
|
||||||
self.command.base_dir = old_base_dir
|
self.command.base_dir = old_base_dir
|
||||||
|
|
||||||
|
# TODO: address the "Inappropriate ioctl for device" warnings in test output
|
||||||
@patch('sys.stdout', new_callable=StringIO)
|
@patch('sys.stdout', new_callable=StringIO)
|
||||||
def test_ps(self, mock_stdout):
|
def test_ps(self, mock_stdout):
|
||||||
self.project.get_service('simple').create_container()
|
self.project.get_service('simple').create_container()
|
||||||
self.command.dispatch(['ps'], None)
|
self.command.dispatch(['ps'], None)
|
||||||
self.assertIn('simplefigfile_simple_1', mock_stdout.getvalue())
|
self.assertIn('simplecomposefile_simple_1', mock_stdout.getvalue())
|
||||||
|
|
||||||
@patch('sys.stdout', new_callable=StringIO)
|
@patch('sys.stdout', new_callable=StringIO)
|
||||||
def test_ps_default_figfile(self, mock_stdout):
|
def test_ps_default_composefile(self, mock_stdout):
|
||||||
self.command.base_dir = 'tests/fixtures/multiple-figfiles'
|
self.command.base_dir = 'tests/fixtures/multiple-composefiles'
|
||||||
self.command.dispatch(['up', '-d'], None)
|
self.command.dispatch(['up', '-d'], None)
|
||||||
self.command.dispatch(['ps'], None)
|
self.command.dispatch(['ps'], None)
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
self.assertIn('multiplefigfiles_simple_1', output)
|
self.assertIn('multiplecomposefiles_simple_1', output)
|
||||||
self.assertIn('multiplefigfiles_another_1', output)
|
self.assertIn('multiplecomposefiles_another_1', output)
|
||||||
self.assertNotIn('multiplefigfiles_yetanother_1', output)
|
self.assertNotIn('multiplecomposefiles_yetanother_1', output)
|
||||||
|
|
||||||
@patch('sys.stdout', new_callable=StringIO)
|
@patch('sys.stdout', new_callable=StringIO)
|
||||||
def test_ps_alternate_figfile(self, mock_stdout):
|
def test_ps_alternate_composefile(self, mock_stdout):
|
||||||
self.command.base_dir = 'tests/fixtures/multiple-figfiles'
|
self.command.base_dir = 'tests/fixtures/multiple-composefiles'
|
||||||
self.command.dispatch(['-f', 'fig2.yml', 'up', '-d'], None)
|
self.command.dispatch(['-f', 'compose2.yml', 'up', '-d'], None)
|
||||||
self.command.dispatch(['-f', 'fig2.yml', 'ps'], None)
|
self.command.dispatch(['-f', 'compose2.yml', 'ps'], None)
|
||||||
|
|
||||||
output = mock_stdout.getvalue()
|
output = mock_stdout.getvalue()
|
||||||
self.assertNotIn('multiplefigfiles_simple_1', output)
|
self.assertNotIn('multiplecomposefiles_simple_1', output)
|
||||||
self.assertNotIn('multiplefigfiles_another_1', output)
|
self.assertNotIn('multiplecomposefiles_another_1', output)
|
||||||
self.assertIn('multiplefigfiles_yetanother_1', output)
|
self.assertIn('multiplecomposefiles_yetanother_1', output)
|
||||||
|
|
||||||
@patch('fig.service.log')
|
@patch('compose.service.log')
|
||||||
def test_pull(self, mock_logging):
|
def test_pull(self, mock_logging):
|
||||||
self.command.dispatch(['pull'], None)
|
self.command.dispatch(['pull'], None)
|
||||||
mock_logging.info.assert_any_call('Pulling simple (busybox:latest)...')
|
mock_logging.info.assert_any_call('Pulling simple (busybox:latest)...')
|
||||||
|
@ -99,7 +100,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
self.assertFalse(config['AttachStdin'])
|
self.assertFalse(config['AttachStdin'])
|
||||||
|
|
||||||
def test_up_with_links(self):
|
def test_up_with_links(self):
|
||||||
self.command.base_dir = 'tests/fixtures/links-figfile'
|
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||||
self.command.dispatch(['up', '-d', 'web'], None)
|
self.command.dispatch(['up', '-d', 'web'], None)
|
||||||
web = self.project.get_service('web')
|
web = self.project.get_service('web')
|
||||||
db = self.project.get_service('db')
|
db = self.project.get_service('db')
|
||||||
|
@ -109,7 +110,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
self.assertEqual(len(console.containers()), 0)
|
self.assertEqual(len(console.containers()), 0)
|
||||||
|
|
||||||
def test_up_with_no_deps(self):
|
def test_up_with_no_deps(self):
|
||||||
self.command.base_dir = 'tests/fixtures/links-figfile'
|
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||||
self.command.dispatch(['up', '-d', '--no-deps', 'web'], None)
|
self.command.dispatch(['up', '-d', '--no-deps', 'web'], None)
|
||||||
web = self.project.get_service('web')
|
web = self.project.get_service('web')
|
||||||
db = self.project.get_service('db')
|
db = self.project.get_service('db')
|
||||||
|
@ -148,7 +149,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
|
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_service_without_links(self, mock_stdout):
|
def test_run_service_without_links(self, mock_stdout):
|
||||||
self.command.base_dir = 'tests/fixtures/links-figfile'
|
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||||
self.command.dispatch(['run', 'console', '/bin/true'], None)
|
self.command.dispatch(['run', 'console', '/bin/true'], None)
|
||||||
self.assertEqual(len(self.project.containers()), 0)
|
self.assertEqual(len(self.project.containers()), 0)
|
||||||
|
|
||||||
|
@ -161,7 +162,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
|
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_service_with_links(self, __):
|
def test_run_service_with_links(self, __):
|
||||||
self.command.base_dir = 'tests/fixtures/links-figfile'
|
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||||
self.command.dispatch(['run', 'web', '/bin/true'], None)
|
self.command.dispatch(['run', 'web', '/bin/true'], None)
|
||||||
db = self.project.get_service('db')
|
db = self.project.get_service('db')
|
||||||
console = self.project.get_service('console')
|
console = self.project.get_service('console')
|
||||||
|
@ -170,14 +171,14 @@ class CLITestCase(DockerClientTestCase):
|
||||||
|
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_with_no_deps(self, __):
|
def test_run_with_no_deps(self, __):
|
||||||
self.command.base_dir = 'tests/fixtures/links-figfile'
|
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||||
self.command.dispatch(['run', '--no-deps', 'web', '/bin/true'], None)
|
self.command.dispatch(['run', '--no-deps', 'web', '/bin/true'], None)
|
||||||
db = self.project.get_service('db')
|
db = self.project.get_service('db')
|
||||||
self.assertEqual(len(db.containers()), 0)
|
self.assertEqual(len(db.containers()), 0)
|
||||||
|
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_does_not_recreate_linked_containers(self, __):
|
def test_run_does_not_recreate_linked_containers(self, __):
|
||||||
self.command.base_dir = 'tests/fixtures/links-figfile'
|
self.command.base_dir = 'tests/fixtures/links-composefile'
|
||||||
self.command.dispatch(['up', '-d', 'db'], None)
|
self.command.dispatch(['up', '-d', 'db'], None)
|
||||||
db = self.project.get_service('db')
|
db = self.project.get_service('db')
|
||||||
self.assertEqual(len(db.containers()), 1)
|
self.assertEqual(len(db.containers()), 1)
|
||||||
|
@ -193,8 +194,8 @@ class CLITestCase(DockerClientTestCase):
|
||||||
|
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_without_command(self, __):
|
def test_run_without_command(self, __):
|
||||||
self.command.base_dir = 'tests/fixtures/commands-figfile'
|
self.command.base_dir = 'tests/fixtures/commands-composefile'
|
||||||
self.check_build('tests/fixtures/simple-dockerfile', tag='figtest_test')
|
self.check_build('tests/fixtures/simple-dockerfile', tag='composetest_test')
|
||||||
|
|
||||||
for c in self.project.containers(stopped=True, one_off=True):
|
for c in self.project.containers(stopped=True, one_off=True):
|
||||||
c.remove()
|
c.remove()
|
||||||
|
@ -233,7 +234,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_service_with_environement_overridden(self, _):
|
def test_run_service_with_environement_overridden(self, _):
|
||||||
name = 'service'
|
name = 'service'
|
||||||
self.command.base_dir = 'tests/fixtures/environment-figfile'
|
self.command.base_dir = 'tests/fixtures/environment-composefile'
|
||||||
self.command.dispatch(
|
self.command.dispatch(
|
||||||
['run', '-e', 'foo=notbar', '-e', 'allo=moto=bobo',
|
['run', '-e', 'foo=notbar', '-e', 'allo=moto=bobo',
|
||||||
'-e', 'alpha=beta', name],
|
'-e', 'alpha=beta', name],
|
||||||
|
@ -253,7 +254,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_service_without_map_ports(self, __):
|
def test_run_service_without_map_ports(self, __):
|
||||||
# create one off container
|
# create one off container
|
||||||
self.command.base_dir = 'tests/fixtures/ports-figfile'
|
self.command.base_dir = 'tests/fixtures/ports-composefile'
|
||||||
self.command.dispatch(['run', '-d', 'simple'], None)
|
self.command.dispatch(['run', '-d', 'simple'], None)
|
||||||
container = self.project.get_service('simple').containers(one_off=True)[0]
|
container = self.project.get_service('simple').containers(one_off=True)[0]
|
||||||
|
|
||||||
|
@ -271,7 +272,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
@patch('dockerpty.start')
|
@patch('dockerpty.start')
|
||||||
def test_run_service_with_map_ports(self, __):
|
def test_run_service_with_map_ports(self, __):
|
||||||
# create one off container
|
# create one off container
|
||||||
self.command.base_dir = 'tests/fixtures/ports-figfile'
|
self.command.base_dir = 'tests/fixtures/ports-composefile'
|
||||||
self.command.dispatch(['run', '-d', '--service-ports', 'simple'], None)
|
self.command.dispatch(['run', '-d', '--service-ports', 'simple'], None)
|
||||||
container = self.project.get_service('simple').containers(one_off=True)[0]
|
container = self.project.get_service('simple').containers(one_off=True)[0]
|
||||||
|
|
||||||
|
@ -368,7 +369,7 @@ class CLITestCase(DockerClientTestCase):
|
||||||
self.assertEqual(len(project.get_service('another').containers()), 0)
|
self.assertEqual(len(project.get_service('another').containers()), 0)
|
||||||
|
|
||||||
def test_port(self):
|
def test_port(self):
|
||||||
self.command.base_dir = 'tests/fixtures/ports-figfile'
|
self.command.base_dir = 'tests/fixtures/ports-composefile'
|
||||||
self.command.dispatch(['up', '-d'], None)
|
self.command.dispatch(['up', '-d'], None)
|
||||||
container = self.project.get_service('simple').get_container()
|
container = self.project.get_service('simple').get_container()
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from fig.project import Project, ConfigurationError
|
from compose.project import Project, ConfigurationError
|
||||||
from fig.container import Container
|
from compose.container import Container
|
||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
|
|
||||||
|
|
||||||
class ProjectTest(DockerClientTestCase):
|
class ProjectTest(DockerClientTestCase):
|
||||||
def test_volumes_from_service(self):
|
def test_volumes_from_service(self):
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='figtest',
|
name='composetest',
|
||||||
config={
|
config={
|
||||||
'data': {
|
'data': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
|
@ -29,14 +29,14 @@ class ProjectTest(DockerClientTestCase):
|
||||||
self.client,
|
self.client,
|
||||||
image='busybox:latest',
|
image='busybox:latest',
|
||||||
volumes=['/var/data'],
|
volumes=['/var/data'],
|
||||||
name='figtest_data_container',
|
name='composetest_data_container',
|
||||||
)
|
)
|
||||||
project = Project.from_config(
|
project = Project.from_config(
|
||||||
name='figtest',
|
name='composetest',
|
||||||
config={
|
config={
|
||||||
'db': {
|
'db': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
'volumes_from': ['figtest_data_container'],
|
'volumes_from': ['composetest_data_container'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
client=self.client,
|
client=self.client,
|
||||||
|
@ -47,7 +47,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_start_stop_kill_remove(self):
|
def test_start_stop_kill_remove(self):
|
||||||
web = self.create_service('web')
|
web = self.create_service('web')
|
||||||
db = self.create_service('db')
|
db = self.create_service('db')
|
||||||
project = Project('figtest', [web, db], self.client)
|
project = Project('composetest', [web, db], self.client)
|
||||||
|
|
||||||
project.start()
|
project.start()
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_project_up(self):
|
def test_project_up(self):
|
||||||
web = self.create_service('web')
|
web = self.create_service('web')
|
||||||
db = self.create_service('db', volumes=['/var/db'])
|
db = self.create_service('db', volumes=['/var/db'])
|
||||||
project = Project('figtest', [web, db], self.client)
|
project = Project('composetest', [web, db], self.client)
|
||||||
project.start()
|
project.start()
|
||||||
self.assertEqual(len(project.containers()), 0)
|
self.assertEqual(len(project.containers()), 0)
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_project_up_recreates_containers(self):
|
def test_project_up_recreates_containers(self):
|
||||||
web = self.create_service('web')
|
web = self.create_service('web')
|
||||||
db = self.create_service('db', volumes=['/etc'])
|
db = self.create_service('db', volumes=['/etc'])
|
||||||
project = Project('figtest', [web, db], self.client)
|
project = Project('composetest', [web, db], self.client)
|
||||||
project.start()
|
project.start()
|
||||||
self.assertEqual(len(project.containers()), 0)
|
self.assertEqual(len(project.containers()), 0)
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_project_up_with_no_recreate_running(self):
|
def test_project_up_with_no_recreate_running(self):
|
||||||
web = self.create_service('web')
|
web = self.create_service('web')
|
||||||
db = self.create_service('db', volumes=['/var/db'])
|
db = self.create_service('db', volumes=['/var/db'])
|
||||||
project = Project('figtest', [web, db], self.client)
|
project = Project('composetest', [web, db], self.client)
|
||||||
project.start()
|
project.start()
|
||||||
self.assertEqual(len(project.containers()), 0)
|
self.assertEqual(len(project.containers()), 0)
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_project_up_with_no_recreate_stopped(self):
|
def test_project_up_with_no_recreate_stopped(self):
|
||||||
web = self.create_service('web')
|
web = self.create_service('web')
|
||||||
db = self.create_service('db', volumes=['/var/db'])
|
db = self.create_service('db', volumes=['/var/db'])
|
||||||
project = Project('figtest', [web, db], self.client)
|
project = Project('composetest', [web, db], self.client)
|
||||||
project.start()
|
project.start()
|
||||||
self.assertEqual(len(project.containers()), 0)
|
self.assertEqual(len(project.containers()), 0)
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
def test_project_up_without_all_services(self):
|
def test_project_up_without_all_services(self):
|
||||||
console = self.create_service('console')
|
console = self.create_service('console')
|
||||||
db = self.create_service('db')
|
db = self.create_service('db')
|
||||||
project = Project('figtest', [console, db], self.client)
|
project = Project('composetest', [console, db], self.client)
|
||||||
project.start()
|
project.start()
|
||||||
self.assertEqual(len(project.containers()), 0)
|
self.assertEqual(len(project.containers()), 0)
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
db = self.create_service('db', volumes=['/var/db'])
|
db = self.create_service('db', volumes=['/var/db'])
|
||||||
web = self.create_service('web', links=[(db, 'db')])
|
web = self.create_service('web', links=[(db, 'db')])
|
||||||
|
|
||||||
project = Project('figtest', [web, db, console], self.client)
|
project = Project('composetest', [web, db, console], self.client)
|
||||||
project.start()
|
project.start()
|
||||||
self.assertEqual(len(project.containers()), 0)
|
self.assertEqual(len(project.containers()), 0)
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
db = self.create_service('db', volumes=['/var/db'])
|
db = self.create_service('db', volumes=['/var/db'])
|
||||||
web = self.create_service('web', links=[(db, 'db')])
|
web = self.create_service('web', links=[(db, 'db')])
|
||||||
|
|
||||||
project = Project('figtest', [web, db, console], self.client)
|
project = Project('composetest', [web, db, console], self.client)
|
||||||
project.start()
|
project.start()
|
||||||
self.assertEqual(len(project.containers()), 0)
|
self.assertEqual(len(project.containers()), 0)
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ class ProjectTest(DockerClientTestCase):
|
||||||
|
|
||||||
def test_unscale_after_restart(self):
|
def test_unscale_after_restart(self):
|
||||||
web = self.create_service('web')
|
web = self.create_service('web')
|
||||||
project = Project('figtest', [web], self.client)
|
project = Project('composetest', [web], self.client)
|
||||||
|
|
||||||
project.start()
|
project.start()
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,9 @@ from __future__ import absolute_import
|
||||||
import os
|
import os
|
||||||
from os import path
|
from os import path
|
||||||
|
|
||||||
from fig import Service
|
from compose import Service
|
||||||
from fig.service import CannotBeScaledError
|
from compose.service import CannotBeScaledError
|
||||||
from fig.container import Container
|
from compose.container import Container
|
||||||
from docker.errors import APIError
|
from docker.errors import APIError
|
||||||
from .testcases import DockerClientTestCase
|
from .testcases import DockerClientTestCase
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ class ServiceTest(DockerClientTestCase):
|
||||||
create_and_start_container(foo)
|
create_and_start_container(foo)
|
||||||
|
|
||||||
self.assertEqual(len(foo.containers()), 1)
|
self.assertEqual(len(foo.containers()), 1)
|
||||||
self.assertEqual(foo.containers()[0].name, 'figtest_foo_1')
|
self.assertEqual(foo.containers()[0].name, 'composetest_foo_1')
|
||||||
self.assertEqual(len(bar.containers()), 0)
|
self.assertEqual(len(bar.containers()), 0)
|
||||||
|
|
||||||
create_and_start_container(bar)
|
create_and_start_container(bar)
|
||||||
|
@ -33,8 +33,8 @@ class ServiceTest(DockerClientTestCase):
|
||||||
self.assertEqual(len(bar.containers()), 2)
|
self.assertEqual(len(bar.containers()), 2)
|
||||||
|
|
||||||
names = [c.name for c in bar.containers()]
|
names = [c.name for c in bar.containers()]
|
||||||
self.assertIn('figtest_bar_1', names)
|
self.assertIn('composetest_bar_1', names)
|
||||||
self.assertIn('figtest_bar_2', names)
|
self.assertIn('composetest_bar_2', names)
|
||||||
|
|
||||||
def test_containers_one_off(self):
|
def test_containers_one_off(self):
|
||||||
db = self.create_service('db')
|
db = self.create_service('db')
|
||||||
|
@ -45,7 +45,7 @@ class ServiceTest(DockerClientTestCase):
|
||||||
def test_project_is_added_to_container_name(self):
|
def test_project_is_added_to_container_name(self):
|
||||||
service = self.create_service('web')
|
service = self.create_service('web')
|
||||||
create_and_start_container(service)
|
create_and_start_container(service)
|
||||||
self.assertEqual(service.containers()[0].name, 'figtest_web_1')
|
self.assertEqual(service.containers()[0].name, 'composetest_web_1')
|
||||||
|
|
||||||
def test_start_stop(self):
|
def test_start_stop(self):
|
||||||
service = self.create_service('scalingtest')
|
service = self.create_service('scalingtest')
|
||||||
|
@ -86,13 +86,13 @@ class ServiceTest(DockerClientTestCase):
|
||||||
def test_create_container_with_one_off(self):
|
def test_create_container_with_one_off(self):
|
||||||
db = self.create_service('db')
|
db = self.create_service('db')
|
||||||
container = db.create_container(one_off=True)
|
container = db.create_container(one_off=True)
|
||||||
self.assertEqual(container.name, 'figtest_db_run_1')
|
self.assertEqual(container.name, 'composetest_db_run_1')
|
||||||
|
|
||||||
def test_create_container_with_one_off_when_existing_container_is_running(self):
|
def test_create_container_with_one_off_when_existing_container_is_running(self):
|
||||||
db = self.create_service('db')
|
db = self.create_service('db')
|
||||||
db.start()
|
db.start()
|
||||||
container = db.create_container(one_off=True)
|
container = db.create_container(one_off=True)
|
||||||
self.assertEqual(container.name, 'figtest_db_run_1')
|
self.assertEqual(container.name, 'composetest_db_run_1')
|
||||||
|
|
||||||
def test_create_container_with_unspecified_volume(self):
|
def test_create_container_with_unspecified_volume(self):
|
||||||
service = self.create_service('db', volumes=['/var/db'])
|
service = self.create_service('db', volumes=['/var/db'])
|
||||||
|
@ -146,7 +146,7 @@ class ServiceTest(DockerClientTestCase):
|
||||||
self.assertEqual(old_container.dictionary['Config']['Entrypoint'], ['sleep'])
|
self.assertEqual(old_container.dictionary['Config']['Entrypoint'], ['sleep'])
|
||||||
self.assertEqual(old_container.dictionary['Config']['Cmd'], ['300'])
|
self.assertEqual(old_container.dictionary['Config']['Cmd'], ['300'])
|
||||||
self.assertIn('FOO=1', old_container.dictionary['Config']['Env'])
|
self.assertIn('FOO=1', old_container.dictionary['Config']['Env'])
|
||||||
self.assertEqual(old_container.name, 'figtest_db_1')
|
self.assertEqual(old_container.name, 'composetest_db_1')
|
||||||
service.start_container(old_container)
|
service.start_container(old_container)
|
||||||
volume_path = old_container.inspect()['Volumes']['/etc']
|
volume_path = old_container.inspect()['Volumes']['/etc']
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ class ServiceTest(DockerClientTestCase):
|
||||||
self.assertEqual(new_container.dictionary['Config']['Entrypoint'], ['sleep'])
|
self.assertEqual(new_container.dictionary['Config']['Entrypoint'], ['sleep'])
|
||||||
self.assertEqual(new_container.dictionary['Config']['Cmd'], ['300'])
|
self.assertEqual(new_container.dictionary['Config']['Cmd'], ['300'])
|
||||||
self.assertIn('FOO=2', new_container.dictionary['Config']['Env'])
|
self.assertIn('FOO=2', new_container.dictionary['Config']['Env'])
|
||||||
self.assertEqual(new_container.name, 'figtest_db_1')
|
self.assertEqual(new_container.name, 'composetest_db_1')
|
||||||
self.assertEqual(new_container.inspect()['Volumes']['/etc'], volume_path)
|
self.assertEqual(new_container.inspect()['Volumes']['/etc'], volume_path)
|
||||||
self.assertIn(intermediate_container.id, new_container.dictionary['HostConfig']['VolumesFrom'])
|
self.assertIn(intermediate_container.id, new_container.dictionary['HostConfig']['VolumesFrom'])
|
||||||
|
|
||||||
|
@ -226,8 +226,8 @@ class ServiceTest(DockerClientTestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
set(web.containers()[0].links()),
|
set(web.containers()[0].links()),
|
||||||
set([
|
set([
|
||||||
'figtest_db_1', 'db_1',
|
'composetest_db_1', 'db_1',
|
||||||
'figtest_db_2', 'db_2',
|
'composetest_db_2', 'db_2',
|
||||||
'db',
|
'db',
|
||||||
]),
|
]),
|
||||||
)
|
)
|
||||||
|
@ -243,17 +243,17 @@ class ServiceTest(DockerClientTestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
set(web.containers()[0].links()),
|
set(web.containers()[0].links()),
|
||||||
set([
|
set([
|
||||||
'figtest_db_1', 'db_1',
|
'composetest_db_1', 'db_1',
|
||||||
'figtest_db_2', 'db_2',
|
'composetest_db_2', 'db_2',
|
||||||
'custom_link_name',
|
'custom_link_name',
|
||||||
]),
|
]),
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_start_container_with_external_links(self):
|
def test_start_container_with_external_links(self):
|
||||||
db = self.create_service('db')
|
db = self.create_service('db')
|
||||||
web = self.create_service('web', external_links=['figtest_db_1',
|
web = self.create_service('web', external_links=['composetest_db_1',
|
||||||
'figtest_db_2',
|
'composetest_db_2',
|
||||||
'figtest_db_3:db_3'])
|
'composetest_db_3:db_3'])
|
||||||
|
|
||||||
for _ in range(3):
|
for _ in range(3):
|
||||||
create_and_start_container(db)
|
create_and_start_container(db)
|
||||||
|
@ -262,8 +262,8 @@ class ServiceTest(DockerClientTestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
set(web.containers()[0].links()),
|
set(web.containers()[0].links()),
|
||||||
set([
|
set([
|
||||||
'figtest_db_1',
|
'composetest_db_1',
|
||||||
'figtest_db_2',
|
'composetest_db_2',
|
||||||
'db_3',
|
'db_3',
|
||||||
]),
|
]),
|
||||||
)
|
)
|
||||||
|
@ -288,8 +288,8 @@ class ServiceTest(DockerClientTestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
set(c.links()),
|
set(c.links()),
|
||||||
set([
|
set([
|
||||||
'figtest_db_1', 'db_1',
|
'composetest_db_1', 'db_1',
|
||||||
'figtest_db_2', 'db_2',
|
'composetest_db_2', 'db_2',
|
||||||
'db',
|
'db',
|
||||||
]),
|
]),
|
||||||
)
|
)
|
||||||
|
@ -299,20 +299,20 @@ class ServiceTest(DockerClientTestCase):
|
||||||
name='test',
|
name='test',
|
||||||
client=self.client,
|
client=self.client,
|
||||||
build='tests/fixtures/simple-dockerfile',
|
build='tests/fixtures/simple-dockerfile',
|
||||||
project='figtest',
|
project='composetest',
|
||||||
)
|
)
|
||||||
container = create_and_start_container(service)
|
container = create_and_start_container(service)
|
||||||
container.wait()
|
container.wait()
|
||||||
self.assertIn('success', container.logs())
|
self.assertIn('success', container.logs())
|
||||||
self.assertEqual(len(self.client.images(name='figtest_test')), 1)
|
self.assertEqual(len(self.client.images(name='composetest_test')), 1)
|
||||||
|
|
||||||
def test_start_container_uses_tagged_image_if_it_exists(self):
|
def test_start_container_uses_tagged_image_if_it_exists(self):
|
||||||
self.client.build('tests/fixtures/simple-dockerfile', tag='figtest_test')
|
self.client.build('tests/fixtures/simple-dockerfile', tag='composetest_test')
|
||||||
service = Service(
|
service = Service(
|
||||||
name='test',
|
name='test',
|
||||||
client=self.client,
|
client=self.client,
|
||||||
build='this/does/not/exist/and/will/throw/error',
|
build='this/does/not/exist/and/will/throw/error',
|
||||||
project='figtest',
|
project='composetest',
|
||||||
)
|
)
|
||||||
container = create_and_start_container(service)
|
container = create_and_start_container(service)
|
||||||
container.wait()
|
container.wait()
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from fig.service import Service
|
from compose.service import Service
|
||||||
from fig.cli.docker_client import docker_client
|
from compose.cli.docker_client import docker_client
|
||||||
from fig.progress_stream import stream_output
|
from compose.progress_stream import stream_output
|
||||||
from .. import unittest
|
from .. import unittest
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,18 +13,18 @@ class DockerClientTestCase(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
for c in self.client.containers(all=True):
|
for c in self.client.containers(all=True):
|
||||||
if c['Names'] and 'figtest' in c['Names'][0]:
|
if c['Names'] and 'composetest' in c['Names'][0]:
|
||||||
self.client.kill(c['Id'])
|
self.client.kill(c['Id'])
|
||||||
self.client.remove_container(c['Id'])
|
self.client.remove_container(c['Id'])
|
||||||
for i in self.client.images():
|
for i in self.client.images():
|
||||||
if isinstance(i.get('Tag'), basestring) and 'figtest' in i['Tag']:
|
if isinstance(i.get('Tag'), basestring) and 'composetest' in i['Tag']:
|
||||||
self.client.remove_image(i)
|
self.client.remove_image(i)
|
||||||
|
|
||||||
def create_service(self, name, **kwargs):
|
def create_service(self, name, **kwargs):
|
||||||
if 'command' not in kwargs:
|
if 'command' not in kwargs:
|
||||||
kwargs['command'] = ["/bin/sleep", "300"]
|
kwargs['command'] = ["/bin/sleep", "300"]
|
||||||
return Service(
|
return Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name=name,
|
name=name,
|
||||||
client=self.client,
|
client=self.client,
|
||||||
image="busybox:latest",
|
image="busybox:latest",
|
||||||
|
|
|
@ -5,7 +5,7 @@ import os
|
||||||
import mock
|
import mock
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
|
|
||||||
from fig.cli import docker_client
|
from compose.cli import docker_client
|
||||||
|
|
||||||
|
|
||||||
class DockerClientTestCase(unittest.TestCase):
|
class DockerClientTestCase(unittest.TestCase):
|
||||||
|
|
|
@ -2,7 +2,7 @@ from __future__ import unicode_literals
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
|
|
||||||
from fig.cli import verbose_proxy
|
from compose.cli import verbose_proxy
|
||||||
|
|
||||||
|
|
||||||
class VerboseProxyTestCase(unittest.TestCase):
|
class VerboseProxyTestCase(unittest.TestCase):
|
||||||
|
|
|
@ -6,8 +6,8 @@ from .. import unittest
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from fig.cli import main
|
from compose.cli import main
|
||||||
from fig.cli.main import TopLevelCommand
|
from compose.cli.main import TopLevelCommand
|
||||||
from six import StringIO
|
from six import StringIO
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,18 +16,18 @@ class CLITestCase(unittest.TestCase):
|
||||||
cwd = os.getcwd()
|
cwd = os.getcwd()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.chdir('tests/fixtures/simple-figfile')
|
os.chdir('tests/fixtures/simple-composefile')
|
||||||
command = TopLevelCommand()
|
command = TopLevelCommand()
|
||||||
project_name = command.get_project_name(command.get_config_path())
|
project_name = command.get_project_name(command.get_config_path())
|
||||||
self.assertEquals('simplefigfile', project_name)
|
self.assertEquals('simplecomposefile', project_name)
|
||||||
finally:
|
finally:
|
||||||
os.chdir(cwd)
|
os.chdir(cwd)
|
||||||
|
|
||||||
def test_project_name_with_explicit_base_dir(self):
|
def test_project_name_with_explicit_base_dir(self):
|
||||||
command = TopLevelCommand()
|
command = TopLevelCommand()
|
||||||
command.base_dir = 'tests/fixtures/simple-figfile'
|
command.base_dir = 'tests/fixtures/simple-composefile'
|
||||||
project_name = command.get_project_name(command.get_config_path())
|
project_name = command.get_project_name(command.get_config_path())
|
||||||
self.assertEquals('simplefigfile', project_name)
|
self.assertEquals('simplecomposefile', project_name)
|
||||||
|
|
||||||
def test_project_name_with_explicit_uppercase_base_dir(self):
|
def test_project_name_with_explicit_uppercase_base_dir(self):
|
||||||
command = TopLevelCommand()
|
command = TopLevelCommand()
|
||||||
|
@ -41,7 +41,7 @@ class CLITestCase(unittest.TestCase):
|
||||||
project_name = command.get_project_name(None, project_name=name)
|
project_name = command.get_project_name(None, project_name=name)
|
||||||
self.assertEquals('explicitprojectname', project_name)
|
self.assertEquals('explicitprojectname', project_name)
|
||||||
|
|
||||||
def test_project_name_from_environment(self):
|
def test_project_name_from_environment_old_var(self):
|
||||||
command = TopLevelCommand()
|
command = TopLevelCommand()
|
||||||
name = 'namefromenv'
|
name = 'namefromenv'
|
||||||
with mock.patch.dict(os.environ):
|
with mock.patch.dict(os.environ):
|
||||||
|
@ -49,18 +49,26 @@ class CLITestCase(unittest.TestCase):
|
||||||
project_name = command.get_project_name(None)
|
project_name = command.get_project_name(None)
|
||||||
self.assertEquals(project_name, name)
|
self.assertEquals(project_name, name)
|
||||||
|
|
||||||
|
def test_project_name_from_environment_new_var(self):
|
||||||
|
command = TopLevelCommand()
|
||||||
|
name = 'namefromenv'
|
||||||
|
with mock.patch.dict(os.environ):
|
||||||
|
os.environ['COMPOSE_PROJECT_NAME'] = name
|
||||||
|
project_name = command.get_project_name(None)
|
||||||
|
self.assertEquals(project_name, name)
|
||||||
|
|
||||||
def test_yaml_filename_check(self):
|
def test_yaml_filename_check(self):
|
||||||
command = TopLevelCommand()
|
command = TopLevelCommand()
|
||||||
command.base_dir = 'tests/fixtures/longer-filename-figfile'
|
command.base_dir = 'tests/fixtures/longer-filename-composefile'
|
||||||
with mock.patch('fig.cli.command.log', autospec=True) as mock_log:
|
with mock.patch('compose.cli.command.log', autospec=True) as mock_log:
|
||||||
self.assertTrue(command.get_config_path())
|
self.assertTrue(command.get_config_path())
|
||||||
self.assertEqual(mock_log.warning.call_count, 2)
|
self.assertEqual(mock_log.warning.call_count, 2)
|
||||||
|
|
||||||
def test_get_project(self):
|
def test_get_project(self):
|
||||||
command = TopLevelCommand()
|
command = TopLevelCommand()
|
||||||
command.base_dir = 'tests/fixtures/longer-filename-figfile'
|
command.base_dir = 'tests/fixtures/longer-filename-composefile'
|
||||||
project = command.get_project(command.get_config_path())
|
project = command.get_project(command.get_config_path())
|
||||||
self.assertEqual(project.name, 'longerfilenamefigfile')
|
self.assertEqual(project.name, 'longerfilenamecomposefile')
|
||||||
self.assertTrue(project.client)
|
self.assertTrue(project.client)
|
||||||
self.assertTrue(project.services)
|
self.assertTrue(project.services)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from .. import unittest
|
||||||
import mock
|
import mock
|
||||||
import docker
|
import docker
|
||||||
|
|
||||||
from fig.container import Container
|
from compose.container import Container
|
||||||
|
|
||||||
|
|
||||||
class ContainerTest(unittest.TestCase):
|
class ContainerTest(unittest.TestCase):
|
||||||
|
@ -20,7 +20,7 @@ class ContainerTest(unittest.TestCase):
|
||||||
"Ports": None,
|
"Ports": None,
|
||||||
"SizeRw": 0,
|
"SizeRw": 0,
|
||||||
"SizeRootFs": 0,
|
"SizeRootFs": 0,
|
||||||
"Names": ["/figtest_db_1", "/figtest_web_1/db"],
|
"Names": ["/composetest_db_1", "/composetest_web_1/db"],
|
||||||
"NetworkSettings": {
|
"NetworkSettings": {
|
||||||
"Ports": {},
|
"Ports": {},
|
||||||
},
|
},
|
||||||
|
@ -33,7 +33,7 @@ class ContainerTest(unittest.TestCase):
|
||||||
self.assertEqual(container.dictionary, {
|
self.assertEqual(container.dictionary, {
|
||||||
"Id": "abc",
|
"Id": "abc",
|
||||||
"Image":"busybox:latest",
|
"Image":"busybox:latest",
|
||||||
"Name": "/figtest_db_1",
|
"Name": "/composetest_db_1",
|
||||||
})
|
})
|
||||||
|
|
||||||
def test_from_ps_prefixed(self):
|
def test_from_ps_prefixed(self):
|
||||||
|
@ -45,7 +45,7 @@ class ContainerTest(unittest.TestCase):
|
||||||
self.assertEqual(container.dictionary, {
|
self.assertEqual(container.dictionary, {
|
||||||
"Id": "abc",
|
"Id": "abc",
|
||||||
"Image":"busybox:latest",
|
"Image":"busybox:latest",
|
||||||
"Name": "/figtest_db_1",
|
"Name": "/composetest_db_1",
|
||||||
})
|
})
|
||||||
|
|
||||||
def test_environment(self):
|
def test_environment(self):
|
||||||
|
@ -73,7 +73,7 @@ class ContainerTest(unittest.TestCase):
|
||||||
container = Container.from_ps(None,
|
container = Container.from_ps(None,
|
||||||
self.container_dict,
|
self.container_dict,
|
||||||
has_been_inspected=True)
|
has_been_inspected=True)
|
||||||
self.assertEqual(container.name, "figtest_db_1")
|
self.assertEqual(container.name, "composetest_db_1")
|
||||||
|
|
||||||
def test_name_without_project(self):
|
def test_name_without_project(self):
|
||||||
container = Container.from_ps(None,
|
container = Container.from_ps(None,
|
||||||
|
|
|
@ -2,7 +2,7 @@ from __future__ import unicode_literals
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from fig.cli.log_printer import LogPrinter
|
from compose.cli.log_printer import LogPrinter
|
||||||
from .. import unittest
|
from .. import unittest
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ from tests import unittest
|
||||||
import mock
|
import mock
|
||||||
from six import StringIO
|
from six import StringIO
|
||||||
|
|
||||||
from fig import progress_stream
|
from compose import progress_stream
|
||||||
|
|
||||||
|
|
||||||
class ProgressStreamTestCase(unittest.TestCase):
|
class ProgressStreamTestCase(unittest.TestCase):
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from .. import unittest
|
from .. import unittest
|
||||||
from fig.service import Service
|
from compose.service import Service
|
||||||
from fig.project import Project, ConfigurationError
|
from compose.project import Project, ConfigurationError
|
||||||
|
|
||||||
class ProjectTest(unittest.TestCase):
|
class ProjectTest(unittest.TestCase):
|
||||||
def test_from_dict(self):
|
def test_from_dict(self):
|
||||||
project = Project.from_dicts('figtest', [
|
project = Project.from_dicts('composetest', [
|
||||||
{
|
{
|
||||||
'name': 'web',
|
'name': 'web',
|
||||||
'image': 'busybox:latest'
|
'image': 'busybox:latest'
|
||||||
|
@ -22,7 +22,7 @@ class ProjectTest(unittest.TestCase):
|
||||||
self.assertEqual(project.get_service('db').options['image'], 'busybox:latest')
|
self.assertEqual(project.get_service('db').options['image'], 'busybox:latest')
|
||||||
|
|
||||||
def test_from_dict_sorts_in_dependency_order(self):
|
def test_from_dict_sorts_in_dependency_order(self):
|
||||||
project = Project.from_dicts('figtest', [
|
project = Project.from_dicts('composetest', [
|
||||||
{
|
{
|
||||||
'name': 'web',
|
'name': 'web',
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
|
@ -45,7 +45,7 @@ class ProjectTest(unittest.TestCase):
|
||||||
self.assertEqual(project.services[2].name, 'web')
|
self.assertEqual(project.services[2].name, 'web')
|
||||||
|
|
||||||
def test_from_config(self):
|
def test_from_config(self):
|
||||||
project = Project.from_config('figtest', {
|
project = Project.from_config('composetest', {
|
||||||
'web': {
|
'web': {
|
||||||
'image': 'busybox:latest',
|
'image': 'busybox:latest',
|
||||||
},
|
},
|
||||||
|
@ -61,13 +61,13 @@ class ProjectTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_from_config_throws_error_when_not_dict(self):
|
def test_from_config_throws_error_when_not_dict(self):
|
||||||
with self.assertRaises(ConfigurationError):
|
with self.assertRaises(ConfigurationError):
|
||||||
project = Project.from_config('figtest', {
|
project = Project.from_config('composetest', {
|
||||||
'web': 'busybox:latest',
|
'web': 'busybox:latest',
|
||||||
}, None)
|
}, None)
|
||||||
|
|
||||||
def test_get_service(self):
|
def test_get_service(self):
|
||||||
web = Service(
|
web = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='web',
|
name='web',
|
||||||
client=None,
|
client=None,
|
||||||
image="busybox:latest",
|
image="busybox:latest",
|
||||||
|
@ -77,11 +77,11 @@ class ProjectTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_get_services_returns_all_services_without_args(self):
|
def test_get_services_returns_all_services_without_args(self):
|
||||||
web = Service(
|
web = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='web',
|
name='web',
|
||||||
)
|
)
|
||||||
console = Service(
|
console = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='console',
|
name='console',
|
||||||
)
|
)
|
||||||
project = Project('test', [web, console], None)
|
project = Project('test', [web, console], None)
|
||||||
|
@ -89,11 +89,11 @@ class ProjectTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_get_services_returns_listed_services_with_args(self):
|
def test_get_services_returns_listed_services_with_args(self):
|
||||||
web = Service(
|
web = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='web',
|
name='web',
|
||||||
)
|
)
|
||||||
console = Service(
|
console = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='console',
|
name='console',
|
||||||
)
|
)
|
||||||
project = Project('test', [web, console], None)
|
project = Project('test', [web, console], None)
|
||||||
|
@ -101,20 +101,20 @@ class ProjectTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_get_services_with_include_links(self):
|
def test_get_services_with_include_links(self):
|
||||||
db = Service(
|
db = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='db',
|
name='db',
|
||||||
)
|
)
|
||||||
web = Service(
|
web = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='web',
|
name='web',
|
||||||
links=[(db, 'database')]
|
links=[(db, 'database')]
|
||||||
)
|
)
|
||||||
cache = Service(
|
cache = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='cache'
|
name='cache'
|
||||||
)
|
)
|
||||||
console = Service(
|
console = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='console',
|
name='console',
|
||||||
links=[(web, 'web')]
|
links=[(web, 'web')]
|
||||||
)
|
)
|
||||||
|
@ -126,11 +126,11 @@ class ProjectTest(unittest.TestCase):
|
||||||
|
|
||||||
def test_get_services_removes_duplicates_following_links(self):
|
def test_get_services_removes_duplicates_following_links(self):
|
||||||
db = Service(
|
db = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='db',
|
name='db',
|
||||||
)
|
)
|
||||||
web = Service(
|
web = Service(
|
||||||
project='figtest',
|
project='composetest',
|
||||||
name='web',
|
name='web',
|
||||||
links=[(db, 'database')]
|
links=[(db, 'database')]
|
||||||
)
|
)
|
||||||
|
|
|
@ -8,9 +8,9 @@ import mock
|
||||||
import docker
|
import docker
|
||||||
from requests import Response
|
from requests import Response
|
||||||
|
|
||||||
from fig import Service
|
from compose import Service
|
||||||
from fig.container import Container
|
from compose.container import Container
|
||||||
from fig.service import (
|
from compose.service import (
|
||||||
ConfigError,
|
ConfigError,
|
||||||
split_port,
|
split_port,
|
||||||
build_port_bindings,
|
build_port_bindings,
|
||||||
|
@ -203,7 +203,7 @@ class ServiceTest(unittest.TestCase):
|
||||||
|
|
||||||
self.assertRaises(ValueError, service.get_container)
|
self.assertRaises(ValueError, service.get_container)
|
||||||
|
|
||||||
@mock.patch('fig.service.Container', autospec=True)
|
@mock.patch('compose.service.Container', autospec=True)
|
||||||
def test_get_container(self, mock_container_class):
|
def test_get_container(self, mock_container_class):
|
||||||
container_dict = dict(Name='default_foo_2')
|
container_dict = dict(Name='default_foo_2')
|
||||||
self.mock_client.containers.return_value = [container_dict]
|
self.mock_client.containers.return_value = [container_dict]
|
||||||
|
@ -214,15 +214,15 @@ class ServiceTest(unittest.TestCase):
|
||||||
mock_container_class.from_ps.assert_called_once_with(
|
mock_container_class.from_ps.assert_called_once_with(
|
||||||
self.mock_client, container_dict)
|
self.mock_client, container_dict)
|
||||||
|
|
||||||
@mock.patch('fig.service.log', autospec=True)
|
@mock.patch('compose.service.log', autospec=True)
|
||||||
def test_pull_image(self, mock_log):
|
def test_pull_image(self, mock_log):
|
||||||
service = Service('foo', client=self.mock_client, image='someimage:sometag')
|
service = Service('foo', client=self.mock_client, image='someimage:sometag')
|
||||||
service.pull(insecure_registry=True)
|
service.pull(insecure_registry=True)
|
||||||
self.mock_client.pull.assert_called_once_with('someimage:sometag', insecure_registry=True)
|
self.mock_client.pull.assert_called_once_with('someimage:sometag', insecure_registry=True)
|
||||||
mock_log.info.assert_called_once_with('Pulling foo (someimage:sometag)...')
|
mock_log.info.assert_called_once_with('Pulling foo (someimage:sometag)...')
|
||||||
|
|
||||||
@mock.patch('fig.service.Container', autospec=True)
|
@mock.patch('compose.service.Container', autospec=True)
|
||||||
@mock.patch('fig.service.log', autospec=True)
|
@mock.patch('compose.service.log', autospec=True)
|
||||||
def test_create_container_from_insecure_registry(
|
def test_create_container_from_insecure_registry(
|
||||||
self,
|
self,
|
||||||
mock_log,
|
mock_log,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from fig.project import sort_service_dicts, DependencyError
|
from compose.project import sort_service_dicts, DependencyError
|
||||||
from .. import unittest
|
from .. import unittest
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from fig.cli.utils import split_buffer
|
from compose.cli.utils import split_buffer
|
||||||
from .. import unittest
|
from .. import unittest
|
||||||
|
|
||||||
class SplitBufferTest(unittest.TestCase):
|
class SplitBufferTest(unittest.TestCase):
|
||||||
|
|
Loading…
Reference in New Issue