diff options
Diffstat (limited to 'ice_validator/tests/utils')
-rw-r--r-- | ice_validator/tests/utils/incrementals.py | 63 | ||||
-rw-r--r-- | ice_validator/tests/utils/nested_files.py | 33 |
2 files changed, 95 insertions, 1 deletions
diff --git a/ice_validator/tests/utils/incrementals.py b/ice_validator/tests/utils/incrementals.py new file mode 100644 index 0000000..2728d3b --- /dev/null +++ b/ice_validator/tests/utils/incrementals.py @@ -0,0 +1,63 @@ +# -*- coding: utf8 -*- +# ============LICENSE_START==================================================== +# org.onap.vvp/validation-scripts +# =================================================================== +# Copyright © 2019 AT&T Intellectual Property. All rights reserved. +# =================================================================== +# +# Unless otherwise specified, all software contained herein is licensed +# under the Apache License, Version 2.0 (the "License"); +# you may not use this software 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. +# +# +# +# Unless otherwise specified, all documentation contained herein is licensed +# under the Creative Commons License, Attribution 4.0 Intl. (the "License"); +# you may not use this documentation except in compliance with the License. +# You may obtain a copy of the License at +# +# https://creativecommons.org/licenses/by/4.0/ +# +# Unless required by applicable law or agreed to in writing, documentation +# 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. +# +# ============LICENSE_END============================================ +# +# +import os + +from tests.helpers import get_base_template_from_yaml_files +from tests.utils.nested_files import get_nested_files + + +def is_incremental_module(yaml_file, yaml_files): + """ + Returns true if the file is not a base module, volume module, or nested module. + """ + base_template = get_base_template_from_yaml_files(yaml_files) + nested_templates = get_nested_files(yaml_files) + is_volume_module = os.path.splitext(yaml_file)[0].endswith("_volume") + return ( + yaml_file != base_template + and yaml_file not in nested_templates + and not is_volume_module + ) + + +def get_incremental_modules(yaml_files): + """ + Returns the a list of file paths for the incremental modules in yaml_files + """ + return [f for f in yaml_files if is_incremental_module(f, yaml_files)] diff --git a/ice_validator/tests/utils/nested_files.py b/ice_validator/tests/utils/nested_files.py index 5f1f174..c7a5601 100644 --- a/ice_validator/tests/utils/nested_files.py +++ b/ice_validator/tests/utils/nested_files.py @@ -40,7 +40,7 @@ """nested files """ -from os import path +from os import path, listdir import re from tests import cached_yaml as yaml from tests.structures import Heat @@ -258,3 +258,34 @@ def get_type_nested_files(yml, dirpath): if path.exists(filepath): nested_files[rid] = nested_file return nested_files + + +def get_nested_files(filenames): + """ + returns all the nested files for a set of filenames + """ + nested_files = [] + for filename in filenames: + if file_is_a_nested_template(filename): + nested_files.append(filename) + return nested_files + + +def file_is_a_nested_template(file): + directory = path.dirname(file) + nested_files = [] + for filename in listdir(directory): + if filename.endswith(".yaml") or filename.endswith(".yml"): + filename = "{}/{}".format(directory, filename) + try: + with open(filename) as fh: + yml = yaml.load(fh) + if "resources" not in yml: + continue + nested_files.extend( + get_list_of_nested_files(yml["resources"], path.dirname(filename)) + ) + except yaml.YAMLError as e: + print(e) # pylint: disable=superfluous-parens + continue + return file in nested_files |