11from __future__ import absolute_import
2+
23import json
3- import os
44import unittest
5+
6+ import os
57from functools import partial
68
9+ import pytest
10+ from six import StringIO
11+
712import cwltool .pack
8- from cwltool .main import print_pack as print_pack
913import cwltool .workflow
1014from cwltool .load_tool import fetch_document , validate_document
11- from cwltool .main import makeRelative
15+ from cwltool .main import makeRelative , main , print_pack
1216from cwltool .pathmapper import adjustDirObjs , adjustFileObjs
13-
17+ from cwltool . utils import onWindows
1418from .util import get_data
1519
1620
1721class TestPack (unittest .TestCase ):
22+ maxDiff = None
23+
1824 def test_pack (self ):
19- self .maxDiff = None
2025
2126 document_loader , workflowobj , uri = fetch_document (
2227 get_data ("tests/wf/revsort.cwl" ))
@@ -38,8 +43,6 @@ def test_pack(self):
3843 def test_pack_missing_cwlVersion (self ):
3944 """Test to ensure the generated pack output is not missing
4045 the `cwlVersion` in case of single tool workflow and single step workflow"""
41- # Since diff is longer than 3174 characters
42- self .maxDiff = None
4346
4447 # Testing single tool workflow
4548 document_loader , workflowobj , uri = fetch_document (
@@ -76,7 +79,6 @@ def test_pack_idempotence_workflow(self):
7679 self ._pack_idempotently ("tests/wf/count-lines1-wf.cwl" )
7780
7881 def _pack_idempotently (self , document ):
79- self .maxDiff = None
8082 document_loader , workflowobj , uri = fetch_document (
8183 get_data (document ))
8284 document_loader , avsc_names , processobj , metadata , uri = validate_document (
@@ -89,3 +91,28 @@ def _pack_idempotently(self, document):
8991 document_loader , workflowobj , uri )
9092 double_packed = json .loads (print_pack (document_loader , processobj , uri2 , metadata ))
9193 self .assertEqual (packed , double_packed )
94+
95+ @pytest .mark .skipif (onWindows (),
96+ reason = "Instance of cwltool is used, on Windows it invokes a default docker container"
97+ "which is not supported on AppVeyor" )
98+ def test_packed_workflow_execution (self ):
99+ test_wf = "tests/wf/count-lines1-wf.cwl"
100+ test_wf_job = "tests/wf/wc-job.json"
101+ document_loader , workflowobj , uri = fetch_document (
102+ get_data (test_wf ))
103+ document_loader , avsc_names , processobj , metadata , uri = validate_document (
104+ document_loader , workflowobj , uri )
105+ packed = json .loads (print_pack (document_loader , processobj , uri , metadata ))
106+ temp_packed_path = "/tmp/packedwf"
107+ with open (temp_packed_path , 'w' ) as f :
108+ json .dump (packed , f )
109+ normal_output = StringIO ()
110+ packed_output = StringIO ()
111+ self .assertEquals (main (['--debug' , get_data (temp_packed_path ),
112+ get_data (test_wf_job )],
113+ stdout = packed_output ), 0 )
114+ self .assertEquals (main ([get_data (test_wf ),
115+ get_data (test_wf_job )],
116+ stdout = normal_output ), 0 )
117+ self .assertEquals (json .loads (packed_output .getvalue ()), json .loads (normal_output .getvalue ()))
118+
0 commit comments