@@ -60,3 +60,25 @@ def test_pack_missing_cwlVersion(self):
6060 packed = json .loads (print_pack (document_loader , processobj , uri , metadata ))
6161
6262 self .assertEqual ('v1.0' , packed ["cwlVersion" ])
63+
64+ def test_pack_idempotence_tool (self ):
65+ """Test to ensure that pack produces exactly the same document for
66+ an already packed document"""
67+
68+ # Testing single tool
69+ self ._pack_idempotently ("tests/wf/null-expression1-tool.cwl" )
70+
71+ def _pack_idempotently (self , document ):
72+ self .maxDiff = None
73+ document_loader , workflowobj , uri = fetch_document (
74+ get_data (document ))
75+ document_loader , avsc_names , processobj , metadata , uri = validate_document (
76+ document_loader , workflowobj , uri )
77+ # generate pack output dict
78+ packed = json .loads (print_pack (document_loader , processobj , uri , metadata ))
79+
80+ document_loader , workflowobj , uri2 = fetch_document (packed )
81+ document_loader , avsc_names , processobj , metadata , uri2 = validate_document (
82+ document_loader , workflowobj , uri )
83+ double_packed = json .loads (print_pack (document_loader , processobj , uri , metadata ))
84+ self .assertEqual (packed , double_packed )
0 commit comments