mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-03 05:03:43 +08:00
Move scm.py to common/scm.py
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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")
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user