diff --git a/swh/indexer/metadata.py b/swh/indexer/metadata.py --- a/swh/indexer/metadata.py +++ b/swh/indexer/metadata.py @@ -284,7 +284,7 @@ assert len(head_revs) == len(head_rev_ids) results = [] - for (orig, rev) in zip(origins, head_revs): + for (origin, rev) in zip(origins, head_revs): if not rev: self.warning('Missing head revision %s of origin %r', (hashutil.hash_to_bytes(rev['id']), origin)) diff --git a/swh/indexer/tests/test_origin_metadata.py b/swh/indexer/tests/test_origin_metadata.py --- a/swh/indexer/tests/test_origin_metadata.py +++ b/swh/indexer/tests/test_origin_metadata.py @@ -77,7 +77,7 @@ assert results == [origin_metadata] -def test_origin_metadata_indexer_duplicates( +def test_origin_metadata_indexer_duplicate_origin( idx_storage, storage, obj_storage, origin_metadata_indexer): indexer = OriginMetadataIndexer() indexer.storage = storage @@ -97,3 +97,28 @@ results = list(indexer.idx_storage.origin_intrinsic_metadata_get([ origin['id']])) assert len(results) == 1 + + +def test_origin_metadata_indexer_duplicate_revision( + idx_storage, storage, obj_storage, origin_metadata_indexer): + indexer = OriginMetadataIndexer() + indexer.storage = storage + indexer.idx_storage = idx_storage + indexer.run(["git+https://github.com/librariesio/yarn-parser", + "git+https://github.com/librariesio/yarn-parser.git"]) + + origin1 = storage.origin_get({ + 'type': 'git', + 'url': 'https://github.com/librariesio/yarn-parser'}) + origin2 = storage.origin_get({ + 'type': 'git', + 'url': 'https://github.com/librariesio/yarn-parser.git'}) + assert origin1['id'] != origin2['id'] + rev_id = hash_to_bytes('8dbb6aeb036e7fd80664eb8bfd1507881af1ba9f') + + results = list(indexer.idx_storage.revision_metadata_get([rev_id])) + assert len(results) == 1 + + results = list(indexer.idx_storage.origin_intrinsic_metadata_get([ + origin1['id'], origin2['id']])) + assert len(results) == 2 diff --git a/swh/indexer/tests/utils.py b/swh/indexer/tests/utils.py --- a/swh/indexer/tests/utils.py +++ b/swh/indexer/tests/utils.py @@ -70,6 +70,12 @@ 'project': None, 'type': 'git', 'url': 'https://github.com/librariesio/yarn-parser'}, + { + 'id': 54974446, + 'lister': None, + 'project': None, + 'type': 'git', + 'url': 'https://github.com/librariesio/yarn-parser.git'}, ] SNAPSHOTS = { @@ -148,7 +154,13 @@ b'HEAD': { 'target': hash_to_bytes( '8dbb6aeb036e7fd80664eb8bfd1507881af1ba9f'), - 'target_type': 'revision'}}} + 'target_type': 'revision'}}}, + 54974446: { + 'branches': { + b'HEAD': { + 'target': hash_to_bytes( + '8dbb6aeb036e7fd80664eb8bfd1507881af1ba9f'), + 'target_type': 'revision'}}}, }