X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ice_validator%2Ftests%2Ftest_unique_resources_across_all_templates.py;h=63ff618d3c575728415e2e8c975e31a9604ab2d8;hb=00c64458942602efe5a3b712540b98ac94fb60f4;hp=7682782652c96f15bee9c9043e802c29fa651303;hpb=655f39713cca2595a812ccd60cc738301aef8b2f;p=vvp%2Fvalidation-scripts.git diff --git a/ice_validator/tests/test_unique_resources_across_all_templates.py b/ice_validator/tests/test_unique_resources_across_all_templates.py index 7682782..63ff618 100644 --- a/ice_validator/tests/test_unique_resources_across_all_templates.py +++ b/ice_validator/tests/test_unique_resources_across_all_templates.py @@ -6,7 +6,7 @@ # =================================================================== # # Unless otherwise specified, all software contained herein is licensed -# under the Apache License, Version 2.0 (the “License”); +# 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 # @@ -21,7 +21,7 @@ # # # Unless otherwise specified, all documentation contained herein is licensed -# under the Creative Commons License, Attribution 4.0 Intl. (the “License”); +# 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 # @@ -35,28 +35,37 @@ # # ============LICENSE_END============================================ # -# ECOMP is a trademark and service mark of AT&T Intellectual Property. # -import yaml import collections +import os +from tests import cached_yaml as yaml +from .helpers import validates + + +@validates("R-16447") def test_unique_resources_across_all_yaml_files(yaml_files): - ''' + """ Check that all instance names are unique across all yaml files. - ''' - resources_ids = [] + """ + resources_ids = collections.defaultdict(set) for yaml_file in yaml_files: with open(yaml_file) as fh: yml = yaml.load(fh) - if 'resources' not in yml: + if "resources" not in yml: continue - resources_ids.extend(yml['resources'].keys()) + for resource_id in yml["resources"]: + resources_ids[resource_id].add(os.path.split(yaml_file)[1]) - dup_ids = [item - for item, count in collections.Counter(resources_ids).items() - if count > 1] + dup_ids = {r_id: files for r_id, files in resources_ids.items() if len(files) > 1} - assert not dup_ids + msg = "The following resource IDs are duplicated in one or more files: " + errors = [ + "ID ({}) appears in {}.".format(r_id, ", ".join(files)) + for r_id, files in dup_ids.items() + ] + msg += ", ".join(errors) + assert not dup_ids, msg