Allow to specify image by digest. Fixes #1670
Signed-off-by: Karol Duleba <mr.fuxi@gmail.com>
This commit is contained in:
parent
6edc673aad
commit
56f03bc20a
5 changed files with 60 additions and 16 deletions
6
tests/fixtures/simple-composefile/digest.yml
vendored
Normal file
6
tests/fixtures/simple-composefile/digest.yml
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
simple:
|
||||
image: busybox:latest
|
||||
command: top
|
||||
digest:
|
||||
image: busybox@sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d
|
||||
command: top
|
||||
|
|
@ -88,6 +88,12 @@ class CLITestCase(DockerClientTestCase):
|
|||
mock_logging.info.assert_any_call('Pulling simple (busybox:latest)...')
|
||||
mock_logging.info.assert_any_call('Pulling another (busybox:latest)...')
|
||||
|
||||
@patch('compose.service.log')
|
||||
def test_pull_with_digest(self, mock_logging):
|
||||
self.command.dispatch(['-f', 'digest.yml', 'pull'], None)
|
||||
mock_logging.info.assert_any_call('Pulling simple (busybox:latest)...')
|
||||
mock_logging.info.assert_any_call('Pulling digest (busybox@sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d)...')
|
||||
|
||||
@patch('sys.stdout', new_callable=StringIO)
|
||||
def test_build_no_cache(self, mock_stdout):
|
||||
self.command.base_dir = 'tests/fixtures/simple-dockerfile'
|
||||
|
|
|
|||
|
|
@ -192,6 +192,16 @@ class ServiceTest(unittest.TestCase):
|
|||
tag='latest',
|
||||
stream=True)
|
||||
|
||||
@mock.patch('compose.service.log', autospec=True)
|
||||
def test_pull_image_digest(self, mock_log):
|
||||
service = Service('foo', client=self.mock_client, image='someimage@sha256:1234')
|
||||
service.pull()
|
||||
self.mock_client.pull.assert_called_once_with(
|
||||
'someimage',
|
||||
tag='sha256:1234',
|
||||
stream=True)
|
||||
mock_log.info.assert_called_once_with('Pulling foo (someimage@sha256:1234)...')
|
||||
|
||||
@mock.patch('compose.service.Container', autospec=True)
|
||||
def test_recreate_container(self, _):
|
||||
mock_container = mock.create_autospec(Container)
|
||||
|
|
@ -217,12 +227,16 @@ class ServiceTest(unittest.TestCase):
|
|||
mock_container.stop.assert_called_once_with(timeout=1)
|
||||
|
||||
def test_parse_repository_tag(self):
|
||||
self.assertEqual(parse_repository_tag("root"), ("root", ""))
|
||||
self.assertEqual(parse_repository_tag("root:tag"), ("root", "tag"))
|
||||
self.assertEqual(parse_repository_tag("user/repo"), ("user/repo", ""))
|
||||
self.assertEqual(parse_repository_tag("user/repo:tag"), ("user/repo", "tag"))
|
||||
self.assertEqual(parse_repository_tag("url:5000/repo"), ("url:5000/repo", ""))
|
||||
self.assertEqual(parse_repository_tag("url:5000/repo:tag"), ("url:5000/repo", "tag"))
|
||||
self.assertEqual(parse_repository_tag("root"), ("root", "", ":"))
|
||||
self.assertEqual(parse_repository_tag("root:tag"), ("root", "tag", ":"))
|
||||
self.assertEqual(parse_repository_tag("user/repo"), ("user/repo", "", ":"))
|
||||
self.assertEqual(parse_repository_tag("user/repo:tag"), ("user/repo", "tag", ":"))
|
||||
self.assertEqual(parse_repository_tag("url:5000/repo"), ("url:5000/repo", "", ":"))
|
||||
self.assertEqual(parse_repository_tag("url:5000/repo:tag"), ("url:5000/repo", "tag", ":"))
|
||||
|
||||
self.assertEqual(parse_repository_tag("root@sha256:digest"), ("root", "sha256:digest", "@"))
|
||||
self.assertEqual(parse_repository_tag("user/repo@sha256:digest"), ("user/repo", "sha256:digest", "@"))
|
||||
self.assertEqual(parse_repository_tag("url:5000/repo@sha256:digest"), ("url:5000/repo", "sha256:digest", "@"))
|
||||
|
||||
@mock.patch('compose.service.Container', autospec=True)
|
||||
def test_create_container_latest_is_used_when_no_tag_specified(self, mock_container):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue