ARIA-312 Validation of workflow and operation kwargs raise False alarms

Workflow and Operation function kwargs validation failed in some scenarios.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/6c2f35ec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/6c2f35ec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/6c2f35ec

Branch: refs/heads/ARIA-237-Support-for-resuming-failed-workflow-executions
Commit: 6c2f35ecd4898ac605787f729aff48fa8dd46097
Parents: f903006
Author: max-orlov <ma...@gigaspaces.com>
Authored: Mon Jul 10 17:12:00 2017 +0300
Committer: max-orlov <ma...@gigaspaces.com>
Committed: Mon Jul 10 17:22:29 2017 +0300

----------------------------------------------------------------------
 aria/utils/validation.py       |  2 +-
 tests/utils/test_validation.py | 35 +++++++++++++++++++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/6c2f35ec/aria/utils/validation.py
----------------------------------------------------------------------
diff --git a/aria/utils/validation.py b/aria/utils/validation.py
index 3452dcc..06989a7 100644
--- a/aria/utils/validation.py
+++ b/aria/utils/validation.py
@@ -78,7 +78,7 @@ def validate_function_arguments(func, func_kwargs):
 
     # all args without the ones with default values
     args = func.func_code.co_varnames[:args_count]
-    non_default_args = args[:len(func.func_defaults)] if func.func_defaults 
else args
+    non_default_args = args[:len(args) - len(func.func_defaults)] if 
func.func_defaults else args
 
     # Check if any args without default values is missing in the func_kwargs
     for arg in non_default_args:

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/6c2f35ec/tests/utils/test_validation.py
----------------------------------------------------------------------
diff --git a/tests/utils/test_validation.py b/tests/utils/test_validation.py
new file mode 100644
index 0000000..8e35f22
--- /dev/null
+++ b/tests/utils/test_validation.py
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import pytest
+
+from aria.utils import validation
+
+
+def test_function_kwargs_validation():
+
+    def mock_function(arg1, arg2=1, arg3=1):
+        pass
+
+    with pytest.raises(ValueError):
+        validation.validate_function_arguments(mock_function, dict(arg2=1))
+    with pytest.raises(ValueError):
+        validation.validate_function_arguments(mock_function, dict(arg3=3))
+    with pytest.raises(ValueError):
+        validation.validate_function_arguments(mock_function, dict(arg2=2, 
arg3=3))
+
+    validation.validate_function_arguments(mock_function, dict(arg1=1, arg3=3))
+    validation.validate_function_arguments(mock_function, dict(arg1=1, arg2=2))
+    validation.validate_function_arguments(mock_function, dict(arg1=1, arg2=2, 
arg3=3))

Reply via email to