Re: [PATCH RESEND 3/4] tests/test_config: Refactor LicenseManager testing to test multiple configurations

Sam James <[email protected]> Thu, 18 Dec 2025 01:27:44 +0000
Newsgroups gmane.linux.gentoo.portage.devel
Organization Gentoo
Message-ID <[email protected]>
Louis Chauvet <[email protected]> writes:

> In order to easly test per-profile per-package license unmasking, extract
> common code from testLicenseManager.

Reviewed-by: Sam James <[email protected]>

>
> Signed-off-by: Louis Chauvet <[email protected]>
> ---
>  lib/portage/tests/ebuild/test_config.py | 181 ++++++++++++++++----------------
>  1 file changed, 88 insertions(+), 93 deletions(-)
>
> diff --git a/lib/portage/tests/ebuild/test_config.py b/lib/portage/tests/ebuild/test_config.py
> index 83046a7dc97b..b36073504b11 100644
> --- a/lib/portage/tests/ebuild/test_config.py
> +++ b/lib/portage/tests/ebuild/test_config.py
> @@ -83,16 +83,94 @@ class ConfigTestCase(TestCase):
>          finally:
>              playground.cleanup()
>  
> +    _testLicenseManagerPackageLicense = (
> +        "dev-libs/* TEST",
> +        "dev-libs/A -TEST2",
> +        "=dev-libs/A-2 TEST3 @TEST",
> +        "*/* @EULA TEST2",
> +        "=dev-libs/C-1 *",
> +        "=dev-libs/C-2 -*",
> +    )
> +
> +    def _testLicenseManager(self, lic_man):
> +        self.assertEqual(lic_man._accept_license_str, None)
> +        self.assertEqual(lic_man._accept_license, None)
> +        self.assertEqual(lic_man._license_groups, {"EULA": frozenset(["TEST"])})
> +        self.assertEqual(lic_man._undef_lic_groups, {"TEST"})
> +
> +        self.assertEqual(lic_man.extract_global_changes(), "TEST TEST2")
> +        self.assertEqual(lic_man.extract_global_changes(), "")
> +
> +        lic_man.set_accept_license_str("TEST TEST2")
> +        self.assertEqual(
> +            lic_man._getPkgAcceptLicense("dev-libs/B-1", "0", None),
> +            ["TEST", "TEST2", "TEST"],
> +        )
> +        self.assertEqual(
> +            lic_man._getPkgAcceptLicense("dev-libs/A-1", "0", None),
> +            ["TEST", "TEST2", "TEST", "-TEST2"],
> +        )
> +        self.assertEqual(
> +            lic_man._getPkgAcceptLicense("dev-libs/A-2", "0", None),
> +            ["TEST", "TEST2", "TEST", "-TEST2", "TEST3", "@TEST"],
> +        )
> +
> +        self.assertEqual(
> +            lic_man.get_prunned_accept_license("dev-libs/B-1", [], "TEST", "0", None),
> +            "TEST",
> +        )
> +        self.assertEqual(
> +            lic_man.get_prunned_accept_license("dev-libs/A-1", [], "-TEST2", "0", None),
> +            "",
> +        )
> +        self.assertEqual(
> +            lic_man.get_prunned_accept_license(
> +                "dev-libs/A-2", [], "|| ( TEST TEST2 )", "0", None
> +            ),
> +            "TEST",
> +        )
> +        self.assertEqual(
> +            lic_man.get_prunned_accept_license("dev-libs/C-1", [], "TEST5", "0", None),
> +            "TEST5",
> +        )
> +        self.assertEqual(
> +            lic_man.get_prunned_accept_license("dev-libs/C-2", [], "TEST2", "0", None),
> +            "",
> +        )
> +
> +        self.assertEqual(
> +            lic_man.getMissingLicenses("dev-libs/B-1", [], "TEST", "0", None), []
> +        )
> +        self.assertEqual(
> +            lic_man.getMissingLicenses("dev-libs/A-1", [], "-TEST2", "0", None),
> +            ["-TEST2"],
> +        )
> +        self.assertEqual(
> +            lic_man.getMissingLicenses(
> +                "dev-libs/A-2", [], "|| ( TEST TEST2 )", "0", None
> +            ),
> +            [],
> +        )
> +        self.assertEqual(
> +            lic_man.getMissingLicenses(
> +                "dev-libs/A-3", [], "|| ( TEST2 || ( TEST3 TEST4 ) )", "0", None
> +            ),
> +            ["TEST2", "TEST3", "TEST4"],
> +        )
> +        self.assertEqual(
> +            lic_man.getMissingLicenses("dev-libs/C-1", [], "TEST5", "0", None), []
> +        )
> +        self.assertEqual(
> +            lic_man.getMissingLicenses("dev-libs/C-2", [], "TEST2", "0", None),
> +            ["TEST2"],
> +        )
> +        self.assertEqual(
> +            lic_man.getMissingLicenses("dev-libs/D-1", [], "", "0", None), []
> +        )
> +
>      def testLicenseManager(self):
>          user_config = {
> -            "package.license": (
> -                "dev-libs/* TEST",
> -                "dev-libs/A -TEST2",
> -                "=dev-libs/A-2 TEST3 @TEST",
> -                "*/* @EULA TEST2",
> -                "=dev-libs/C-1 *",
> -                "=dev-libs/C-2 -*",
> -            ),
> +            "package.license": self._testLicenseManagerPackageLicense,
>          }
>  
>          playground = ResolverPlayground(user_config=user_config)
> @@ -100,92 +178,9 @@ class ConfigTestCase(TestCase):
>          try:
>              portage.util.noiselimit = -2
>  
> -            pkg_license = os.path.join(playground.eroot, "etc", "portage")
> -
> -            lic_man = LicenseManager(settings._locations_manager, pkg_license)
> -
> -            self.assertEqual(lic_man._accept_license_str, None)
> -            self.assertEqual(lic_man._accept_license, None)
> -            self.assertEqual(lic_man._license_groups, {"EULA": frozenset(["TEST"])})
> -            self.assertEqual(lic_man._undef_lic_groups, {"TEST"})
> -
> -            self.assertEqual(lic_man.extract_global_changes(), "TEST TEST2")
> -            self.assertEqual(lic_man.extract_global_changes(), "")
> -
> -            lic_man.set_accept_license_str("TEST TEST2")
> -            self.assertEqual(
> -                lic_man._getPkgAcceptLicense("dev-libs/B-1", "0", None),
> -                ["TEST", "TEST2", "TEST"],
> -            )
> -            self.assertEqual(
> -                lic_man._getPkgAcceptLicense("dev-libs/A-1", "0", None),
> -                ["TEST", "TEST2", "TEST", "-TEST2"],
> -            )
> -            self.assertEqual(
> -                lic_man._getPkgAcceptLicense("dev-libs/A-2", "0", None),
> -                ["TEST", "TEST2", "TEST", "-TEST2", "TEST3", "@TEST"],
> -            )
> -
> -            self.assertEqual(
> -                lic_man.get_prunned_accept_license(
> -                    "dev-libs/B-1", [], "TEST", "0", None
> -                ),
> -                "TEST",
> -            )
> -            self.assertEqual(
> -                lic_man.get_prunned_accept_license(
> -                    "dev-libs/A-1", [], "-TEST2", "0", None
> -                ),
> -                "",
> -            )
> -            self.assertEqual(
> -                lic_man.get_prunned_accept_license(
> -                    "dev-libs/A-2", [], "|| ( TEST TEST2 )", "0", None
> -                ),
> -                "TEST",
> -            )
> -            self.assertEqual(
> -                lic_man.get_prunned_accept_license(
> -                    "dev-libs/C-1", [], "TEST5", "0", None
> -                ),
> -                "TEST5",
> -            )
> -            self.assertEqual(
> -                lic_man.get_prunned_accept_license(
> -                    "dev-libs/C-2", [], "TEST2", "0", None
> -                ),
> -                "",
> -            )
> +            lic_man = LicenseManager(settings._locations_manager)
> +            self._testLicenseManager(lic_man)
>  
> -            self.assertEqual(
> -                lic_man.getMissingLicenses("dev-libs/B-1", [], "TEST", "0", None), []
> -            )
> -            self.assertEqual(
> -                lic_man.getMissingLicenses("dev-libs/A-1", [], "-TEST2", "0", None),
> -                ["-TEST2"],
> -            )
> -            self.assertEqual(
> -                lic_man.getMissingLicenses(
> -                    "dev-libs/A-2", [], "|| ( TEST TEST2 )", "0", None
> -                ),
> -                [],
> -            )
> -            self.assertEqual(
> -                lic_man.getMissingLicenses(
> -                    "dev-libs/A-3", [], "|| ( TEST2 || ( TEST3 TEST4 ) )", "0", None
> -                ),
> -                ["TEST2", "TEST3", "TEST4"],
> -            )
> -            self.assertEqual(
> -                lic_man.getMissingLicenses("dev-libs/C-1", [], "TEST5", "0", None), []
> -            )
> -            self.assertEqual(
> -                lic_man.getMissingLicenses("dev-libs/C-2", [], "TEST2", "0", None),
> -                ["TEST2"],
> -            )
> -            self.assertEqual(
> -                lic_man.getMissingLicenses("dev-libs/D-1", [], "", "0", None), []
> -            )
>          finally:
>              portage.util.noiselimit = 0
>              playground.cleanup()