X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9b16a843a641159867ea390c4c2384b320183b15..7ac1e7337dca972ce93d04e5eccb6f4de9aed141:/sdk/cwl/tests/test_util.py diff --git a/sdk/cwl/tests/test_util.py b/sdk/cwl/tests/test_util.py index e42197e21c..183e0fcc69 100644 --- a/sdk/cwl/tests/test_util.py +++ b/sdk/cwl/tests/test_util.py @@ -2,6 +2,8 @@ # # SPDX-License-Identifier: Apache-2.0 +from builtins import bytes + import unittest import mock import datetime @@ -9,6 +11,7 @@ import httplib2 from arvados_cwl.util import * from arvados.errors import ApiError +from arvados_cwl.arvworkflow import common_prefix class MockDateTime(datetime.datetime): @classmethod @@ -19,14 +22,15 @@ datetime.datetime = MockDateTime class TestUtil(unittest.TestCase): def test_get_intermediate_collection_info(self): + name = "one" current_container = {"uuid": "zzzzz-8i9sb-zzzzzzzzzzzzzzz"} intermediate_output_ttl = 120 - info = get_intermediate_collection_info(current_container, intermediate_output_ttl) + info = get_intermediate_collection_info(name, current_container, intermediate_output_ttl) - self.assertEqual(info["name"], "Intermediate collection") + self.assertEqual(info["name"], "Intermediate collection for step one") self.assertEqual(info["trash_at"], datetime.datetime(2018, 1, 1, 0, 2, 0, 0)) - self.assertEqual(info["properties"], {"type" : "intermediate", "container" : "zzzzz-8i9sb-zzzzzzzzzzzzzzz"}) + self.assertEqual(info["properties"], {"type" : "intermediate", "container_uuid" : "zzzzz-8i9sb-zzzzzzzzzzzzzzz"}) def test_get_current_container_success(self): api = mock.MagicMock() @@ -38,7 +42,31 @@ class TestUtil(unittest.TestCase): def test_get_current_container_error(self): api = mock.MagicMock() - api.containers().current().execute.side_effect = ApiError(httplib2.Response({"status": 300}), "") + api.containers().current().execute.side_effect = ApiError(httplib2.Response({"status": 300}), bytes(b"")) logger = mock.MagicMock() - self.assertRaises(ApiError, get_current_container(api, num_retries=0, logger=logger)) + with self.assertRaises(ApiError): + get_current_container(api, num_retries=0, logger=logger) + + def test_get_current_container_404_error(self): + api = mock.MagicMock() + api.containers().current().execute.side_effect = ApiError(httplib2.Response({"status": 404}), bytes(b"")) + logger = mock.MagicMock() + + current_container = get_current_container(api, num_retries=0, logger=logger) + self.assertEqual(current_container, None) + + def test_common_prefix(self): + self.assertEqual(common_prefix("file:///foo/bar", ["file:///foo/bar/baz"]), "file:///foo/") + self.assertEqual(common_prefix("file:///foo", ["file:///foo", "file:///foo/bar", "file:///foo/bar/"]), "file:///") + self.assertEqual(common_prefix("file:///foo/", ["file:///foo/", "file:///foo/bar", "file:///foo/bar/"]), "file:///foo/") + self.assertEqual(common_prefix("file:///foo/bar", ["file:///foo/bar", "file:///foo/baz", "file:///foo/quux/q2"]), "file:///foo/") + self.assertEqual(common_prefix("file:///foo/bar/", ["file:///foo/bar/", "file:///foo/baz", "file:///foo/quux/q2"]), "file:///foo/") + self.assertEqual(common_prefix("file:///foo/bar/splat", ["file:///foo/bar/splat", "file:///foo/baz", "file:///foo/quux/q2"]), "file:///foo/") + self.assertEqual(common_prefix("file:///foo/bar/splat", ["file:///foo/bar/splat", "file:///nope", "file:///foo/quux/q2"]), "file:///") + self.assertEqual(common_prefix("file:///blub/foo", ["file:///blub/foo", "file:///blub/foo/bar", "file:///blub/foo/bar/"]), "file:///blub/") + + # sanity check, the subsequent code strips off the prefix so + # just confirm the logic doesn't have a fencepost error + prefix = "file:///" + self.assertEqual("file:///foo/bar"[len(prefix):], "foo/bar")