|  | @@ -4,9 +4,7 @@ by `docker-compose up`.
 | 
	
		
			
				|  |  |  """
 | 
	
		
			
				|  |  |  from __future__ import unicode_literals
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import os
 | 
	
		
			
				|  |  | -import shutil
 | 
	
		
			
				|  |  | -import tempfile
 | 
	
		
			
				|  |  | +import py
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from .testcases import DockerClientTestCase
 | 
	
		
			
				|  |  |  from compose.config import config
 | 
	
	
		
			
				|  | @@ -232,40 +230,49 @@ class ServiceStateTest(DockerClientTestCase):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          image_id = self.client.images(name='busybox')[0]['Id']
 | 
	
		
			
				|  |  |          self.client.tag(image_id, repository=repo, tag=tag)
 | 
	
		
			
				|  |  | +        self.addCleanup(self.client.remove_image, image)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        try:
 | 
	
		
			
				|  |  | -            web = self.create_service('web', image=image)
 | 
	
		
			
				|  |  | -            container = web.create_container()
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            # update the image
 | 
	
		
			
				|  |  | -            c = self.client.create_container(image, ['touch', '/hello.txt'])
 | 
	
		
			
				|  |  | -            self.client.commit(c, repository=repo, tag=tag)
 | 
	
		
			
				|  |  | -            self.client.remove_container(c)
 | 
	
		
			
				|  |  | +        web = self.create_service('web', image=image)
 | 
	
		
			
				|  |  | +        container = web.create_container()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            web = self.create_service('web', image=image)
 | 
	
		
			
				|  |  | -            self.assertEqual(('recreate', [container]), web.convergence_plan())
 | 
	
		
			
				|  |  | +        # update the image
 | 
	
		
			
				|  |  | +        c = self.client.create_container(image, ['touch', '/hello.txt'])
 | 
	
		
			
				|  |  | +        self.client.commit(c, repository=repo, tag=tag)
 | 
	
		
			
				|  |  | +        self.client.remove_container(c)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        finally:
 | 
	
		
			
				|  |  | -            self.client.remove_image(image)
 | 
	
		
			
				|  |  | +        web = self.create_service('web', image=image)
 | 
	
		
			
				|  |  | +        self.assertEqual(('recreate', [container]), web.convergence_plan())
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def test_trigger_recreate_with_build(self):
 | 
	
		
			
				|  |  | -        context = tempfile.mkdtemp()
 | 
	
		
			
				|  |  | +        context = py.test.ensuretemp('test_trigger_recreate_with_build')
 | 
	
		
			
				|  |  | +        self.addCleanup(context.remove)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          base_image = "FROM busybox\nLABEL com.docker.compose.test_image=true\n"
 | 
	
		
			
				|  |  | +        dockerfile = context.join('Dockerfile')
 | 
	
		
			
				|  |  | +        dockerfile.write(base_image)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        try:
 | 
	
		
			
				|  |  | -            dockerfile = os.path.join(context, 'Dockerfile')
 | 
	
		
			
				|  |  | +        web = self.create_service('web', build=str(context))
 | 
	
		
			
				|  |  | +        container = web.create_container()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        dockerfile.write(base_image + 'CMD echo hello world\n')
 | 
	
		
			
				|  |  | +        web.build()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            with open(dockerfile, 'w') as f:
 | 
	
		
			
				|  |  | -                f.write(base_image)
 | 
	
		
			
				|  |  | +        web = self.create_service('web', build=str(context))
 | 
	
		
			
				|  |  | +        self.assertEqual(('recreate', [container]), web.convergence_plan())
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            web = self.create_service('web', build=context)
 | 
	
		
			
				|  |  | -            container = web.create_container()
 | 
	
		
			
				|  |  | +    def test_image_changed_to_build(self):
 | 
	
		
			
				|  |  | +        context = py.test.ensuretemp('test_image_changed_to_build')
 | 
	
		
			
				|  |  | +        self.addCleanup(context.remove)
 | 
	
		
			
				|  |  | +        context.join('Dockerfile').write("""
 | 
	
		
			
				|  |  | +            FROM busybox
 | 
	
		
			
				|  |  | +            LABEL com.docker.compose.test_image=true
 | 
	
		
			
				|  |  | +        """)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            with open(dockerfile, 'w') as f:
 | 
	
		
			
				|  |  | -                f.write(base_image + 'CMD echo hello world\n')
 | 
	
		
			
				|  |  | -            web.build()
 | 
	
		
			
				|  |  | +        web = self.create_service('web', image='busybox')
 | 
	
		
			
				|  |  | +        container = web.create_container()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            web = self.create_service('web', build=context)
 | 
	
		
			
				|  |  | -            self.assertEqual(('recreate', [container]), web.convergence_plan())
 | 
	
		
			
				|  |  | -        finally:
 | 
	
		
			
				|  |  | -            shutil.rmtree(context)
 | 
	
		
			
				|  |  | +        web = self.create_service('web', build=str(context))
 | 
	
		
			
				|  |  | +        plan = web.convergence_plan()
 | 
	
		
			
				|  |  | +        self.assertEqual(('recreate', [container]), plan)
 | 
	
		
			
				|  |  | +        containers = web.execute_convergence_plan(plan)
 | 
	
		
			
				|  |  | +        self.assertEqual(len(containers), 1)
 |