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))