Browse Source

WIP: rename Fig to Compose

Signed-off-by: Aanand Prasad <[email protected]>
Aanand Prasad 10 years ago
parent
commit
2af7693e64
54 changed files with 199 additions and 211 deletions
  1. 1 1
      .gitignore
  2. 1 1
      Dockerfile
  3. 3 0
      bin/compose
  4. 0 3
      bin/fig
  5. 0 0
      compose/__init__.py
  6. 0 0
      compose/cli/__init__.py
  7. 0 0
      compose/cli/colors.py
  8. 19 11
      compose/cli/command.py
  9. 0 0
      compose/cli/docker_client.py
  10. 0 0
      compose/cli/docopt_command.py
  11. 2 2
      compose/cli/errors.py
  12. 0 0
      compose/cli/formatter.py
  13. 0 0
      compose/cli/log_printer.py
  14. 17 17
      compose/cli/main.py
  15. 0 0
      compose/cli/multiplexer.py
  16. 0 0
      compose/cli/utils.py
  17. 0 0
      compose/cli/verbose_proxy.py
  18. 0 0
      compose/container.py
  19. 0 0
      compose/progress_stream.py
  20. 1 1
      compose/project.py
  21. 1 1
      compose/service.py
  22. 1 1
      script/build-docs
  23. 4 4
      script/build-linux
  24. 3 3
      script/build-osx
  25. 1 1
      script/clean
  26. 0 29
      script/deploy-docs
  27. 3 3
      script/test
  28. 5 5
      setup.py
  29. 5 0
      tests/fixtures/commands-composefile/compose.yml
  30. 0 5
      tests/fixtures/commands-figfile/fig.yml
  31. 0 0
      tests/fixtures/dockerfile_with_entrypoint/compose.yml
  32. 0 0
      tests/fixtures/environment-composefile/compose.yml
  33. 0 0
      tests/fixtures/links-composefile/compose.yml
  34. 0 0
      tests/fixtures/longer-filename-composefile/compose.yaml
  35. 0 0
      tests/fixtures/multiple-composefiles/compose.yml
  36. 0 0
      tests/fixtures/multiple-composefiles/compose2.yml
  37. 0 0
      tests/fixtures/no-composefile/.gitignore
  38. 0 0
      tests/fixtures/ports-composefile/compose.yml
  39. 0 0
      tests/fixtures/simple-composefile/compose.yml
  40. 0 0
      tests/fixtures/simple-dockerfile/compose.yml
  41. 31 30
      tests/integration/cli_test.py
  42. 15 15
      tests/integration/project_test.py
  43. 26 26
      tests/integration/service_test.py
  44. 6 6
      tests/integration/testcases.py
  45. 1 1
      tests/unit/cli/docker_client_test.py
  46. 1 1
      tests/unit/cli/verbose_proxy_test.py
  47. 19 11
      tests/unit/cli_test.py
  48. 5 5
      tests/unit/container_test.py
  49. 1 1
      tests/unit/log_printer_test.py
  50. 1 1
      tests/unit/progress_stream_test.py
  51. 17 17
      tests/unit/project_test.py
  52. 7 7
      tests/unit/service_test.py
  53. 1 1
      tests/unit/sort_service_test.py
  54. 1 1
      tests/unit/split_buffer_test.py

+ 1 - 1
.gitignore

@@ -5,4 +5,4 @@
 /dist
 /dist
 /docs/_site
 /docs/_site
 /venv
 /venv
-fig.spec
+compose.spec

+ 1 - 1
Dockerfile

@@ -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"]

+ 3 - 0
bin/compose

@@ -0,0 +1,3 @@
+#!/usr/bin/env python
+from compose.cli.main import main
+main()

+ 0 - 3
bin/fig

@@ -1,3 +0,0 @@
-#!/usr/bin/env python
-from fig.cli.main import main
-main()

+ 0 - 0
fig/__init__.py → compose/__init__.py


+ 0 - 0
fig/cli/__init__.py → compose/cli/__init__.py


+ 0 - 0
fig/cli/colors.py → compose/cli/colors.py


+ 19 - 11
fig/cli/command.py → compose/cli/command.py

@@ -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')):
-            log.warning("Fig just read the file 'fig.yaml' on startup, rather "
-                        "than 'fig.yml'")
-            log.warning("Please be aware that fig.yml the expected extension "
+        if os.path.exists(os.path.join(self.base_dir, 'compose.yaml')):
+            log.warning("Fig just read the file 'compose.yaml' on startup, rather "
+                        "than 'compose.yml'")
+            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')

+ 0 - 0
fig/cli/docker_client.py → compose/cli/docker_client.py


+ 0 - 0
fig/cli/docopt_command.py → compose/cli/docopt_command.py


+ 2 - 2
fig/cli/errors.py → compose/cli/errors.py

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

+ 0 - 0
fig/cli/formatter.py → compose/cli/formatter.py


+ 0 - 0
fig/cli/log_printer.py → compose/cli/log_printer.py


+ 17 - 17
fig/cli/main.py → compose/cli/main.py

@@ -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...]
-      fig -h|--help
+      compose [options] [COMMAND] [ARGS...]
+      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
-        contents of its build directory, you can run `fig build` to rebuild it.
+        e.g. `composetest_db`. If you change a service's `Dockerfile` or the
+        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
-        when it exits, all containers will be stopped. If you run `fig up -d`,
+        By default, `compose up` will aggregate the output of each container, and
+        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
-        containers to be recreated, `fig up --no-recreate` will re-use existing
+        so that changes in `compose.yml` are picked up. If you do not want existing
+        containers to be recreated, `compose up --no-recreate` will re-use existing
         containers.
         containers.
 
 
         Usage: up [options] [SERVICE...]
         Usage: up [options] [SERVICE...]

+ 0 - 0
fig/cli/multiplexer.py → compose/cli/multiplexer.py


+ 0 - 0
fig/cli/utils.py → compose/cli/utils.py


+ 0 - 0
fig/cli/verbose_proxy.py → compose/cli/verbose_proxy.py


+ 0 - 0
fig/container.py → compose/container.py


+ 0 - 0
fig/progress_stream.py → compose/progress_stream.py


+ 1 - 1
fig/project.py → compose/project.py

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

+ 1 - 1
fig/service.py → compose/service.py

@@ -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 - 1
script/build-docs

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

+ 4 - 4
script/build-linux

@@ -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 run -u user -v `pwd`/dist:/code/dist --rm --entrypoint pyinstaller fig -F bin/fig
-mv dist/fig dist/fig-Linux-x86_64
-docker run -u user -v `pwd`/dist:/code/dist --rm --entrypoint dist/fig-Linux-x86_64 fig --version
+docker build -t compose .
+docker run -u user -v `pwd`/dist:/code/dist --rm --entrypoint pyinstaller compose -F bin/compose
+mv dist/compose dist/compose-Linux-x86_64
+docker run -u user -v `pwd`/dist:/code/dist --rm --entrypoint dist/compose-Linux-x86_64 compose --version

+ 3 - 3
script/build-osx

@@ -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
-mv dist/fig dist/fig-Darwin-x86_64
-dist/fig-Darwin-x86_64 --version
+venv/bin/pyinstaller -F bin/compose
+mv dist/compose dist/compose-Darwin-x86_64
+dist/compose-Darwin-x86_64 --version

+ 1 - 1
script/clean

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

+ 0 - 29
script/deploy-docs

@@ -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 [email protected]: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

+ 3 - 3
script/test

@@ -1,5 +1,5 @@
 #!/bin/sh
 #!/bin/sh
 set -ex
 set -ex
-docker build -t fig .
-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 nosetests fig $@
+docker build -t compose .
+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 compose $@

+ 5 - 5
setup.py

@@ -48,10 +48,10 @@ if sys.version_info < (2, 7):
 
 
 
 
 setup(
 setup(
-    name='fig',
-    version=find_version("fig", "__init__.py"),
-    description='Fast, isolated development environments using Docker',
-    url='http://www.fig.sh/',
+    name='compose',
+    version=find_version("compose", "__init__.py"),
+    description='Multi-container orchestration for Docker',
+    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
     """,
     """,
 )
 )

+ 5 - 0
tests/fixtures/commands-composefile/compose.yml

@@ -0,0 +1,5 @@
+implicit:
+  image: composetest_test
+explicit:
+  image: composetest_test
+  command: [ "/bin/true" ]

+ 0 - 5
tests/fixtures/commands-figfile/fig.yml

@@ -1,5 +0,0 @@
-implicit:
-  image: figtest_test
-explicit:
-  image: figtest_test
-  command: [ "/bin/true" ]

+ 0 - 0
tests/fixtures/dockerfile_with_entrypoint/fig.yml → tests/fixtures/dockerfile_with_entrypoint/compose.yml


+ 0 - 0
tests/fixtures/environment-figfile/fig.yml → tests/fixtures/environment-composefile/compose.yml


+ 0 - 0
tests/fixtures/links-figfile/fig.yml → tests/fixtures/links-composefile/compose.yml


+ 0 - 0
tests/fixtures/longer-filename-figfile/fig.yaml → tests/fixtures/longer-filename-composefile/compose.yaml


+ 0 - 0
tests/fixtures/multiple-figfiles/fig.yml → tests/fixtures/multiple-composefiles/compose.yml


+ 0 - 0
tests/fixtures/multiple-figfiles/fig2.yml → tests/fixtures/multiple-composefiles/compose2.yml


+ 0 - 0
tests/fixtures/no-figfile/.gitignore → tests/fixtures/no-composefile/.gitignore


+ 0 - 0
tests/fixtures/ports-figfile/fig.yml → tests/fixtures/ports-composefile/compose.yml


+ 0 - 0
tests/fixtures/simple-figfile/fig.yml → tests/fixtures/simple-composefile/compose.yml


+ 0 - 0
tests/fixtures/simple-dockerfile/fig.yml → tests/fixtures/simple-dockerfile/compose.yml


+ 31 - 30
tests/integration/cli_test.py

@@ -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):
-        self.command.base_dir = 'tests/fixtures/multiple-figfiles'
+    def test_ps_default_composefile(self, mock_stdout):
+        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('multiplefigfiles_another_1', output)
-        self.assertNotIn('multiplefigfiles_yetanother_1', output)
+        self.assertIn('multiplecomposefiles_simple_1', output)
+        self.assertIn('multiplecomposefiles_another_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):
-        self.command.base_dir = 'tests/fixtures/multiple-figfiles'
-        self.command.dispatch(['-f', 'fig2.yml', 'up', '-d'], None)
-        self.command.dispatch(['-f', 'fig2.yml', 'ps'], None)
+    def test_ps_alternate_composefile(self, mock_stdout):
+        self.command.base_dir = 'tests/fixtures/multiple-composefiles'
+        self.command.dispatch(['-f', 'compose2.yml', 'up', '-d'], 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('multiplefigfiles_another_1', output)
-        self.assertIn('multiplefigfiles_yetanother_1', output)
+        self.assertNotIn('multiplecomposefiles_simple_1', output)
+        self.assertNotIn('multiplecomposefiles_another_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.check_build('tests/fixtures/simple-dockerfile', tag='figtest_test')
+        self.command.base_dir = 'tests/fixtures/commands-composefile'
+        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()
 
 

+ 15 - 15
tests/integration/project_test.py

@@ -1,13 +1,13 @@
 from __future__ import unicode_literals
 from __future__ import unicode_literals
-from fig.project import Project, ConfigurationError
-from fig.container import Container
+from compose.project import Project, ConfigurationError
+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()
 
 

+ 26 - 26
tests/integration/service_test.py

@@ -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 fig.service import CannotBeScaledError
-from fig.container import Container
+from compose import Service
+from compose.service import CannotBeScaledError
+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('figtest_bar_2', names)
+        self.assertIn('composetest_bar_1', 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',
-                'figtest_db_2', 'db_2',
+                'composetest_db_1', 'db_1',
+                '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',
-                'figtest_db_2', 'db_2',
+                'composetest_db_1', 'db_1',
+                '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',
-                                                         'figtest_db_2',
-                                                         'figtest_db_3:db_3'])
+        web = self.create_service('web', external_links=['composetest_db_1',
+                                                         'composetest_db_2',
+                                                         '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',
-                'figtest_db_2',
+                'composetest_db_1',
+                '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',
-                'figtest_db_2', 'db_2',
+                'composetest_db_1', 'db_1',
+                '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()

+ 6 - 6
tests/integration/testcases.py

@@ -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 fig.cli.docker_client import docker_client
-from fig.progress_stream import stream_output
+from compose.service import Service
+from compose.cli.docker_client import docker_client
+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",

+ 1 - 1
tests/unit/cli/docker_client_test.py

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

+ 1 - 1
tests/unit/cli/verbose_proxy_test.py

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

+ 19 - 11
tests/unit/cli_test.py

@@ -6,8 +6,8 @@ from .. import unittest
 
 
 import mock
 import mock
 
 
-from fig.cli import main
-from fig.cli.main import TopLevelCommand
+from compose.cli import main
+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'
-        with mock.patch('fig.cli.command.log', autospec=True) as mock_log:
+        command.base_dir = 'tests/fixtures/longer-filename-composefile'
+        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)
 
 

+ 5 - 5
tests/unit/container_test.py

@@ -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,

+ 1 - 1
tests/unit/log_printer_test.py

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

+ 1 - 1
tests/unit/progress_stream_test.py

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

+ 17 - 17
tests/unit/project_test.py

@@ -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 fig.project import Project, ConfigurationError
+from compose.service import Service
+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')]
         )
         )

+ 7 - 7
tests/unit/service_test.py

@@ -8,9 +8,9 @@ import mock
 import docker
 import docker
 from requests import Response
 from requests import Response
 
 
-from fig import Service
-from fig.container import Container
-from fig.service import (
+from compose import Service
+from compose.container import Container
+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('fig.service.log', autospec=True)
+    @mock.patch('compose.service.Container', 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 - 1
tests/unit/sort_service_test.py

@@ -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 - 1
tests/unit/split_buffer_test.py

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