Add tests for Docker & Legacy Docker buildpacks

pull/478/head
yuvipanda 2018-12-10 22:46:06 -08:00
rodzic b4dbc9852e
commit d035483d1c
1 zmienionych plików z 63 dodań i 5 usunięć

Wyświetl plik

@ -4,21 +4,79 @@ Test that --cache-from is passed in to docker API properly.
import os import os
import docker import docker
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
from repo2docker.buildpacks import BaseImage, DockerBuildPack, LegacyBinderDockerBuildPack
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
def test_cache_from(monkeypatch): def test_cache_from_base(monkeypatch):
FakeDockerClient = MagicMock() FakeDockerClient = MagicMock()
cache_from = [ cache_from = [
'image-1:latest' 'image-1:latest'
] ]
fake_log_value = {'stream': 'fake'}
fake_client = MagicMock(spec=docker.APIClient) fake_client = MagicMock(spec=docker.APIClient)
fake_client.build.return_value = iter([{'stream': 'fake'}]) fake_client.build.return_value = iter([fake_log_value])
with TemporaryDirectory() as d: with TemporaryDirectory() as d:
# Test base image build pack
monkeypatch.chdir(d) monkeypatch.chdir(d)
from repo2docker.buildpacks import BaseImage
for line in BaseImage().build(fake_client, 'image-2', '1Gi', {}, cache_from): for line in BaseImage().build(fake_client, 'image-2', '1Gi', {}, cache_from):
assert line == {'stream': 'fake'} assert line == fake_log_value
called_args, called_kwargs = fake_client.build.call_args called_args, called_kwargs = fake_client.build.call_args
assert 'cache_from' in called_kwargs assert 'cache_from' in called_kwargs
assert called_kwargs['cache_from'] == cache_from assert called_kwargs['cache_from'] == cache_from
def test_cache_from_docker(monkeypatch):
FakeDockerClient = MagicMock()
cache_from = [
'image-1:latest'
]
fake_log_value = {'stream': 'fake'}
fake_client = MagicMock(spec=docker.APIClient)
fake_client.build.return_value = iter([fake_log_value])
with TemporaryDirectory() as d:
# Test docker image
with open(os.path.join(d, 'Dockerfile'), 'w') as f:
f.write('FROM scratch\n')
for line in DockerBuildPack().build(fake_client, 'image-2', '1Gi', {}, cache_from):
assert line == fake_log_value
called_args, called_kwargs = fake_client.build.call_args
assert 'cache_from' in called_kwargs
assert called_kwargs['cache_from'] == cache_from
# Test legacy docker image
with open(os.path.join(d, 'Dockerfile'), 'w') as f:
f.write('FROM andrewosh/binder-base\n')
for line in LegacyBinderDockerBuildPack().build(fake_client, 'image-2', '1Gi', {}, cache_from):
print(line)
assert line == fake_log_value
called_args, called_kwargs = fake_client.build.call_args
assert 'cache_from' in called_kwargs
assert called_kwargs['cache_from'] == cache_from
def test_cache_from_legacy(monkeypatch):
FakeDockerClient = MagicMock()
cache_from = [
'image-1:latest'
]
fake_log_value = {'stream': 'fake'}
fake_client = MagicMock(spec=docker.APIClient)
fake_client.build.return_value = iter([fake_log_value])
with TemporaryDirectory() as d:
# Test legacy docker image
with open(os.path.join(d, 'Dockerfile'), 'w') as f:
f.write('FROM andrewosh/binder-base\n')
for line in LegacyBinderDockerBuildPack().build(fake_client, 'image-2', '1Gi', {}, cache_from):
assert line == fake_log_value
called_args, called_kwargs = fake_client.build.call_args
assert 'cache_from' in called_kwargs
assert called_kwargs['cache_from'] == cache_from