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 swh.indexer.metadata_dictionary import compute_metadata, CROSSWALK_TABLE | from swh.indexer.metadata_dictionary import CROSSWALK_TABLE, MAPPINGS | ||||
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 All 31 Lines | def prepare(self): | ||||
'url': 'http://localhost:9999', | 'url': 'http://localhost:9999', | ||||
} | } | ||||
}, | }, | ||||
'tools': { | 'tools': { | ||||
'name': 'swh-metadata-detector', | 'name': 'swh-metadata-detector', | ||||
'version': '0.0.2', | 'version': '0.0.2', | ||||
'configuration': { | 'configuration': { | ||||
'type': 'local', | 'type': 'local', | ||||
'context': 'npm' | 'context': 'NpmMapping' | ||||
} | } | ||||
} | } | ||||
} | } | ||||
self.storage = MockStorage() | self.storage = MockStorage() | ||||
self.idx_storage = MockIndexerStorage() | self.idx_storage = MockIndexerStorage() | ||||
self.log = logging.getLogger('swh.indexer') | self.log = logging.getLogger('swh.indexer') | ||||
self.objstorage = MockObjStorage() | self.objstorage = MockObjStorage() | ||||
self.destination_task = None | self.destination_task = None | ||||
Show All 12 Lines | def setUp(self): | ||||
shows the entire diff in the results | shows the entire diff in the results | ||||
""" | """ | ||||
self.maxDiff = None | self.maxDiff = None | ||||
self.content_tool = { | self.content_tool = { | ||||
'name': 'swh-metadata-translator', | 'name': 'swh-metadata-translator', | ||||
'version': '0.0.2', | 'version': '0.0.2', | ||||
'configuration': { | 'configuration': { | ||||
'type': 'local', | 'type': 'local', | ||||
'context': 'npm' | 'context': 'NpmMapping' | ||||
} | } | ||||
} | } | ||||
MockIndexerStorage.added_data = [] | MockIndexerStorage.added_data = [] | ||||
def test_crosstable(self): | def test_crosstable(self): | ||||
self.assertEqual(CROSSWALK_TABLE['NodeJS'], { | self.assertEqual(CROSSWALK_TABLE['NodeJS'], { | ||||
'repository': 'codeRepository', | 'repository': 'codeRepository', | ||||
'os': 'operatingSystem', | 'os': 'operatingSystem', | ||||
Show All 20 Lines | class Metadata(unittest.TestCase): | ||||
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" | |||||
# 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 = MAPPINGS["NpmMapping"].translate(content) | ||||
# then | # then | ||||
self.assertEqual(declared_metadata, result) | self.assertEqual(declared_metadata, result) | ||||
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 | ||||
Show All 15 Lines | def test_compute_metadata_npm(self): | ||||
'codeRepository': { | 'codeRepository': { | ||||
'type': 'git', | 'type': 'git', | ||||
'url': 'https://github.com/moranegg/metadata_test' | 'url': 'https://github.com/moranegg/metadata_test' | ||||
}, | }, | ||||
'other': {} | 'other': {} | ||||
} | } | ||||
# when | # when | ||||
result = compute_metadata("npm", content) | result = MAPPINGS["NpmMapping"].translate(content) | ||||
# then | # then | ||||
self.assertEqual(declared_metadata, result) | self.assertEqual(declared_metadata, result) | ||||
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 | ||||
▲ Show 20 Lines • Show All 155 Lines • ▼ Show 20 Lines | def test_detect_metadata_package_json(self): | ||||
'perms': 33188, | 'perms': 33188, | ||||
'dir_id': b'dir_a', | 'dir_id': b'dir_a', | ||||
'sha1': b'cde' | 'sha1': b'cde' | ||||
}] | }] | ||||
# when | # when | ||||
results = detect_metadata(df) | results = detect_metadata(df) | ||||
expected_results = { | expected_results = { | ||||
'npm': [ | 'NpmMapping': [ | ||||
b'cde' | b'cde' | ||||
] | ] | ||||
} | } | ||||
# then | # then | ||||
self.assertEqual(expected_results, results) | self.assertEqual(expected_results, results) | ||||
def test_revision_metadata_indexer(self): | def test_revision_metadata_indexer(self): | ||||
metadata_indexer = TestRevisionMetadataIndexer() | metadata_indexer = TestRevisionMetadataIndexer() | ||||
▲ Show 20 Lines • Show All 45 Lines • Show Last 20 Lines |