kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
237 wiersze
8.3 KiB
Python
237 wiersze
8.3 KiB
Python
from unittest import mock
|
|
|
|
import pytest
|
|
from build_metadata import (
|
|
AUTHORS,
|
|
DOCUMENTATION_URL,
|
|
LICENSE,
|
|
PROJECT_DESCRIPTION,
|
|
PROJECT_NAME,
|
|
SOURCE_URL,
|
|
WEBSITE_URL,
|
|
bake_output,
|
|
env_output,
|
|
extract_metadata,
|
|
)
|
|
|
|
common_docker_labels = {
|
|
"org.opencontainers.image.title": PROJECT_NAME,
|
|
"org.opencontainers.image.description": PROJECT_DESCRIPTION,
|
|
"org.opencontainers.image.url": WEBSITE_URL,
|
|
"org.opencontainers.image.source": SOURCE_URL,
|
|
"org.opencontainers.image.documentation": DOCUMENTATION_URL,
|
|
"org.opencontainers.image.licenses": LICENSE,
|
|
"org.opencontainers.image.vendor": AUTHORS,
|
|
}
|
|
|
|
test_cases = [
|
|
{ # On a random feature branch
|
|
"environ": {
|
|
"CI": "true",
|
|
"CI_COMMIT_TAG": "",
|
|
"CI_COMMIT_BRANCH": "ci_build_metadata",
|
|
"CI_COMMIT_SHA": "de206ac559a171b68fb894b2d61db298fc386705",
|
|
"CI_COMMIT_TIMESTAMP": "2023-01-31T13:31:13+01:00",
|
|
"CI_COMMIT_REF_NAME": "ci_build_metadata",
|
|
},
|
|
"metadata": {
|
|
"commit_tag": "",
|
|
"commit_branch": "ci_build_metadata",
|
|
"commit_sha": "de206ac559a171b68fb894b2d61db298fc386705",
|
|
"commit_timestamp": "2023-01-31T13:31:13+01:00",
|
|
"commit_ref_name": "ci_build_metadata",
|
|
"version": "",
|
|
"tags": [],
|
|
"latest": False,
|
|
},
|
|
"bake_output": {
|
|
"target": {
|
|
"api": {
|
|
"tags": [],
|
|
"labels": {
|
|
**common_docker_labels,
|
|
"org.opencontainers.image.version": "ci_build_metadata",
|
|
"org.opencontainers.image.created": "2023-01-31T13:31:13+01:00",
|
|
"org.opencontainers.image.revision": "de206ac559a171b68fb894b2d61db298fc386705",
|
|
},
|
|
}
|
|
}
|
|
},
|
|
"env_output": [
|
|
"BUILD_COMMIT_TAG=",
|
|
"BUILD_COMMIT_BRANCH=ci_build_metadata",
|
|
"BUILD_COMMIT_SHA=de206ac559a171b68fb894b2d61db298fc386705",
|
|
"BUILD_COMMIT_TIMESTAMP=2023-01-31T13:31:13+01:00",
|
|
"BUILD_COMMIT_REF_NAME=ci_build_metadata",
|
|
"BUILD_VERSION=",
|
|
"BUILD_TAGS=",
|
|
"BUILD_LATEST=false",
|
|
],
|
|
},
|
|
{ # On the develop (or stable) branch
|
|
"environ": {
|
|
"CI": "true",
|
|
"CI_COMMIT_TAG": "",
|
|
"CI_COMMIT_BRANCH": "develop",
|
|
"CI_COMMIT_SHA": "de206ac559a171b68fb894b2d61db298fc386705",
|
|
"CI_COMMIT_TIMESTAMP": "2023-01-31T13:31:13+01:00",
|
|
"CI_COMMIT_REF_NAME": "develop",
|
|
},
|
|
"metadata": {
|
|
"commit_tag": "",
|
|
"commit_branch": "develop",
|
|
"commit_sha": "de206ac559a171b68fb894b2d61db298fc386705",
|
|
"commit_timestamp": "2023-01-31T13:31:13+01:00",
|
|
"commit_ref_name": "develop",
|
|
"version": "1.7.2-dev+de206ac",
|
|
"tags": ["develop"],
|
|
"latest": False,
|
|
},
|
|
"bake_output": {
|
|
"target": {
|
|
"api": {
|
|
"tags": ["funkwhale/api:develop"],
|
|
"labels": {
|
|
**common_docker_labels,
|
|
"org.opencontainers.image.version": "develop",
|
|
"org.opencontainers.image.created": "2023-01-31T13:31:13+01:00",
|
|
"org.opencontainers.image.revision": "de206ac559a171b68fb894b2d61db298fc386705",
|
|
},
|
|
}
|
|
}
|
|
},
|
|
"env_output": [
|
|
"BUILD_COMMIT_TAG=",
|
|
"BUILD_COMMIT_BRANCH=develop",
|
|
"BUILD_COMMIT_SHA=de206ac559a171b68fb894b2d61db298fc386705",
|
|
"BUILD_COMMIT_TIMESTAMP=2023-01-31T13:31:13+01:00",
|
|
"BUILD_COMMIT_REF_NAME=develop",
|
|
"BUILD_VERSION=1.7.2-dev+de206ac",
|
|
"BUILD_TAGS=develop",
|
|
"BUILD_LATEST=false",
|
|
],
|
|
},
|
|
{ # A release tag
|
|
"environ": {
|
|
"CI": "true",
|
|
"CI_COMMIT_TAG": "1.2.9",
|
|
"CI_COMMIT_BRANCH": "",
|
|
"CI_COMMIT_SHA": "817c8fbcaa0706ccc9b724da8546f44ba7d2d841",
|
|
"CI_COMMIT_TIMESTAMP": "2022-11-25T17:59:23+01:00",
|
|
"CI_COMMIT_REF_NAME": "1.2.9",
|
|
},
|
|
"metadata": {
|
|
"commit_tag": "1.2.9",
|
|
"commit_branch": "",
|
|
"commit_sha": "817c8fbcaa0706ccc9b724da8546f44ba7d2d841",
|
|
"commit_timestamp": "2022-11-25T17:59:23+01:00",
|
|
"commit_ref_name": "1.2.9",
|
|
"version": "1.2.9",
|
|
"tags": ["1.2.9", "1.2", "1", "latest"],
|
|
"latest": True,
|
|
},
|
|
"bake_output": {
|
|
"target": {
|
|
"api": {
|
|
"tags": [
|
|
"funkwhale/api:1.2.9",
|
|
"funkwhale/api:1.2",
|
|
"funkwhale/api:1",
|
|
"funkwhale/api:latest",
|
|
],
|
|
"labels": {
|
|
**common_docker_labels,
|
|
"org.opencontainers.image.version": "1.2.9",
|
|
"org.opencontainers.image.created": "2022-11-25T17:59:23+01:00",
|
|
"org.opencontainers.image.revision": "817c8fbcaa0706ccc9b724da8546f44ba7d2d841",
|
|
},
|
|
}
|
|
}
|
|
},
|
|
"env_output": [
|
|
"BUILD_COMMIT_TAG=1.2.9",
|
|
"BUILD_COMMIT_BRANCH=",
|
|
"BUILD_COMMIT_SHA=817c8fbcaa0706ccc9b724da8546f44ba7d2d841",
|
|
"BUILD_COMMIT_TIMESTAMP=2022-11-25T17:59:23+01:00",
|
|
"BUILD_COMMIT_REF_NAME=1.2.9",
|
|
"BUILD_VERSION=1.2.9",
|
|
"BUILD_TAGS=1.2.9,1.2,1,latest",
|
|
"BUILD_LATEST=true",
|
|
],
|
|
},
|
|
{ # A prerelease tag
|
|
"environ": {
|
|
"CI": "true",
|
|
"CI_COMMIT_TAG": "1.3.0-rc3",
|
|
"CI_COMMIT_BRANCH": "",
|
|
"CI_COMMIT_SHA": "e04a1b188d3f463e7b3e2484578d63d754b09b9d",
|
|
"CI_COMMIT_TIMESTAMP": "2023-01-23T14:24:46+01:00",
|
|
"CI_COMMIT_REF_NAME": "1.3.0-rc3",
|
|
},
|
|
"metadata": {
|
|
"commit_tag": "1.3.0-rc3",
|
|
"commit_branch": "",
|
|
"commit_sha": "e04a1b188d3f463e7b3e2484578d63d754b09b9d",
|
|
"commit_timestamp": "2023-01-23T14:24:46+01:00",
|
|
"commit_ref_name": "1.3.0-rc3",
|
|
"version": "1.3.0-rc3",
|
|
"tags": ["1.3.0-rc3"],
|
|
"latest": False,
|
|
},
|
|
"bake_output": {
|
|
"target": {
|
|
"api": {
|
|
"tags": ["funkwhale/api:1.3.0-rc3"],
|
|
"labels": {
|
|
**common_docker_labels,
|
|
"org.opencontainers.image.version": "1.3.0-rc3",
|
|
"org.opencontainers.image.created": "2023-01-23T14:24:46+01:00",
|
|
"org.opencontainers.image.revision": "e04a1b188d3f463e7b3e2484578d63d754b09b9d",
|
|
},
|
|
}
|
|
}
|
|
},
|
|
"env_output": [
|
|
"BUILD_COMMIT_TAG=1.3.0-rc3",
|
|
"BUILD_COMMIT_BRANCH=",
|
|
"BUILD_COMMIT_SHA=e04a1b188d3f463e7b3e2484578d63d754b09b9d",
|
|
"BUILD_COMMIT_TIMESTAMP=2023-01-23T14:24:46+01:00",
|
|
"BUILD_COMMIT_REF_NAME=1.3.0-rc3",
|
|
"BUILD_VERSION=1.3.0-rc3",
|
|
"BUILD_TAGS=1.3.0-rc3",
|
|
"BUILD_LATEST=false",
|
|
],
|
|
},
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"environ, expected_metadata, expected_bake_output, expected_env_output",
|
|
map(
|
|
lambda i: (i["environ"], i["metadata"], i["bake_output"], i["env_output"]),
|
|
test_cases,
|
|
),
|
|
)
|
|
def test_extract_metadata(
|
|
environ,
|
|
expected_metadata,
|
|
expected_bake_output,
|
|
expected_env_output,
|
|
):
|
|
with mock.patch("build_metadata.latest_tag_on_branch") as latest_tag_on_branch_mock:
|
|
latest_tag_on_branch_mock.return_value = "1.7.2-rc5"
|
|
with mock.patch.dict("os.environ", environ, clear=True):
|
|
found_metadata = extract_metadata()
|
|
|
|
assert found_metadata == expected_metadata
|
|
|
|
found_bake_output = bake_output(
|
|
metadata=found_metadata,
|
|
target="api",
|
|
images=["funkwhale/api"],
|
|
)
|
|
assert found_bake_output == expected_bake_output
|
|
|
|
found_env_output = env_output(metadata=found_metadata)
|
|
assert found_env_output == expected_env_output
|