#1773 Tweaks to tests for mock buids
Merged a year ago by breilly. Opened a year ago by otaylor.
otaylor/fm-orchestrator test-mock-tweaks  into  master

file modified
+69 -46
@@ -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.

rebased onto 6d69654

a year ago

rebased onto ba82e8b

a year ago

Commit 180d347 fixes this pull-request

Pull-Request has been merged by breilly

a year ago

Pull-Request has been merged by breilly

a year ago
Metadata