mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-02 20:59:06 +08:00
test_mock.py: refactor test case setup
To clean things up and facilitate future changes to test cases, split the method for creating a builder apart from the fixture so that it can be used independently.
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user