From 8adf1dbedff4e460d2117759a7ae426e79f0828b Mon Sep 17 00:00:00 2001 From: jobrauer Date: Thu, 28 May 2020 15:27:00 +0200 Subject: [PATCH] JIRA: RHELBLD-264 - do cleanup/init once per class Make test_mock.py and test_content_generator.py use class scoped fixture. --- tests/test_builder/test_content_generator.py | 29 +++++++++++--------- tests/test_builder/test_koji.py | 6 ++-- tests/test_builder/test_mock.py | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/tests/test_builder/test_content_generator.py b/tests/test_builder/test_content_generator.py index fe476c34..1fdf4193 100644 --- a/tests/test_builder/test_content_generator.py +++ b/tests/test_builder/test_content_generator.py @@ -16,7 +16,6 @@ from module_build_service.common import conf, build_logs, models from module_build_service.common.modulemd import Modulemd 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 -from tests import init_data from tests.test_web.test_views import FakeSCM @@ -31,8 +30,7 @@ GET_USER_RV = { # setup/teardown converted to a fixture -> reuse existing fixture hierarchy @pytest.fixture() -def test_content_generator_fixture(request, require_platform_and_default_arch): - init_data(1, contexts=True) +def test_content_generator_fixture(request): module = models.ModuleBuild.get_by_id(db_session, 2) module.cg_build_koji_tag = "f27-module-candidate" cg = KojiContentGenerator(module, conf) @@ -75,6 +73,8 @@ def test_content_generator_fixture(request, require_platform_and_default_arch): @pytest.mark.usefixtures("test_content_generator_fixture") +@pytest.mark.usefixtures("provide_test_data_cls") +@pytest.mark.parametrize("provide_test_data_cls", [{"contexts": True}], indirect=True) class TestBuild: @patch("koji.ClientSession") @@ -965,16 +965,6 @@ class TestBuild: requires.append("%s:%s" % (name, stream)) assert "%s:%s" % (mmd.get_module_name(), mmd.get_stream_name()) in requires - @patch("koji.ClientSession") - @patch("module_build_service.builder.KojiContentGenerator.KojiContentGenerator._tag_cg_build") - @patch("module_build_service.builder.KojiContentGenerator.KojiContentGenerator._load_koji_tag") - def test_koji_cg_koji_import(self, tag_loader, tagger, cl_session): - """ Tests whether build is still tagged even if there's an exception in CGImport """ - cl_session.return_value.CGImport = Mock( - side_effect=koji.GenericError("Build already exists asdv")) - self.cg.koji_import() - tagger.assert_called() - def test_fill_in_rpms_list_debuginfo_deps(self): """ Tests that -debuginfo RPM required by other -debuginfo RPM is included in a RPM list. @@ -1171,3 +1161,16 @@ class TestBuild: self.cg.get_final_mmds() tag_loader.assert_called() finalize_mmd.assert_called() + + # (!) class fixture data will be overridden by function scope fixture + @patch("koji.ClientSession") + @patch("module_build_service.builder.KojiContentGenerator.KojiContentGenerator._tag_cg_build") + @patch("module_build_service.builder.KojiContentGenerator.KojiContentGenerator._load_koji_tag") + @pytest.mark.usefixtures("provide_test_data") + @pytest.mark.parametrize("provide_test_data", [{"contexts": True}], indirect=True) + def test_koji_cg_koji_import(self, tag_loader, tagger, cl_session): + """ Tests whether build is still tagged even if there's an exception in CGImport """ + cl_session.return_value.CGImport = Mock( + side_effect=koji.GenericError("Build already exists asdv")) + self.cg.koji_import() + tagger.assert_called() diff --git a/tests/test_builder/test_koji.py b/tests/test_builder/test_koji.py index 9ecbf84e..58740464 100644 --- a/tests/test_builder/test_koji.py +++ b/tests/test_builder/test_koji.py @@ -20,7 +20,7 @@ from module_build_service.common.utils import mmd_to_str from module_build_service.scheduler import events from module_build_service.scheduler.db_session import db_session import module_build_service.scheduler.handlers.repos -from tests import init_data, make_module_in_db +from tests import make_module_in_db @pytest.fixture(scope="function") @@ -87,9 +87,7 @@ class FakeKojiModuleBuilder(KojiModuleBuilder): # setup/teardown converted to a fixture -> reuse existing fixture hierarchy @pytest.fixture() -def koji_builder_fixture(request, require_platform_and_default_arch): - init_data(data_size=1) - +def koji_builder_fixture(request, provide_test_data): events.scheduler.reset() config = mock.Mock() config.koji_profile = conf.koji_profile diff --git a/tests/test_builder/test_mock.py b/tests/test_builder/test_mock.py index eb6d937f..738b4e9a 100644 --- a/tests/test_builder/test_mock.py +++ b/tests/test_builder/test_mock.py @@ -241,7 +241,7 @@ class TestMockModuleBuilderAddRepos: assert set(builder.enabled_modules) == {"foo:1", "app:1"} -@pytest.mark.usefixtures("require_empty_database") +@pytest.mark.usefixtures("require_empty_database_cls") class TestOfflineLocalBuilds: def test_import_fake_base_module(self):