From 8cf84ea552e8fa14d26875b41b3d70d70ee7b44e Mon Sep 17 00:00:00 2001 From: Mazz Mosley Date: Wed, 1 Jul 2015 17:47:44 +0100 Subject: [PATCH 1/2] Fix missing image names These tests were indeed raising a config error, but not for the reason intended/tested for. I've added in the image name so the config error raise is correctly testing the Service name. Signed-off-by: Mazz Mosley --- tests/unit/service_test.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/unit/service_test.py b/tests/unit/service_test.py index f99cbbc9d..fb6b56c48 100644 --- a/tests/unit/service_test.py +++ b/tests/unit/service_test.py @@ -28,16 +28,16 @@ class ServiceTest(unittest.TestCase): self.mock_client = mock.create_autospec(docker.Client) def test_name_validations(self): - self.assertRaises(ConfigError, lambda: Service(name='')) + self.assertRaises(ConfigError, lambda: Service(name='', image='foo')) - self.assertRaises(ConfigError, lambda: Service(name=' ')) - self.assertRaises(ConfigError, lambda: Service(name='/')) - self.assertRaises(ConfigError, lambda: Service(name='!')) - self.assertRaises(ConfigError, lambda: Service(name='\xe2')) - self.assertRaises(ConfigError, lambda: Service(name='_')) - self.assertRaises(ConfigError, lambda: Service(name='____')) - self.assertRaises(ConfigError, lambda: Service(name='foo_bar')) - self.assertRaises(ConfigError, lambda: Service(name='__foo_bar__')) + self.assertRaises(ConfigError, lambda: Service(name=' ', image='foo')) + self.assertRaises(ConfigError, lambda: Service(name='/', image='foo')) + self.assertRaises(ConfigError, lambda: Service(name='!', image='foo')) + self.assertRaises(ConfigError, lambda: Service(name='\xe2', image='foo')) + self.assertRaises(ConfigError, lambda: Service(name='_', image='foo')) + self.assertRaises(ConfigError, lambda: Service(name='____', image='foo')) + self.assertRaises(ConfigError, lambda: Service(name='foo_bar', image='foo')) + self.assertRaises(ConfigError, lambda: Service(name='__foo_bar__', image='foo')) Service('a', image='foo') Service('foo', image='foo') From f33f673b491989e2f5db2d1c9321ce1e94914e07 Mon Sep 17 00:00:00 2001 From: Mazz Mosley Date: Wed, 1 Jul 2015 17:56:39 +0100 Subject: [PATCH 2/2] Allow _.- chars in service names As VALID_CHARS is shared with project names, these chars are also now allowed within project names. Signed-off-by: Mazz Mosley --- compose/service.py | 2 +- tests/unit/service_test.py | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/compose/service.py b/compose/service.py index 89851e070..012499afe 100644 --- a/compose/service.py +++ b/compose/service.py @@ -47,7 +47,7 @@ DOCKER_START_KEYS = [ 'security_opt', ] -VALID_NAME_CHARS = '[a-zA-Z0-9]' +VALID_NAME_CHARS = '[a-zA-Z0-9\._\-]' class BuildError(Exception): diff --git a/tests/unit/service_test.py b/tests/unit/service_test.py index fb6b56c48..0327874c1 100644 --- a/tests/unit/service_test.py +++ b/tests/unit/service_test.py @@ -34,18 +34,23 @@ class ServiceTest(unittest.TestCase): self.assertRaises(ConfigError, lambda: Service(name='/', image='foo')) self.assertRaises(ConfigError, lambda: Service(name='!', image='foo')) self.assertRaises(ConfigError, lambda: Service(name='\xe2', image='foo')) - self.assertRaises(ConfigError, lambda: Service(name='_', image='foo')) - self.assertRaises(ConfigError, lambda: Service(name='____', image='foo')) - self.assertRaises(ConfigError, lambda: Service(name='foo_bar', image='foo')) - self.assertRaises(ConfigError, lambda: Service(name='__foo_bar__', image='foo')) Service('a', image='foo') Service('foo', image='foo') + Service('foo-bar', image='foo') + Service('foo.bar', image='foo') + Service('foo_bar', image='foo') + Service('_', image='foo') + Service('___', image='foo') + Service('-', image='foo') + Service('--', image='foo') + Service('.__.', image='foo') def test_project_validation(self): self.assertRaises(ConfigError, lambda: Service('bar')) - self.assertRaises(ConfigError, lambda: Service(name='foo', project='_', image='foo')) - Service(name='foo', project='bar', image='foo') + self.assertRaises(ConfigError, lambda: Service(name='foo', project='>', image='foo')) + + Service(name='foo', project='bar.bar__', image='foo') def test_containers(self): service = Service('db', self.mock_client, 'myproject', image='foo')