repo2docker/tests/unit/test_labels.py

50 wiersze
1.3 KiB
Python

"""
Test if labels are supplied correctly to the container
"""
from unittest.mock import Mock
import pytest
from repo2docker import __version__
from repo2docker.app import Repo2Docker
from repo2docker.buildpacks import BuildPack
URL = "https://github.com/binderhub-ci-repos/repo2docker-ci-clone-depth"
def test_buildpack_labels_rendered():
bp = BuildPack()
assert "LABEL" not in bp.render()
bp.labels["first_label"] = "firstlabel"
assert 'LABEL first_label="firstlabel"\n' in bp.render()
bp.labels["second_label"] = "anotherlabel"
assert 'LABEL second_label="anotherlabel"\n' in bp.render()
@pytest.mark.parametrize(
"ref, repo, expected_repo_label",
[(None, URL, URL), ("some-ref", None, "local"), (None, None, "local")],
)
def test_Repo2Docker_labels(ref, repo, expected_repo_label, tmpdir):
app = Repo2Docker(dry_run=True)
# Add mock BuildPack to app
mock_buildpack = Mock()
mock_buildpack.return_value.labels = {}
app.buildpacks = [mock_buildpack]
if repo is None:
repo = str(tmpdir)
app.repo = repo
if ref is not None:
app.ref = ref
app.initialize()
app.start()
expected_labels = {
"repo2docker.ref": ref,
"repo2docker.repo": expected_repo_label,
"repo2docker.version": __version__,
}
assert mock_buildpack().labels == expected_labels