10165: Add test for make_output_collection
authorPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 3 Oct 2016 18:48:36 +0000 (14:48 -0400)
committerPeter Amstutz <peter.amstutz@curoverse.com>
Mon, 3 Oct 2016 18:48:36 +0000 (14:48 -0400)
sdk/cwl/arvados_cwl/__init__.py
sdk/cwl/tests/test_make_output.py [new file with mode: 0644]

index 24f5a0d639595da2bf0faef3eee0935838b349aa..7d5590b952339359d8d6ab540f2fb3fa1eaa9e1a 100644 (file)
@@ -213,7 +213,7 @@ class ArvCwlRunner(object):
         adjustFileObjs(outputObj, rewrite)
 
         with final.open("cwl.output.json", "w") as f:
-            json.dump(outputObj, f, sort_keys=True, indent=4)
+            json.dump(outputObj, f, sort_keys=True, indent=4, separators=(',',': '))
 
         final.save_new(name=name, owner_uuid=self.project_uuid, ensure_unique_name=True)
 
diff --git a/sdk/cwl/tests/test_make_output.py b/sdk/cwl/tests/test_make_output.py
new file mode 100644 (file)
index 0000000..2671297
--- /dev/null
@@ -0,0 +1,58 @@
+import logging
+import mock
+import unittest
+import os
+import functools
+import json
+import StringIO
+
+import arvados_cwl
+
+class TestMakeOutput(unittest.TestCase):
+    @mock.patch("arvados.collection.Collection")
+    @mock.patch("arvados.collection.CollectionReader")
+    def test_make_output_collection(self, reader, col):
+        api = mock.MagicMock()
+        keep_client = mock.MagicMock()
+        runner = arvados_cwl.ArvCwlRunner(api, keep_client=keep_client)
+        runner.project_uuid = 'zzzzz-j7d0g-zzzzzzzzzzzzzzz'
+
+        final = mock.MagicMock()
+        col.return_value = final
+        readermock = mock.MagicMock()
+        reader.return_value = readermock
+
+        cwlout = StringIO.StringIO()
+        openmock = mock.MagicMock()
+        final.open.return_value = openmock
+        openmock.__enter__.return_value = cwlout
+
+        runner.make_output_collection("Test output", {
+            "foo": {
+                "class": "File",
+                "location": "keep:99999999999999999999999999999991+99/foo.txt",
+                "size": 3,
+                "basename": "foo.txt"
+            },
+            "bar": {
+                "class": "File",
+                "location": "keep:99999999999999999999999999999992+99/bar.txt",
+                "basename": "baz.txt"
+            }
+        })
+
+        final.copy.assert_has_calls([mock.call('bar.txt', 'baz.txt', overwrite=False, source_collection=readermock)])
+        final.copy.assert_has_calls([mock.call('foo.txt', 'foo.txt', overwrite=False, source_collection=readermock)])
+        final.save_new.assert_has_calls([mock.call(ensure_unique_name=True, name='Test output', owner_uuid='zzzzz-j7d0g-zzzzzzzzzzzzzzz')])
+        self.assertEqual("""{
+    "bar": {
+        "class": "File",
+        "location": "baz.txt"
+    },
+    "foo": {
+        "class": "File",
+        "location": "foo.txt"
+    }
+}""", cwlout.getvalue())
+
+        self.assertIs(final, runner.final_output_collection)