diff planemo/lib/python3.7/site-packages/cwltool/tests/test_validate_js.py @ 0:d30785e31577 draft

"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author guerler
date Fri, 31 Jul 2020 00:18:57 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/planemo/lib/python3.7/site-packages/cwltool/tests/test_validate_js.py	Fri Jul 31 00:18:57 2020 -0400
@@ -0,0 +1,61 @@
+from ruamel import yaml
+
+from cwltool import process
+from cwltool.sandboxjs import code_fragment_to_js
+from cwltool import validate_js
+
+TEST_CWL = """
+cwlVersion: v1.0
+class: CommandLineTool
+baseCommand: echo
+
+requirements:
+  - class: InlineJavascriptRequirement
+inputs:
+  - id: parameter
+    inputBinding:
+      valueFrom: string before $(kjdbfkjd) string after
+    type: string?
+
+outputs: []
+"""
+
+def test_get_expressions():
+    test_cwl_yaml = yaml.round_trip_load(TEST_CWL)
+    schema = process.get_schema("v1.0")[1].names["CommandLineTool"]
+
+    exprs = validate_js.get_expressions(test_cwl_yaml, schema)
+
+    assert len(exprs) == 1
+
+
+def test_validate_js_expressions(mocker):
+    test_cwl_yaml = yaml.round_trip_load(TEST_CWL)
+    schema = process.get_schema("v1.0")[1].names["CommandLineTool"]
+
+    mocker.patch("cwltool.validate_js.print_js_hint_messages")
+    validate_js.validate_js_expressions(test_cwl_yaml, schema)
+
+    assert validate_js.print_js_hint_messages.call_args is not None
+    assert len(validate_js.print_js_hint_messages.call_args[0]) > 0
+
+def test_js_hint_basic():
+    result = validate_js.jshint_js("""
+    function funcName(){
+    }
+    """, [])
+
+    assert result.errors == []
+    assert result.globals == ["funcName"]
+
+def test_js_hint_reports_invalid_js():
+    assert len(validate_js.jshint_js("<INVALID JS>").errors) > 1
+
+def test_js_hint_warn_on_es6():
+    assert len(validate_js.jshint_js(code_fragment_to_js("((() => 4)())"), []).errors) == 1
+
+def test_js_hint_error_on_undefined_name():
+    assert len(validate_js.jshint_js(code_fragment_to_js("undefined_name()")).errors) == 1
+
+def test_js_hint_set_defined_name():
+    assert len(validate_js.jshint_js(code_fragment_to_js("defined_name()"), ["defined_name"]).errors) == 0