diff --git a/swh/loader/git/tests/test_converters.py b/swh/loader/git/tests/test_converters.py --- a/swh/loader/git/tests/test_converters.py +++ b/swh/loader/git/tests/test_converters.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2017 The Software Heritage developers +# Copyright (C) 2015-2018 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information @@ -121,6 +121,21 @@ self.repo[self.blob_id], max_content_size=max_length) self.assertEqual(self.blob_hidden, content) + def test_convertion_wrong_input(self): + class Something: + type_name = b'something-not-the-right-type' + + m = { + 'blob': converters.dulwich_blob_to_content, + 'blob2': converters.dulwich_blob_to_content_id, + 'tree': converters.dulwich_tree_to_directory, + 'commit': converters.dulwich_tree_to_directory, + 'tag': converters.dulwich_tag_to_release, + } + + for _callable in m.values(): + self.assertIsNone(_callable(Something())) + def test_commit_to_revision(self): sha1 = b'9768d0b576dbaaecd80abedad6dfd0d72f1476da' @@ -161,6 +176,9 @@ self.assertEqual(revision, expected_revision) def test_author_line_to_author(self): + # edge case out of the way + self.assertIsNone(converters.parse_author(None)) + tests = { b'a ': { 'name': b'a', @@ -192,6 +210,11 @@ 'email': b'', 'fullname': b' <>', }, + b'something': { + 'name': None, + 'email': None, + 'fullname': b'something' + } } for author in sorted(tests): diff --git a/swh/loader/git/tests/test_tasks.py b/swh/loader/git/tests/test_tasks.py new file mode 100644 --- /dev/null +++ b/swh/loader/git/tests/test_tasks.py @@ -0,0 +1,71 @@ +# Copyright (C) 2018 The Software Heritage developers +# See the AUTHORS file at the top-level directory of this distribution +# License: GNU General Public License version 3, or any later version +# See top-level LICENSE file for more information + +import datetime +import unittest +from unittest.mock import patch + +from swh.loader.git.tasks import ( + UpdateGitRepository, LoadDiskGitRepository, + UncompressAndLoadDiskGitRepository +) + + +class TestTasks(unittest.TestCase): + def test_check_task_name(self): + task = UpdateGitRepository() + self.assertEqual(task.task_queue, 'swh_loader_git') + + @patch('swh.loader.git.updater.BulkUpdater.load') + def test_task(self, mock_loader): + mock_loader.return_value = {'status': 'eventful'} + task = UpdateGitRepository() + + # given + actual_result = task.run_task('origin_url') + + self.assertEqual(actual_result, {'status': 'eventful'}) + + mock_loader.assert_called_once_with('origin_url', base_url=None) + + +class TestTasks2(unittest.TestCase): + def test_check_task_name(self): + task = LoadDiskGitRepository() + self.assertEqual(task.task_queue, 'swh_loader_git_express') + + @patch('swh.loader.git.loader.GitLoader.load') + def test_task(self, mock_loader): + mock_loader.return_value = {'status': 'uneventful'} + task = LoadDiskGitRepository() + + # given + actual_result = task.run_task('origin_url2', '/some/repo', + '2018-12-10 00:00') + + self.assertEqual(actual_result, {'status': 'uneventful'}) + + mock_loader.assert_called_once_with( + 'origin_url2', '/some/repo', datetime.datetime(2018, 12, 10, 0, 0)) + + +class TestTasks3(unittest.TestCase): + def test_check_task_name(self): + task = UncompressAndLoadDiskGitRepository() + self.assertEqual(task.task_queue, 'swh_loader_git_archive') + + @patch('swh.loader.git.loader.GitLoaderFromArchive.load') + def test_task(self, mock_loader): + mock_loader.return_value = {'status': 'failed'} + task = UncompressAndLoadDiskGitRepository() + + # given + actual_result = task.run_task('origin_url3', '/path/repo', + '2017-01-10 00:00') + + self.assertEqual(actual_result, {'status': 'failed'}) + + mock_loader.assert_called_once_with( + 'origin_url3', '/path/repo', datetime.datetime(2017, 1, 10, 0, 0))