kopia lustrzana https://github.com/jupyterhub/repo2docker
Add tests for Docker & Legacy Docker buildpacks
rodzic
b4dbc9852e
commit
d035483d1c
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue