Merge #1773 Tweaks to tests for mock buids

This commit is contained in:
Brendan Reilly
2023-03-20 16:31:24 +00:00

View File

@@ -151,7 +151,7 @@ class TestMockModuleBuilder:
]
rpm_qf_output = dedent("""\
ed 0 1.14.1 4.module+24957a32 x86_64
mksh 0 56b-1 module+24957a32 x86_64
mksh 0 56b 1.module+24957a32 x86_64
module-build-macros 0 0.1 1.module+24957a32 noarch
""")
with mock.patch("os.listdir", return_value=rpms):
@@ -176,7 +176,7 @@ class TestMockModuleBuilder:
]
rpm_qf_output = dedent("""\
ed 0 1.14.1 4.module+24957a32 x86_64
mksh 0 56b-1 module+24957a32 x86_64
mksh 0 56b 1.module+24957a32 x86_64
""")
with mock.patch("os.listdir", return_value=rpms):
with mock.patch("subprocess.check_output", return_value=rpm_qf_output):
@@ -202,8 +202,48 @@ class TestMockModuleBuilder:
assert not pkglist
@pytest.mark.usefixtures("require_platform_and_default_arch", "testconfig")
@pytest.mark.usefixtures("testconfig")
class TestMockModuleBuilderBuild:
@pytest.fixture
def testsetup(self, require_platform_and_default_arch):
mmd = load_mmd(read_staged_data("formatted_testmodule"))
xmd = mmd.get_xmd()
xmd["mbs"]["koji_tag"] = "module-testmodule-master-20180205135154-9c690d0e"
mmd.set_xmd(xmd)
import_mmd(db_session, mmd)
build = ModuleBuild.get_last_build_in_stream(db_session, "testmodule", "master")
build.batch = 2
comp_builds = [
{
"module_id": build.id,
"state": koji.BUILD_STATES["COMPLETE"],
"package": "module-build-macros",
"nvr": "module-build-macros-0.1-1.module+f33+2+cea92c88",
"format": "rpms",
"batch": 1,
"scmurl": ("/tmp/module_build_service-build-macrosWZUPeK/SRPMS/"
"module-build-macros-0.1-1.src.rpm"),
},
{
"module_id": build.id,
"state": koji.BUILD_STATES["BUILDING"],
"package": "perl-Tangerine",
"format": "rpms",
"scmurl": (
"https://src.fedoraproject.org/rpms/perl-Tangerine?#master"
),
"batch": 2,
"ref": "01234567812fea798671925cc537f2f29b0bd216",
},
]
for build in comp_builds:
db_session.add(ComponentBuild(**build))
db_session.commit()
@pytest.fixture(params=[{}])
def mock_external_commands(self, request):
@@ -282,54 +322,34 @@ class TestMockModuleBuilderBuild:
popen_mock.side_effect = mock_popen
yield
@pytest.fixture
def builder(self, mock_external_commands, require_platform_and_default_arch):
mmd = load_mmd(read_staged_data("formatted_testmodule"))
xmd = mmd.get_xmd()
xmd["mbs"]["koji_tag"] = "module-testmodule-master-20180205135154-9c690d0e"
mmd.set_xmd(xmd)
import_mmd(db_session, mmd)
def make_builder(self):
build = ModuleBuild.get_last_build_in_stream(db_session, "testmodule", "master")
build.batch = 2
comp_builds = [
{
"module_id": build.id,
"state": koji.BUILD_STATES["BUILDING"],
"package": "perl-Tangerine",
"format": "rpms",
"scmurl": (
"https://src.fedoraproject.org/rpms/perl-Tangerine?#master"
),
"batch": 2,
"ref": "01234567812fea798671925cc537f2f29b0bd216",
},
]
for build in comp_builds:
db_session.add(ComponentBuild(**build))
db_session.commit()
# This is used to identify the first build of a module
MockModuleBuilder._build_id = 1
build = ModuleBuild.get_last_build_in_stream(db_session, "testmodule", "master")
yield GenericBuilder.create_from_module(db_session, build, conf, buildroot_connect=True)
builder = GenericBuilder.create_from_module(db_session, build, conf, buildroot_connect=True)
def test_mock_module_builder_build(self, builder):
builder.buildroot_add_artifacts([
"module-build-macros-0.1-1.module+f33+2+cea92c88.noarch.rpm"
"module-build-macros-0.1-1.module+f33+2+cea92c88"
])
return builder
@pytest.fixture(params=[{}])
def builder(self, mock_external_commands, testsetup):
builder = self.make_builder()
yield builder
builder.finalize(succeeded=True)
def test_mock_module_builder_build(self, builder):
builder.build("perl-Tangerine", "https://src.fedoraproject.org/rpms/perl-Tangerine?#master")
# Try building again to exercise code to clean up last build for this thread
builder.build("perl-Tangerine", "https://src.fedoraproject.org/rpms/perl-Tangerine?#master")
builder.finalize(succeeded=True)
@pytest.mark.parametrize("mock_external_commands", [{"fail_build": True}], indirect=True)
def test_mock_module_builder_build_failure(self, builder, caplog):
builder.build("perl-Tangerine", "file://opt/sources/fedora/perl-Tangerine?#master")
@@ -341,15 +361,18 @@ class TestMockModuleBuilderBuild:
def test_mock_module_builder_build_srpm(self, builder):
builder.build("perl-Tangerine", "/opt/sources/perl-Tangerine-0.22-2.src.rpm")
def test_mock_module_builder_build_stale_builddir(self, builder):
builder.build("perl-Tangerine", "/opt/sources/perl-Tangerine-0.22-2.src.rpm")
builder.finalize(succeeded=True)
def test_mock_module_builder_build_stale_builddir(self, mock_external_commands):
builder = self.make_builder()
try:
builder.build("perl-Tangerine", "/opt/sources/perl-Tangerine-0.22-2.src.rpm")
finally:
builder.finalize(succeeded=True)
MockModuleBuilder._build_id = 1
builder2 = GenericBuilder.create_from_module(
db_session, builder.module, conf, buildroot_connect=True
)
builder2.build("perl-Tangerine", "/opt/sources/perl-Tangerine-0.22-2.src.rpm")
builder2 = self.make_builder()
try:
builder2.build("perl-Tangerine", "/opt/sources/perl-Tangerine-0.22-2.src.rpm")
finally:
builder.finalize(succeeded=True)
@pytest.mark.usefixtures("require_empty_database", "testconfig")