Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/npm/tests/test_loader.py
# Copyright (C) 2019 The Software Heritage developers | # Copyright (C) 2019 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 os | import os | ||||
import unittest | import unittest | ||||
import requests_mock | import requests_mock | ||||
from unittest.mock import patch | |||||
from swh.core import tarball | |||||
from swh.loader.core.tests import BaseLoaderStorageTest | from swh.loader.core.tests import BaseLoaderStorageTest | ||||
from swh.loader.npm.loader import NpmLoader | from swh.loader.npm.loader import NpmLoader | ||||
from swh.model.identifiers import snapshot_identifier | from swh.model.identifiers import snapshot_identifier | ||||
from .common import ( | from .common import ( | ||||
empty_package, package, package_non_utf8_encoding, | empty_package, package, package_non_utf8_encoding, | ||||
package_url, package_metadata_url, package_metadata_file, | package_url, package_metadata_url, package_metadata_file, | ||||
init_test_data, | init_test_data, | ||||
▲ Show 20 Lines • Show All 328 Lines • ▼ Show 20 Lines | def test_npm_loader_5_package_json_non_unicode_encoding(self, m): | ||||
package_metadata_url(package_non_utf8_encoding)) | package_metadata_url(package_non_utf8_encoding)) | ||||
self.loader.load(package_non_utf8_encoding, | self.loader.load(package_non_utf8_encoding, | ||||
package_url(package_non_utf8_encoding), | package_url(package_non_utf8_encoding), | ||||
package_metadata_url(package_non_utf8_encoding)) | package_metadata_url(package_non_utf8_encoding)) | ||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | ||||
self.assertEqual(self.loader.visit_status(), 'full') | self.assertEqual(self.loader.visit_status(), 'full') | ||||
self.assertFalse(os.path.exists(self.loader.temp_directory)) | self.assertFalse(os.path.exists(self.loader.temp_directory)) | ||||
@patch('swh.loader.npm.client.tarball') | |||||
def test_npm_loader_6_invalid_tarball(self, m, mock_tarball): | |||||
def _tarball_uncompress(filepath, path): | |||||
if filepath.endswith('0.0.3.tgz'): | |||||
raise Exception('Invalid tarball !') | |||||
else: | |||||
tarball.uncompress(filepath, path) | |||||
mock_tarball.uncompress.side_effect = _tarball_uncompress | |||||
self.reset_loader() | |||||
init_test_data(m, package_metadata_file(package, visit=1), | |||||
package_metadata_url(package)) | |||||
self.loader.load(package, package_url(package), | |||||
package_metadata_url(package)) | |||||
snapshot = self.loader.last_snapshot() | |||||
for branch, target in snapshot['branches'].items(): | |||||
if branch == b'releases/0.0.3': | |||||
self.assertTrue(target is None) | |||||
else: | |||||
self.assertTrue(target is not None) | |||||
self.assertEqual(self.loader.load_status(), {'status': 'eventful'}) | |||||
self.assertEqual(self.loader.visit_status(), 'partial') |