Changeset View
Changeset View
Standalone View
Standalone View
swh/indexer/tests/test_metadata.py
# Copyright (C) 2017 The Software Heritage developers | # Copyright (C) 2017 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import unittest | import unittest | ||||
import logging | import logging | ||||
from nose.tools import istest | |||||
from swh.indexer.metadata_dictionary import compute_metadata | from swh.indexer.metadata_dictionary import compute_metadata | ||||
from swh.indexer.metadata_detector import detect_metadata | from swh.indexer.metadata_detector import detect_metadata | ||||
from swh.indexer.metadata_detector import extract_minimal_metadata_dict | from swh.indexer.metadata_detector import extract_minimal_metadata_dict | ||||
from swh.indexer.metadata import ContentMetadataIndexer | from swh.indexer.metadata import ContentMetadataIndexer | ||||
from swh.indexer.metadata import RevisionMetadataIndexer | from swh.indexer.metadata import RevisionMetadataIndexer | ||||
from swh.indexer.tests.test_utils import MockObjStorage, MockStorage | from swh.indexer.tests.test_utils import MockObjStorage, MockStorage | ||||
from swh.indexer.tests.test_utils import MockIndexerStorage | from swh.indexer.tests.test_utils import MockIndexerStorage | ||||
▲ Show 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | def setUp(self): | ||||
'name': 'swh-metadata-translator', | 'name': 'swh-metadata-translator', | ||||
'version': '0.0.1', | 'version': '0.0.1', | ||||
'configuration': { | 'configuration': { | ||||
'type': 'local', | 'type': 'local', | ||||
'context': 'npm' | 'context': 'npm' | ||||
} | } | ||||
} | } | ||||
@istest | |||||
def test_compute_metadata_none(self): | def test_compute_metadata_none(self): | ||||
""" | """ | ||||
testing content empty content is empty | testing content empty content is empty | ||||
should return None | should return None | ||||
""" | """ | ||||
# given | # given | ||||
content = b"" | content = b"" | ||||
context = "npm" | context = "npm" | ||||
# None if no metadata was found or an error occurred | # None if no metadata was found or an error occurred | ||||
declared_metadata = None | declared_metadata = None | ||||
# when | # when | ||||
result = compute_metadata(context, content) | result = compute_metadata(context, content) | ||||
# then | # then | ||||
self.assertEqual(declared_metadata, result) | self.assertEqual(declared_metadata, result) | ||||
@istest | |||||
def test_compute_metadata_npm(self): | def test_compute_metadata_npm(self): | ||||
""" | """ | ||||
testing only computation of metadata with hard_mapping_npm | testing only computation of metadata with hard_mapping_npm | ||||
""" | """ | ||||
# given | # given | ||||
content = b""" | content = b""" | ||||
{ | { | ||||
"name": "test_metadata", | "name": "test_metadata", | ||||
Show All 16 Lines | def test_compute_metadata_npm(self): | ||||
'other': {} | 'other': {} | ||||
} | } | ||||
# when | # when | ||||
result = compute_metadata("npm", content) | result = compute_metadata("npm", content) | ||||
# then | # then | ||||
self.assertEqual(declared_metadata, result) | self.assertEqual(declared_metadata, result) | ||||
@istest | |||||
def test_extract_minimal_metadata_dict(self): | def test_extract_minimal_metadata_dict(self): | ||||
""" | """ | ||||
Test the creation of a coherent minimal metadata set | Test the creation of a coherent minimal metadata set | ||||
""" | """ | ||||
# given | # given | ||||
metadata_list = [{ | metadata_list = [{ | ||||
'name': 'test_1', | 'name': 'test_1', | ||||
'version': '0.0.1', | 'version': '0.0.1', | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | def test_extract_minimal_metadata_dict(self): | ||||
"identifier": None, | "identifier": None, | ||||
"codeRepository": [{ | "codeRepository": [{ | ||||
'type': 'git', | 'type': 'git', | ||||
'url': 'https://github.com/moranegg/metadata_test' | 'url': 'https://github.com/moranegg/metadata_test' | ||||
}] | }] | ||||
} | } | ||||
self.assertEqual(expected_results, results) | self.assertEqual(expected_results, results) | ||||
@istest | |||||
def test_index_content_metadata_npm(self): | def test_index_content_metadata_npm(self): | ||||
""" | """ | ||||
testing NPM with package.json | testing NPM with package.json | ||||
- one sha1 uses a file that can't be translated to metadata and | - one sha1 uses a file that can't be translated to metadata and | ||||
should return None in the translated metadata | should return None in the translated metadata | ||||
""" | """ | ||||
# given | # given | ||||
sha1s = ['26a9f72a7c87cc9205725cfd879f514ff4f3d8d5', | sha1s = ['26a9f72a7c87cc9205725cfd879f514ff4f3d8d5', | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | def test_index_content_metadata_npm(self): | ||||
'indexer_configuration_id': 30, | 'indexer_configuration_id': 30, | ||||
'translated_metadata': None, | 'translated_metadata': None, | ||||
'id': '02fb2c89e14f7fab46701478c83779c7beb7b069' | 'id': '02fb2c89e14f7fab46701478c83779c7beb7b069' | ||||
}] | }] | ||||
# The assertion below returns False sometimes because of nested lists | # The assertion below returns False sometimes because of nested lists | ||||
self.assertEqual(expected_results, results) | self.assertEqual(expected_results, results) | ||||
@istest | |||||
def test_detect_metadata_package_json(self): | def test_detect_metadata_package_json(self): | ||||
# given | # given | ||||
df = [{ | df = [{ | ||||
'sha1_git': b'abc', | 'sha1_git': b'abc', | ||||
'name': b'index.js', | 'name': b'index.js', | ||||
'target': b'abc', | 'target': b'abc', | ||||
'length': 897, | 'length': 897, | ||||
'status': 'visible', | 'status': 'visible', | ||||
Show All 19 Lines | def test_detect_metadata_package_json(self): | ||||
expected_results = { | expected_results = { | ||||
'npm': [ | 'npm': [ | ||||
b'cde' | b'cde' | ||||
] | ] | ||||
} | } | ||||
# then | # then | ||||
self.assertEqual(expected_results, results) | self.assertEqual(expected_results, results) | ||||
@istest | |||||
def test_revision_metadata_indexer(self): | def test_revision_metadata_indexer(self): | ||||
metadata_indexer = TestRevisionMetadataIndexer() | metadata_indexer = TestRevisionMetadataIndexer() | ||||
sha1_gits = [ | sha1_gits = [ | ||||
b'8dbb6aeb036e7fd80664eb8bfd1507881af1ba9f', | b'8dbb6aeb036e7fd80664eb8bfd1507881af1ba9f', | ||||
] | ] | ||||
metadata_indexer.run(sha1_gits, 'update-dups') | metadata_indexer.run(sha1_gits, 'update-dups') | ||||
Show All 39 Lines |