diff env/lib/python3.9/site-packages/cwltool/tests/test_validate_js.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/cwltool/tests/test_validate_js.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,87 @@
+from typing import Any
+
+from ruamel import yaml
+from schema_salad.avro.schema import Names
+
+from cwltool import process, validate_js
+from cwltool.sandboxjs import code_fragment_to_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() -> None:
+    test_cwl_yaml = yaml.main.round_trip_load(TEST_CWL)
+    schema = process.get_schema("v1.0")[1]
+    assert isinstance(schema, Names)
+    clt_schema = schema.names["CommandLineTool"]
+
+    exprs = validate_js.get_expressions(test_cwl_yaml, clt_schema)
+
+    assert len(exprs) == 1
+
+
+def test_validate_js_expressions(mocker: Any) -> None:
+    test_cwl_yaml = yaml.main.round_trip_load(TEST_CWL)
+    schema = process.get_schema("v1.0")[1]
+    assert isinstance(schema, Names)
+    clt_schema = schema.names["CommandLineTool"]
+
+    mocker.patch("cwltool.validate_js._logger")
+    # mocker.patch("cwltool.validate_js.print_js_hint_messages")
+    validate_js.validate_js_expressions(test_cwl_yaml, clt_schema)
+
+    validate_js._logger.warning.assert_called_with(" JSHINT: (function(){return ((kjdbfkjd));})()\n JSHINT:                      ^\n JSHINT: W117: 'kjdbfkjd' is not defined.")  # type: ignore
+
+
+def test_js_hint_basic() -> None:
+    result = validate_js.jshint_js(
+        """
+    function funcName(){
+    }
+    """,
+        [],
+    )
+
+    assert result.errors == []
+    assert result.globals == ["funcName"]
+
+
+def test_js_hint_reports_invalid_js() -> None:
+    assert len(validate_js.jshint_js("<INVALID JS>").errors) > 1
+
+
+def test_js_hint_warn_on_es6() -> None:
+    assert (
+        len(validate_js.jshint_js(code_fragment_to_js("((() => 4)())"), []).errors) == 1
+    )
+
+
+def test_js_hint_error_on_undefined_name() -> None:
+    assert (
+        len(validate_js.jshint_js(code_fragment_to_js("undefined_name()")).errors) == 1
+    )
+
+
+def test_js_hint_set_defined_name() -> None:
+    assert (
+        len(
+            validate_js.jshint_js(
+                code_fragment_to_js("defined_name()"), ["defined_name"]
+            ).errors
+        )
+        == 0
+    )