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)
--- /dev/null
+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)