| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/usr/bin/env python3
- #
- # Copyright (c) 2022 Project CHIP Authors
- #
- # Licensed 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.
- #
- """Check that our test PICS include values for every PICS if we know about.
- Takes two filenames as arguments: the CI PICS values file and the PICS
- definition YAML file.
- """
- import re
- import sys
- import yaml
- value_regexp = re.compile("=.*")
- def main():
- if len(sys.argv) != 3:
- print('Expecting two arguments: the CI PICS values file and the YAML file defining all PICS values. Got: %r' %
- sys.argv[1:])
- return 1
- value_defs = sys.argv[1]
- pics_yaml = sys.argv[2]
- with open(value_defs, "r") as stream:
- defined_values = set(map(lambda item: re.sub(
- value_regexp, "", item.rstrip()), stream.readlines()))
- # Remove Comments w/ # and empty lines
- for elem in list(defined_values):
- if elem.startswith('#') or (elem == ""):
- defined_values.discard(elem)
- with open(pics_yaml, "r") as stream:
- try:
- yaml_data = yaml.safe_load(stream)
- except yaml.YAMLError as e:
- print(e)
- return 1
- possible_values = set(map(lambda item: item["id"], yaml_data["PICS"]))
- if defined_values != possible_values:
- for value in sorted(possible_values - defined_values):
- print('"%s" does not have a value defined in %s' %
- (value, value_defs))
- for value in sorted(defined_values - possible_values):
- print('"%s" is not a known PICS item in %s' % (value, pics_yaml))
- return 1
- return 0
- if __name__ == '__main__':
- sys.exit(main())
|