From c10a6769ed78e4818edc2804f60e8e7f674d1dbc Mon Sep 17 00:00:00 2001 From: mprahl Date: Fri, 3 Jan 2020 21:32:25 -0500 Subject: [PATCH] Move scm.py to common/scm.py --- .../builder/KojiContentGenerator.py | 2 +- module_build_service/{ => common}/scm.py | 0 module_build_service/common/submit.py | 6 +- .../scheduler/default_modules.py | 4 +- module_build_service/scheduler/submit.py | 12 ++-- module_build_service/web/utils.py | 2 +- tests/test_build/test_build.py | 48 ++++++------- tests/{ => test_common}/test_scm.py | 36 +++++----- tests/test_scheduler/test_module_init.py | 8 +-- tests/test_scheduler/test_submit.py | 13 ++-- tests/test_web/test_views.py | 70 +++++++++---------- 11 files changed, 97 insertions(+), 104 deletions(-) rename module_build_service/{ => common}/scm.py (100%) rename tests/{ => test_common}/test_scm.py (76%) diff --git a/module_build_service/builder/KojiContentGenerator.py b/module_build_service/builder/KojiContentGenerator.py index ee5aff46..495f17c3 100644 --- a/module_build_service/builder/KojiContentGenerator.py +++ b/module_build_service/builder/KojiContentGenerator.py @@ -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) diff --git a/module_build_service/scm.py b/module_build_service/common/scm.py similarity index 100% rename from module_build_service/scm.py rename to module_build_service/common/scm.py diff --git a/module_build_service/common/submit.py b/module_build_service/common/submit.py index 4d128495..62e38415 100644 --- a/module_build_service/common/submit.py +++ b/module_build_service/common/submit.py @@ -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() diff --git a/module_build_service/scheduler/default_modules.py b/module_build_service/scheduler/default_modules.py index c5324c46..d077835b 100644 --- a/module_build_service/scheduler/default_modules.py +++ b/module_build_service/scheduler/default_modules.py @@ -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 diff --git a/module_build_service/scheduler/submit.py b/module_build_service/scheduler/submit.py index d730aa9f..289bd0a7 100644 --- a/module_build_service/scheduler/submit.py +++ b/module_build_service/scheduler/submit.py @@ -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() diff --git a/module_build_service/web/utils.py b/module_build_service/web/utils.py index bca8db6a..e4363404 100644 --- a/module_build_service/web/utils.py +++ b/module_build_service/web/utils.py @@ -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): diff --git a/tests/test_build/test_build.py b/tests/test_build/test_build.py index 34763a09..6c64e600 100644 --- a/tests/test_build/test_build.py +++ b/tests/test_build/test_build.py @@ -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, diff --git a/tests/test_scm.py b/tests/test_common/test_scm.py similarity index 76% rename from tests/test_scm.py rename to tests/test_common/test_scm.py index 52e0222b..664532d8 100644 --- a/tests/test_scm.py +++ b/tests/test_common/test_scm.py @@ -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") diff --git a/tests/test_scheduler/test_module_init.py b/tests/test_scheduler/test_module_init.py index f53ad90e..361f85a8 100644 --- a/tests/test_scheduler/test_module_init.py +++ b/tests/test_scheduler/test_module_init.py @@ -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): diff --git a/tests/test_scheduler/test_submit.py b/tests/test_scheduler/test_submit.py index 18957f61..350aa497 100644 --- a/tests/test_scheduler/test_submit.py +++ b/tests/test_scheduler/test_submit.py @@ -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() diff --git a/tests/test_web/test_views.py b/tests/test_web/test_views.py index 918ee3ef..bc1cc201 100644 --- a/tests/test_web/test_views.py +++ b/tests/test_web/test_views.py @@ -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,