from repo_scoping.repo_ingestion.metadata import RepositoryMetadataExtractor def test_metadata_prefers_source_identity_over_pyproject(tmp_path): repo = tmp_path / "repo-scoping" repo.mkdir() (repo / "pyproject.toml").write_text( '[project]\nname = "repo-registry"\ndescription = "Repository Scoping."\n', encoding="utf-8", ) metadata = RepositoryMetadataExtractor().extract(repo, str(repo)) assert metadata.name == "repo-scoping" assert metadata.description == "Repository Scoping." def test_metadata_uses_pyproject_when_source_name_is_generic(tmp_path): repo = tmp_path / "repo" repo.mkdir() (repo / "pyproject.toml").write_text( '[project]\nname = "invoice-tools"\ndescription = "Extract invoice data."\n', encoding="utf-8", ) metadata = RepositoryMetadataExtractor().extract(repo, str(repo)) assert metadata.name == "invoice-tools" assert metadata.description == "Extract invoice data." def test_metadata_uses_package_json_when_source_name_is_generic(tmp_path): repo = tmp_path / "repo" repo.mkdir() (repo / "package.json").write_text( '{"name":"frontend-registry","description":"Browse repository abilities."}', encoding="utf-8", ) metadata = RepositoryMetadataExtractor().extract(repo, str(repo)) assert metadata.name == "frontend-registry" assert metadata.description == "Browse repository abilities." def test_metadata_uses_readme_title_when_source_name_is_generic(tmp_path): repo = tmp_path / "repository" repo.mkdir() (repo / "README.md").write_text( "# Useful Registry\n\nExtra details follow.\n", encoding="utf-8", ) metadata = RepositoryMetadataExtractor().extract(repo, str(repo)) assert metadata.name == "Useful Registry" assert metadata.description == "Extra details follow." def test_metadata_strips_git_suffix_from_url_identity(tmp_path): repo = tmp_path / "checkout" repo.mkdir() (repo / "pyproject.toml").write_text( '[project]\nname = "old-package-name"\n', encoding="utf-8", ) metadata = RepositoryMetadataExtractor().extract( repo, "https://example.test/acme/repo-scoping.git", ) assert metadata.name == "repo-scoping"