Move scm.py to common/scm.py

This commit is contained in:
mprahl
2020-01-03 21:32:25 -05:00
parent 4b32612002
commit c10a6769ed
11 changed files with 97 additions and 104 deletions

View File

@@ -25,7 +25,7 @@ from module_build_service import conf, log, build_logs, Modulemd
from module_build_service.common.koji import get_session, koji_retrying_multicall_map
from module_build_service.common.utils import load_mmd, mmd_to_str, to_text_type
from module_build_service.scheduler.db_session import db_session
from module_build_service.scm import SCM
from module_build_service.common.scm import SCM
logging.basicConfig(level=logging.DEBUG)

View File

@@ -5,7 +5,7 @@ import tempfile
import requests
import module_build_service.scm
import module_build_service.common.scm
from module_build_service import conf, log
from module_build_service.common.utils import load_mmd_file
from module_build_service.common.errors import ValidationError
@@ -38,9 +38,9 @@ def fetch_mmd(url, branch=None, allow_local_url=False, whitelist_url=False, mand
log.debug("Verifying modulemd")
td = tempfile.mkdtemp()
if whitelist_url:
scm = module_build_service.scm.SCM(url, branch, [url], allow_local_url)
scm = module_build_service.common.scm.SCM(url, branch, [url], allow_local_url)
else:
scm = module_build_service.scm.SCM(url, branch, conf.scmurls, allow_local_url)
scm = module_build_service.common.scm.SCM(url, branch, conf.scmurls, allow_local_url)
scm.checkout(td)
if not whitelist_url and mandatory_checks:
scm.verify()

View File

@@ -10,8 +10,8 @@ import kobo.rpmlib
import koji
import six.moves.xmlrpc_client as xmlrpclib
from module_build_service import conf, log, Modulemd, scm
from module_build_service.common import models
from module_build_service import conf, log, Modulemd
from module_build_service.common import models, scm
from module_build_service.common.koji import get_session, koji_retrying_multicall_map
from module_build_service.common.resolve import (
expand_single_mse_streams, get_compatible_base_module_mmds

View File

@@ -13,7 +13,7 @@ from module_build_service.common.submit import fetch_mmd
from module_build_service.common.utils import to_text_type
from module_build_service.scheduler.db_session import db_session
from module_build_service.common.errors import ValidationError, UnprocessableEntity, Forbidden
import module_build_service.scm
import module_build_service.common.scm
def get_build_arches(mmd, config):
@@ -170,7 +170,7 @@ def _scm_get_latest(pkg):
repo = pkg.get_repository()
ref = pkg.get_ref()
log.debug("Getting the commit hash for the ref %s on the repo %s", ref, repo)
pkgref = module_build_service.scm.SCM(repo).get_latest(ref)
pkgref = module_build_service.common.scm.SCM(repo).get_latest(ref)
except Exception as e:
log.exception(e)
return {
@@ -192,10 +192,6 @@ def format_mmd(mmd, scmurl, module=None, db_session=None):
of a module is updated regularly in case this method takes lot of time.
:param db_session: Database session to update the `module`.
"""
# Import it here, because SCM uses utils methods and fails to import
# them because of dep-chain.
from module_build_service.scm import SCM
xmd = mmd.get_xmd()
if "mbs" not in xmd:
xmd["mbs"] = {}
@@ -206,9 +202,9 @@ def format_mmd(mmd, scmurl, module=None, db_session=None):
# If module build was submitted via yaml file, there is no scmurl
if scmurl:
scm = SCM(scmurl)
scm = module_build_service.common.scm.SCM(scmurl)
# We want to make sure we have the full commit hash for consistency
if SCM.is_full_commit_hash(scm.scheme, scm.commit):
if module_build_service.common.scm.SCM.is_full_commit_hash(scm.scheme, scm.commit):
full_scm_hash = scm.commit
else:
full_scm_hash = scm.get_full_commit_hash()

View File

@@ -13,7 +13,7 @@ import sqlalchemy
from module_build_service import api_version, conf, db
from module_build_service.common import models
from module_build_service.common.errors import ValidationError, NotFound
from module_build_service.scm import scm_url_schemes
from module_build_service.common.scm import scm_url_schemes
def deps_to_dict(deps, deps_type):

View File

@@ -482,7 +482,7 @@ class TestBuild(BaseTestBuild):
@pytest.mark.parametrize("mmd_version", [1, 2])
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_normal(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc, mmd_version
):
@@ -561,7 +561,7 @@ class TestBuild(BaseTestBuild):
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_buildonly(
self, mocked_scm, mocked_get_user, mocked_get_session, conf_system, dbg, hmsc
):
@@ -629,7 +629,7 @@ class TestBuild(BaseTestBuild):
@pytest.mark.parametrize("gating_result", (True, False))
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_no_components(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc, gating_result
):
@@ -676,7 +676,7 @@ class TestBuild(BaseTestBuild):
)
@patch("module_build_service.common.submit._is_eol_in_pdc", return_value=True)
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_eol_module(
self, mocked_scm, mocked_get_user, is_eol, check, conf_system, dbg, hmsc
):
@@ -702,7 +702,7 @@ class TestBuild(BaseTestBuild):
assert data["message"] == u"Module python3:master is marked as EOL in PDC."
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_from_yaml_not_allowed(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -727,7 +727,7 @@ class TestBuild(BaseTestBuild):
assert data["message"] == "YAML submission is not enabled"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_from_yaml_allowed(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -757,7 +757,7 @@ class TestBuild(BaseTestBuild):
assert module_build.state == models.BUILD_STATES["ready"]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_cancel(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -819,7 +819,7 @@ class TestBuild(BaseTestBuild):
assert build.task_id in cancelled_tasks
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_instant_complete(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -855,7 +855,7 @@ class TestBuild(BaseTestBuild):
]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.num_concurrent_builds",
new_callable=PropertyMock,
@@ -914,7 +914,7 @@ class TestBuild(BaseTestBuild):
]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.num_concurrent_builds",
new_callable=PropertyMock,
@@ -979,7 +979,7 @@ class TestBuild(BaseTestBuild):
assert num_builds.count(1) == 2
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.num_concurrent_builds",
new_callable=PropertyMock,
@@ -1048,7 +1048,7 @@ class TestBuild(BaseTestBuild):
assert c.module_build.batch == 2
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.num_concurrent_builds",
new_callable=PropertyMock,
@@ -1108,7 +1108,7 @@ class TestBuild(BaseTestBuild):
@pytest.mark.usefixtures("reuse_component_init_data")
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_reuse_all(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1180,7 +1180,7 @@ class TestBuild(BaseTestBuild):
@pytest.mark.usefixtures("reuse_component_init_data")
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_reuse_all_without_build_macros(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1258,7 +1258,7 @@ class TestBuild(BaseTestBuild):
assert build.package != "module-build-macros"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_resume(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1393,7 +1393,7 @@ class TestBuild(BaseTestBuild):
]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_resume_recover_orphaned_macros(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1514,7 +1514,7 @@ class TestBuild(BaseTestBuild):
]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_resume_failed_init(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1587,7 +1587,7 @@ class TestBuild(BaseTestBuild):
]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_resume_init_fail(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1629,7 +1629,7 @@ class TestBuild(BaseTestBuild):
assert data == expected
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.modules_allow_scratch",
new_callable=PropertyMock,
@@ -1672,7 +1672,7 @@ class TestBuild(BaseTestBuild):
assert module_build.context == "9c690d0e_1"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.modules_allow_scratch",
new_callable=PropertyMock,
@@ -1716,7 +1716,7 @@ class TestBuild(BaseTestBuild):
assert module_build.context == "9c690d0e"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.modules_allow_scratch",
new_callable=PropertyMock,
@@ -1758,7 +1758,7 @@ class TestBuild(BaseTestBuild):
assert module_build.context == "9c690d0e_2"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_repo_regen_not_started_batch(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1834,7 +1834,7 @@ class TestBuild(BaseTestBuild):
assert module.state == models.BUILD_STATES["build"]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_br_metadata_only_module(
self, mocked_scm, mocked_get_user, conf_system, dbg, hmsc
):
@@ -1898,7 +1898,7 @@ class TestLocalBuild(BaseTestBuild):
@patch("module_build_service.scheduler.handlers.modules.handle_stream_collision_modules")
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.mock_resultsdir",
new_callable=PropertyMock,

View File

@@ -6,10 +6,10 @@ import tempfile
import pytest
import module_build_service.scm
import module_build_service.common.scm
from module_build_service.common.errors import ValidationError, UnprocessableEntity
base_dir = os.path.join(os.path.dirname(__file__), "scm_data")
base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir, "scm_data"))
repo_url = "file://" + base_dir + "/testrepo"
@@ -24,21 +24,21 @@ class TestSCMModule:
def test_simple_local_checkout(self):
""" See if we can clone a local git repo. """
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
scm.checkout(self.tempdir)
files = os.listdir(self.repodir)
assert "foo" in files, "foo not in %r" % files
def test_local_get_latest_is_sane(self):
""" See that a hash is returned by scm.get_latest. """
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
latest = scm.get_latest("master")
target = "5481faa232d66589e660cc301179867fb00842c9"
assert latest == target, "%r != %r" % (latest, target)
def test_local_get_latest_commit_hash_is_sane(self):
""" See that a hash is returned by scm.get_latest. """
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
latest = scm.get_latest("5481f")
target = "5481faa232d66589e660cc301179867fb00842c9"
assert latest == target, "%r != %r" % (latest, target)
@@ -48,7 +48,7 @@ class TestSCMModule:
https://pagure.io/fm-orchestrator/issue/329
"""
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
assert scm.scheme == "git", scm.scheme
fname = tempfile.mktemp(suffix="mbs-scm-test")
try:
@@ -57,72 +57,72 @@ class TestSCMModule:
assert not os.path.exists(fname), "%r exists! Vulnerable." % fname
def test_local_extract_name(self):
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
target = "testrepo"
assert scm.name == target, "%r != %r" % (scm.name, target)
def test_local_extract_name_trailing_slash(self):
scm = module_build_service.scm.SCM(repo_url + "/")
scm = module_build_service.common.scm.SCM(repo_url + "/")
target = "testrepo"
assert scm.name == target, "%r != %r" % (scm.name, target)
def test_verify(self):
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
scm.checkout(self.tempdir)
scm.verify()
def test_verify_unknown_branch(self):
with pytest.raises(UnprocessableEntity):
scm = module_build_service.scm.SCM(repo_url, "unknown")
scm = module_build_service.common.scm.SCM(repo_url, "unknown")
# Accessing the commit property will cause the commit to be resolved, causing an
# exception
scm.commit
def test_verify_commit_in_branch(self):
target = "7035bd33614972ac66559ac1fdd019ff6027ad21"
scm = module_build_service.scm.SCM(repo_url + "?#" + target, "dev")
scm = module_build_service.common.scm.SCM(repo_url + "?#" + target, "dev")
scm.checkout(self.tempdir)
scm.verify()
def test_verify_commit_not_in_branch(self):
target = "7035bd33614972ac66559ac1fdd019ff6027ad21"
scm = module_build_service.scm.SCM(repo_url + "?#" + target, "master")
scm = module_build_service.common.scm.SCM(repo_url + "?#" + target, "master")
scm.checkout(self.tempdir)
with pytest.raises(ValidationError):
scm.verify()
def test_verify_unknown_hash(self):
target = "7035bd33614972ac66559ac1fdd019ff6027ad22"
scm = module_build_service.scm.SCM(repo_url + "?#" + target, "master")
scm = module_build_service.common.scm.SCM(repo_url + "?#" + target, "master")
with pytest.raises(UnprocessableEntity):
scm.checkout(self.tempdir)
def test_get_module_yaml(self):
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
scm.checkout(self.tempdir)
scm.verify()
with pytest.raises(UnprocessableEntity):
scm.get_module_yaml()
def test_get_latest_incorrect_component_branch(self):
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
with pytest.raises(UnprocessableEntity):
scm.get_latest("foobar")
def test_get_latest_component_branch(self):
ref = "5481faa232d66589e660cc301179867fb00842c9"
branch = "master"
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
commit = scm.get_latest(branch)
assert commit == ref
def test_get_latest_component_ref(self):
ref = "5481faa232d66589e660cc301179867fb00842c9"
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
commit = scm.get_latest(ref)
assert commit == ref
def test_get_latest_incorrect_component_ref(self):
scm = module_build_service.scm.SCM(repo_url)
scm = module_build_service.common.scm.SCM(repo_url)
with pytest.raises(UnprocessableEntity):
scm.get_latest("15481faa232d66589e660cc301179867fb00842c9")

View File

@@ -36,7 +36,7 @@ class TestModuleInit:
"module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder."
"get_built_rpms_in_module_build"
)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch("module_build_service.scheduler.handlers.modules.handle_stream_collision_modules")
@patch(
"module_build_service.scheduler.handlers.modules.handle_collisions_with_base_module_rpms"
@@ -100,7 +100,7 @@ class TestModuleInit:
# Compare only lengths, because `mmd_to_str` can shuffle the fields randomly.
assert len(mmd_to_str(old_mmd)) == len(mmd_to_str(new_mmd))
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch("module_build_service.scheduler.submit.get_build_arches", return_value=["x86_64"])
def test_init_scm_not_available(self, get_build_arches, mocked_scm):
FakeSCM(
@@ -121,7 +121,7 @@ class TestModuleInit:
new_callable=PropertyMock,
return_value=True,
)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch("module_build_service.scheduler.submit.get_build_arches", return_value=["x86_64"])
def test_init_includedmodule(
self, get_build_arches, mocked_scm, mocked_mod_allow_repo
@@ -157,7 +157,7 @@ class TestModuleInit:
assert build.mmd().get_xmd()["mbs"]["rpms"] == xmd_rpms
@patch("module_build_service.common.models.ModuleBuild.from_module_event")
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch("module_build_service.scheduler.submit.get_build_arches", return_value=["x86_64"])
def test_init_when_get_latest_raises(
self, get_build_arches, mocked_scm, mocked_from_module_event):

View File

@@ -7,7 +7,6 @@ import pytest
from module_build_service.common.utils import load_mmd, load_mmd_file, mmd_to_str
from module_build_service.scheduler.db_session import db_session
import module_build_service.scm
from module_build_service import app, conf
from module_build_service.common import models
from module_build_service.common.errors import UnprocessableEntity
@@ -97,7 +96,7 @@ class TestSubmit:
None,
],
)
@mock.patch("module_build_service.scm.SCM")
@mock.patch("module_build_service.common.scm.SCM")
def test_format_mmd(self, mocked_scm, scmurl):
mocked_scm.return_value.commit = "620ec77321b2ea7b0d67d82992dda3e1d67055b4"
# For all the RPMs in testmodule, get_latest is called
@@ -147,7 +146,7 @@ class TestSubmit:
mmd_xmd = mmd.get_xmd()
assert mmd_xmd == xmd
@mock.patch("module_build_service.scm.SCM")
@mock.patch("module_build_service.common.scm.SCM")
def test_record_component_builds_duplicate_components(self, mocked_scm):
# Mock for format_mmd to get components' latest ref
mocked_scm.return_value.commit = "620ec77321b2ea7b0d67d82992dda3e1d67055b4"
@@ -190,7 +189,7 @@ class TestSubmit:
assert str(e.value) == error_msg
@mock.patch("module_build_service.scm.SCM")
@mock.patch("module_build_service.common.scm.SCM")
def test_record_component_builds_set_weight(self, mocked_scm):
# Mock for format_mmd to get components' latest ref
mocked_scm.return_value.commit = "620ec77321b2ea7b0d67d82992dda3e1d67055b4"
@@ -230,7 +229,7 @@ class TestSubmit:
for c in module_build.component_builds:
assert c.weight == 1.5
@mock.patch("module_build_service.scm.SCM")
@mock.patch("module_build_service.common.scm.SCM")
def test_record_component_builds_component_exists_already(self, mocked_scm):
mocked_scm.return_value.commit = "620ec77321b2ea7b0d67d82992dda3e1d67055b4"
mocked_scm.return_value.get_latest.side_effect = [
@@ -279,7 +278,7 @@ class TestSubmit:
format_mmd(mmd, module_build.scmurl)
record_component_builds(mmd, module_build)
@mock.patch("module_build_service.scm.SCM")
@mock.patch("module_build_service.common.scm.SCM")
def test_format_mmd_arches(self, mocked_scm):
with app.app_context():
clean_database()
@@ -317,7 +316,7 @@ class TestSubmit:
pkg = mmd2.get_rpm_component(pkg_name)
assert set(pkg.get_arches()) == set(test_archs)
@mock.patch("module_build_service.scm.SCM")
@mock.patch("module_build_service.common.scm.SCM")
@mock.patch("module_build_service.scheduler.submit.ThreadPool")
def test_format_mmd_update_time_modified(self, tp, mocked_scm):
init_data()

View File

@@ -5,8 +5,6 @@ from datetime import datetime
from functools import partial
from sqlalchemy.orm import load_only
import module_build_service.scm
from mock import patch, PropertyMock, Mock
from shutil import copyfile
from os import path, mkdir
@@ -28,7 +26,7 @@ from tests import (
staged_data_filename,
time_assert,
)
from tests.test_scm import base_dir as scm_base_dir
from tests.test_common.test_scm import base_dir as scm_base_dir
from module_build_service.scheduler.db_session import db_session
from module_build_service.common.errors import UnprocessableEntity
from module_build_service.common.models import ModuleBuild, BUILD_STATES, ComponentBuild
@@ -931,7 +929,7 @@ class TestViews:
@pytest.mark.parametrize("api_version", [1, 2])
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build(self, mocked_scm, mocked_get_user, api_version):
FakeSCM(
mocked_scm, "testmodule", "testmodule.yaml", "620ec77321b2ea7b0d67d82992dda3e1d67055b4")
@@ -985,7 +983,7 @@ class TestViews:
assert module.buildrequires[0].stream_version == 280000
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_no_base_module(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm,
@@ -1013,7 +1011,7 @@ class TestViews:
}
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.rebuild_strategy_allow_override",
new_callable=PropertyMock,
@@ -1038,7 +1036,7 @@ class TestViews:
assert data["rebuild_strategy"] == "only-changed"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.rebuild_strategies_allowed",
new_callable=PropertyMock,
@@ -1076,7 +1074,7 @@ class TestViews:
assert data == expected_error
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_dep_not_present(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm,
@@ -1105,7 +1103,7 @@ class TestViews:
assert data == expected_error
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_rebuild_strategy_override_not_allowed(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm, "testmodule", "testmodule.yaml", "620ec77321b2ea7b0d67d82992dda3e1d67055b4")
@@ -1134,7 +1132,7 @@ class TestViews:
assert data == expected_error
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_componentless_build(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm, "fakemodule", "fakemodule.yaml", "3da541559918a808c2402bba5012f6c60b27661c")
@@ -1211,7 +1209,7 @@ class TestViews:
assert data["error"] == "Bad Request"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_bad_modulemd(self, mocked_scm, mocked_get_user):
FakeSCM(mocked_scm, "bad", "bad.yaml")
@@ -1232,7 +1230,7 @@ class TestViews:
assert data["error"] == "Unprocessable Entity"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_includedmodule_custom_repo_not_allowed(self, mocked_scm, mocked_get_user):
FakeSCM(mocked_scm, "includedmodules", ["includedmodules.yaml", "testmodule.yaml"])
rv = self.client.post(
@@ -1364,7 +1362,7 @@ class TestViews:
assert data["error"] in ("Bad Request", "Forbidden")
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_version_set_error(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm,
@@ -1390,7 +1388,7 @@ class TestViews:
assert data["error"] == "Bad Request"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_wrong_stream(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm,
@@ -1429,7 +1427,7 @@ class TestViews:
assert "The request contains 'owner' parameter" in result["message"]
@patch("module_build_service.web.auth.get_user", return_value=anonymous_user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.no_auth",
new_callable=PropertyMock,
@@ -1452,7 +1450,7 @@ class TestViews:
assert (build.owner == result["owner"] == "foo") is True
@patch("module_build_service.web.auth.get_user", return_value=("svc_account", set()))
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch("module_build_service.common.config.Config.allowed_users", new_callable=PropertyMock)
def test_submit_build_allowed_users(self, allowed_users, mocked_scm, mocked_get_user):
FakeSCM(
@@ -1468,7 +1466,7 @@ class TestViews:
assert rv.status_code == 201
@patch("module_build_service.web.auth.get_user", return_value=anonymous_user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch("module_build_service.common.config.Config.no_auth", new_callable=PropertyMock)
def test_patch_set_different_owner(self, mocked_no_auth, mocked_scm, mocked_get_user):
FakeSCM(
@@ -1497,7 +1495,7 @@ class TestViews:
assert "The request contains 'owner' parameter" in json.loads(r3.data)["message"]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_commit_hash_not_found(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm,
@@ -1522,7 +1520,7 @@ class TestViews:
assert data["error"] == "Unprocessable Entity"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.allow_custom_scmurls",
new_callable=PropertyMock,
@@ -1552,7 +1550,7 @@ class TestViews:
"br_override_streams, req_override_streams", ((["f28"], None), (["f28"], ["f28"]))
)
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_dep_override(
self, mocked_scm, mocked_get_user, br_override_streams, req_override_streams
):
@@ -1593,7 +1591,7 @@ class TestViews:
assert set(dep.get_runtime_streams("platform")) == expected_req
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_invalid_basemodule_stream(self, mocked_scm, mocked_get_user):
# By default tests do not provide platform:f28.0.0, but just platform:f28.
# Therefore we want to enable multiple_stream_versions.
@@ -1621,7 +1619,7 @@ class TestViews:
assert rv.status_code == 422
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_with_base_module_name(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm, "platform", "testmodule.yaml", "620ec77321b2ea7b0d67d82992dda3e1d67055b4")
@@ -1641,7 +1639,7 @@ class TestViews:
assert rv.status_code == 400
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_with_xmd(self, mocked_scm, mocked_get_user):
FakeSCM(
mocked_scm,
@@ -1666,7 +1664,7 @@ class TestViews:
@pytest.mark.parametrize("dep_type", ("buildrequire", "require"))
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_override_unused(self, mocked_scm, mocked_get_user, dep_type):
FakeSCM(
mocked_scm,
@@ -1707,7 +1705,7 @@ class TestViews:
),
)
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_invalid_override(self, mocked_scm, mocked_get_user, optional_params):
FakeSCM(
mocked_scm,
@@ -2076,7 +2074,7 @@ class TestViews:
@pytest.mark.parametrize("api_version", [1, 2])
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.modules_allow_scratch",
new_callable=PropertyMock,
@@ -2138,7 +2136,7 @@ class TestViews:
@pytest.mark.parametrize("api_version", [1, 2])
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.modules_allow_scratch",
new_callable=PropertyMock,
@@ -2304,7 +2302,7 @@ class TestViews:
(("10", None), ("10-rhel-8.0.0", "el8.0.0"), ("10-LP-product1.2", "product1.2")),
)
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch.object(
module_build_service.common.config.Config,
"br_stream_override_regexes",
@@ -2353,7 +2351,7 @@ class TestViews:
assert dep.get_runtime_streams("platform") == ["f28"]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch.object(
module_build_service.common.config.Config,
"br_stream_override_regexes",
@@ -2401,7 +2399,7 @@ class TestViews:
assert dep.get_runtime_streams("platform") == ["f28"]
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_br_xyz_version_no_virtual_streams(self, mocked_scm, mocked_get_user):
"""
Test that when a build is submitted with a buildrequire on a base module with x.y.z
@@ -2429,7 +2427,7 @@ class TestViews:
assert rv.status_code == 201
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.allowed_privileged_module_names",
new_callable=PropertyMock,
@@ -2463,7 +2461,7 @@ class TestViews:
assert mmd.get_xmd()["mbs"]["disttag_marking"] == "product12"
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_request_platform_virtual_stream(self, mocked_scm, mocked_get_user):
# Create a platform with el8.25.0 but with the virtual stream el8
mmd = load_mmd(read_staged_data("platform"))
@@ -2615,7 +2613,7 @@ class TestViews:
)
@patch("requests.get")
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_automatic_z_stream_detection(
self, mocked_scm, mocked_get_user, mock_get, mock_pp_streams, mock_pp_url, mock_datetime,
pp_url, pp_streams, get_rv, br_stream, br_override, expected_stream, utcnow,
@@ -2671,7 +2669,7 @@ class TestViews:
@pytest.mark.parametrize("reuse_components_from", (7, "testmodule:4.3.43:7:00000000"))
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_reuse_components_from(
self, mocked_scm, mocked_get_user, reuse_components_from,
):
@@ -2720,7 +2718,7 @@ class TestViews:
)
)
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
def test_submit_build_reuse_components_from_errors(
self, mocked_scm, mocked_get_user, reuse_components_from, expected_error,
):
@@ -2745,7 +2743,7 @@ class TestViews:
assert data["message"] == expected_error
@patch("module_build_service.web.auth.get_user", return_value=user)
@patch("module_build_service.scm.SCM")
@patch("module_build_service.common.scm.SCM")
@patch(
"module_build_service.common.config.Config.rebuild_strategy_allow_override",
new_callable=PropertyMock,