| |
@@ -151,7 +151,7 @@
|
| |
]
|
| |
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 @@
|
| |
]
|
| |
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 @@
|
| |
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 @@
|
| |
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 @@
|
| |
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)
|
| |
-
|
| |
- 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")
|
| |
+ 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)
|
| |
+
|
| |
+ 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")
|
| |
Two small changes to test_mock.py
test_mock.py: fix NVR's in fake rpm -qf output
The rpm -qf call in KojiContentGenerator.__get_rpms has VERSION and
RELEASE separated by a space, not a -.
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.