From: Stefano Tondo <[email protected]> Add test verifying that version extraction patterns work correctly for: - Rust crates (.crate files) - Go modules - Python packages (PyPI) - Generic tarball formats - Git revision hashes
Test builds tar recipe and validates that all packages have proper version strings extracted from their filenames. Signed-off-by: Stefano Tondo <[email protected]> --- meta/lib/oeqa/selftest/cases/spdx.py | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/meta/lib/oeqa/selftest/cases/spdx.py b/meta/lib/oeqa/selftest/cases/spdx.py index cae5c95f43..9a0ef526d2 100644 --- a/meta/lib/oeqa/selftest/cases/spdx.py +++ b/meta/lib/oeqa/selftest/cases/spdx.py @@ -442,3 +442,50 @@ class SPDX30Check(SPDX3CheckBase, OESelftestTestCase): f"External references {'found' if found_external_refs else 'not found'} " f"in SPDX output (defensive handling verified)" ) + + def test_version_extraction_patterns(self): + """ + Test that version extraction works for various package formats. + + This test verifies that version patterns correctly extract versions from: + 1. Rust crates (.crate files) + 2. Go modules + 3. Python packages (PyPI) + 4. Generic tarball formats + 5. Git revision hashes + """ + # Build a package that has dependencies with various formats + objset = self.check_recipe_spdx( + "tar", + "{DEPLOY_DIR_SPDX}/{SSTATE_PKGARCH}/recipes/recipe-tar.spdx.json", + ) + + # Collect all packages with versions + packages_with_versions = [] + for pkg in objset.foreach_type(oe.spdx30.software_Package): + if hasattr(pkg, 'version') and pkg.version: + packages_with_versions.append((pkg.name, pkg.version)) + + self.assertGreater( + len(packages_with_versions), 0, + "Should find packages with extracted versions" + ) + + self.logger.info(f"Found {len(packages_with_versions)} packages with versions") + + # Log some examples for debugging + for name, version in packages_with_versions[:5]: + self.logger.info(f" {name}: {version}") + + # Verify that versions follow expected patterns + for name, version in packages_with_versions: + # Version should not be empty + self.assertIsNotNone(version) + self.assertNotEqual(version, "") + + # Version should contain digits + self.assertRegex( + version, + r'\d', + f"Version '{version}' for package '{name}' should contain digits" + ) -- 2.53.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#231593): https://lists.openembedded.org/g/openembedded-core/message/231593 Mute This Topic: https://lists.openembedded.org/mt/117922745/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
