Skip to content

Commit 6f4cd94

Browse files
committed
maintenance: remove unittest from test_pack
1 parent 3c3346a commit 6f4cd94

File tree

1 file changed

+125
-139
lines changed

1 file changed

+125
-139
lines changed

tests/test_pack.py

Lines changed: 125 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
from __future__ import absolute_import
2-
31
import json
42
import os
53
import tempfile
6-
import unittest
74
from functools import partial
85

9-
import pytest
106
from six import StringIO
7+
import pytest
118

129
import cwltool.pack
1310
import cwltool.workflow
@@ -20,138 +17,127 @@
2017
from .util import get_data, needs_docker
2118

2219

23-
class TestPack(unittest.TestCase):
24-
maxDiff = None
25-
26-
def test_pack(self):
27-
load_tool.loaders = {}
28-
29-
document_loader, workflowobj, uri = fetch_document(
30-
get_data("tests/wf/revsort.cwl"))
31-
document_loader, avsc_names, processobj, metadata, uri = validate_document(
32-
document_loader, workflowobj, uri)
33-
packed = cwltool.pack.pack(document_loader, processobj, uri, metadata)
34-
with open(get_data("tests/wf/expect_packed.cwl")) as f:
35-
expect_packed = json.load(f)
36-
adjustFileObjs(packed, partial(make_relative,
37-
os.path.abspath(get_data("tests/wf"))))
38-
adjustDirObjs(packed, partial(make_relative,
39-
os.path.abspath(get_data("tests/wf"))))
40-
self.assertIn("$schemas", packed)
41-
del packed["$schemas"]
42-
del expect_packed["$schemas"]
43-
44-
self.assertEqual(expect_packed, packed)
45-
46-
47-
def test_pack_rewrites(self):
48-
load_tool.loaders = {}
49-
50-
document_loader, workflowobj, uri = fetch_document(get_data("tests/wf/default-wf5.cwl"))
51-
document_loader, avsc_names, processobj, metadata, uri = validate_document(
52-
document_loader, workflowobj, uri)
53-
rewrites = {}
54-
packed = cwltool.pack.pack(document_loader, processobj, uri, metadata, rewrite_out=rewrites)
55-
self.assertEqual(6, len(rewrites))
56-
57-
def test_pack_missing_cwlVersion(self):
58-
"""Test to ensure the generated pack output is not missing
59-
the `cwlVersion` in case of single tool workflow and single step workflow"""
60-
61-
# Testing single tool workflow
62-
document_loader, workflowobj, uri = fetch_document(
63-
get_data("tests/wf/hello_single_tool.cwl"))
64-
document_loader, _, processobj, metadata, uri = validate_document(
65-
document_loader, workflowobj, uri)
66-
# generate pack output dict
67-
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
68-
69-
self.assertEqual('v1.0', packed["cwlVersion"])
70-
71-
# Testing single step workflow
72-
document_loader, workflowobj, uri = fetch_document(
73-
get_data("tests/wf/hello-workflow.cwl"))
74-
document_loader, _, processobj, metadata, uri = validate_document(
75-
document_loader, workflowobj, uri)
76-
# generate pack output dict
77-
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
78-
79-
self.assertEqual('v1.0', packed["cwlVersion"])
80-
81-
def test_pack_idempotence_tool(self):
82-
"""Test to ensure that pack produces exactly the same document for
83-
an already packed document"""
84-
85-
# Testing single tool
86-
self._pack_idempotently("tests/wf/hello_single_tool.cwl")
87-
88-
def test_pack_idempotence_workflow(self):
89-
"""Test to ensure that pack produces exactly the same document for
90-
an already packed document"""
91-
92-
# Testing workflow
93-
self._pack_idempotently("tests/wf/count-lines1-wf.cwl")
94-
95-
def _pack_idempotently(self, document):
96-
document_loader, workflowobj, uri = fetch_document(
97-
get_data(document))
98-
document_loader, avsc_names, processobj, metadata, uri = validate_document(
99-
document_loader, workflowobj, uri)
100-
# generate pack output dict
101-
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
102-
103-
document_loader, workflowobj, uri2 = fetch_document(packed)
104-
document_loader, avsc_names, processobj, metadata, uri2 = validate_document(
105-
document_loader, workflowobj, uri)
106-
double_packed = json.loads(print_pack(document_loader, processobj, uri2, metadata))
107-
self.assertEqual(packed, double_packed)
108-
109-
@needs_docker
110-
def test_packed_workflow_execution(self):
111-
load_tool.loaders = {}
112-
test_wf = "tests/wf/count-lines1-wf.cwl"
113-
test_wf_job = "tests/wf/wc-job.json"
114-
document_loader, workflowobj, uri = fetch_document(
115-
get_data(test_wf), resolver=tool_resolver)
116-
document_loader, avsc_names, processobj, metadata, uri = validate_document(
117-
document_loader, workflowobj, uri)
118-
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
119-
temp_packed_handle, temp_packed_path = tempfile.mkstemp()
120-
with open(temp_packed_path, 'w') as f:
121-
json.dump(packed, f)
122-
normal_output = StringIO()
123-
packed_output = StringIO()
124-
self.assertEquals(main(['--debug', get_data(temp_packed_path),
125-
get_data(test_wf_job)],
126-
stdout=packed_output), 0)
127-
self.assertEquals(main([get_data(test_wf),
128-
get_data(test_wf_job)],
129-
stdout=normal_output), 0)
130-
self.assertEquals(json.loads(packed_output.getvalue()), json.loads(normal_output.getvalue()))
131-
os.close(temp_packed_handle)
132-
os.remove(temp_packed_path)
133-
134-
@needs_docker
135-
def test_preserving_namespaces(self):
136-
test_wf = "tests/wf/formattest.cwl"
137-
test_wf_job = "tests/wf/formattest-job.json"
138-
document_loader, workflowobj, uri = fetch_document(
139-
get_data(test_wf))
140-
document_loader, avsc_names, processobj, metadata, uri = validate_document(
141-
document_loader, workflowobj, uri)
142-
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
143-
assert "$namespaces" in packed
144-
temp_packed_handle, temp_packed_path = tempfile.mkstemp()
145-
with open(temp_packed_path, 'w') as f:
146-
json.dump(packed, f)
147-
normal_output = StringIO()
148-
packed_output = StringIO()
149-
self.assertEquals(main(['--debug', get_data(temp_packed_path),
150-
get_data(test_wf_job)],
151-
stdout=packed_output), 0)
152-
self.assertEquals(main([get_data(test_wf),
153-
get_data(test_wf_job)],
154-
stdout=normal_output), 0)
155-
self.assertEquals(json.loads(packed_output.getvalue()), json.loads(normal_output.getvalue()))
156-
os.close(temp_packed_handle)
157-
os.remove(temp_packed_path)
20+
def test_pack():
21+
load_tool.loaders = {}
22+
23+
document_loader, workflowobj, uri = fetch_document(get_data("tests/wf/revsort.cwl"))
24+
document_loader, _, processobj, metadata, uri = validate_document(
25+
document_loader, workflowobj, uri)
26+
27+
with open(get_data("tests/wf/expect_packed.cwl")) as packed_file:
28+
expect_packed = json.load(packed_file)
29+
30+
packed = cwltool.pack.pack(document_loader, processobj, uri, metadata)
31+
adjustFileObjs(packed, partial(make_relative, os.path.abspath(get_data("tests/wf"))))
32+
adjustDirObjs(packed, partial(make_relative, os.path.abspath(get_data("tests/wf"))))
33+
34+
assert "$schemas" in packed
35+
36+
del packed["$schemas"]
37+
del expect_packed["$schemas"]
38+
39+
assert packed == expect_packed
40+
41+
42+
def test_pack_rewrites():
43+
load_tool.loaders = {}
44+
rewrites = {}
45+
46+
document_loader, workflowobj, uri = fetch_document(get_data("tests/wf/default-wf5.cwl"))
47+
document_loader, _, processobj, metadata, uri = validate_document(
48+
document_loader, workflowobj, uri)
49+
50+
cwltool.pack.pack(document_loader, processobj, uri, metadata, rewrite_out=rewrites)
51+
52+
assert len(rewrites) == 6
53+
54+
cwl_missing_version_paths = [
55+
"tests/wf/hello_single_tool.cwl",
56+
"tests/wf/hello-workflow.cwl"
57+
]
58+
59+
@pytest.mark.parametrize('cwl_path', cwl_missing_version_paths)
60+
def test_pack_missing_cwlVersion(cwl_path):
61+
"""Test to ensure the generated pack output is not missing
62+
the `cwlVersion` in case of single tool workflow and single step workflow"""
63+
64+
# Testing single tool workflow
65+
document_loader, workflowobj, uri = fetch_document(get_data(cwl_path))
66+
document_loader, _, processobj, metadata, uri = validate_document(
67+
document_loader, workflowobj, uri)
68+
# generate pack output dict
69+
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
70+
71+
assert packed["cwlVersion"] == 'v1.0'
72+
73+
def test_pack_idempotence_tool():
74+
"""Test to ensure that pack produces exactly the same document for
75+
an already packed document"""
76+
77+
# Testing single tool
78+
_pack_idempotently("tests/wf/hello_single_tool.cwl")
79+
80+
def test_pack_idempotence_workflow():
81+
"""Test to ensure that pack produces exactly the same document for
82+
an already packed document"""
83+
84+
# Testing workflow
85+
_pack_idempotently("tests/wf/count-lines1-wf.cwl")
86+
87+
def _pack_idempotently(document):
88+
document_loader, workflowobj, uri = fetch_document(
89+
get_data(document))
90+
document_loader, _, processobj, metadata, uri = validate_document(
91+
document_loader, workflowobj, uri)
92+
# generate pack output dict
93+
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
94+
95+
document_loader, workflowobj, uri2 = fetch_document(packed)
96+
document_loader, _, processobj, metadata, uri2 = validate_document(
97+
document_loader, workflowobj, uri)
98+
double_packed = json.loads(print_pack(document_loader, processobj, uri2, metadata))
99+
assert packed == double_packed
100+
101+
cwl_to_run = [
102+
("tests/wf/count-lines1-wf.cwl",
103+
"tests/wf/wc-job.json",
104+
False
105+
),
106+
("tests/wf/formattest.cwl",
107+
"tests/wf/formattest-job.json",
108+
True
109+
),
110+
]
111+
112+
@needs_docker
113+
@pytest.mark.parametrize('wf_path,job_path,namespaced', cwl_to_run)
114+
def test_packed_workflow_execution(wf_path, job_path, namespaced):
115+
load_tool.loaders = {}
116+
117+
document_loader, workflowobj, uri = fetch_document(
118+
get_data(wf_path), resolver=tool_resolver)
119+
120+
document_loader, _, processobj, metadata, uri = validate_document(
121+
document_loader, workflowobj, uri)
122+
123+
packed = json.loads(print_pack(document_loader, processobj, uri, metadata))
124+
125+
assert not namespaced or "$namespaces" in packed
126+
127+
wf_packed_handle, wf_packed_path = tempfile.mkstemp()
128+
with open(wf_packed_path, 'w') as temp_file:
129+
json.dump(packed, temp_file)
130+
131+
normal_output = StringIO()
132+
packed_output = StringIO()
133+
134+
normal_params = [get_data(wf_path), get_data(job_path)]
135+
packed_params = ['--debug', get_data(wf_packed_path), get_data(job_path)]
136+
137+
assert main(normal_params, stdout=normal_output) == 0
138+
assert main(packed_params, stdout=packed_output) == 0
139+
140+
assert json.loads(packed_output.getvalue()) == json.loads(normal_output.getvalue())
141+
142+
os.close(wf_packed_handle)
143+
os.remove(wf_packed_path)

0 commit comments

Comments
 (0)