Clone of official tools
Diff: test/config_test/config_test.py
- Revision:
- 36:96847d42f010
- Parent:
- 35:da9c89f8be7d
- Child:
- 37:f8cfeb185c30
--- a/test/config_test/config_test.py Wed Feb 15 13:53:18 2017 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -""" -mbed SDK -Copyright (c) 2011-2016 ARM Limited - -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. -""" - -from tools.build_api import get_config -from tools.targets import set_targets_json_location, Target -from tools.config import ConfigException, Config -import os, sys - -# Compare the output of config against a dictionary of known good results -def compare_config(cfg, expected): - try: - for k in cfg: - if cfg[k].value != expected[k]: - return "'%s': expected '%s', got '%s'" % (k, expected[k], cfg[k].value) - except KeyError: - raise - return "Unexpected key '%s' in configuration data" % k - for k in expected: - if k not in ["desc", "expected_macros", "expected_features"] + cfg.keys(): - return "Expected key '%s' was not found in configuration data" % k - return "" - -def test_tree(full_name, name): - failed = 0 - sys.path.append(full_name) - if "test_data" in sys.modules: - del sys.modules["test_data"] - import test_data - # If the test defines custom targets, they must exist in a file called - # "targets.json" in the test's directory. - if os.path.isfile(os.path.join(full_name, "targets.json")): - set_targets_json_location(os.path.join(full_name, "targets.json")) - else: # uset the regular set of targets - set_targets_json_location() - for target, expected in test_data.expected_results.items(): - sys.stdout.write("%s:'%s'(%s) " % (name, expected["desc"], target)) - sys.stdout.flush() - err_msg = None - try: - cfg, macros, features = get_config(full_name, target, "GCC_ARM") - macros = Config.config_macros_to_macros(macros) - except ConfigException as e: - err_msg = e.message - if err_msg: - if expected.has_key("exception_msg"): - if err_msg.find(expected["exception_msg"]) == -1: - print "FAILED!" - sys.stderr.write(" Unexpected error message!\n") - sys.stderr.write(" Expected: '%s'\n" % expected["exception_msg"]) - sys.stderr.write(" Got: '%s'\n" % err_msg) - failed += 1 - else: - print "OK" - else: - print "FAILED!" - sys.stderr.write(" Error while getting configuration!\n") - sys.stderr.write(" " + err_msg + "\n") - failed += 1 - else: - res = compare_config(cfg, expected) - expected_macros = expected.get("expected_macros", None) - expected_features = expected.get("expected_features", None) - - if res: - print "FAILED!" - sys.stdout.write(" " + res + "\n") - failed += 1 - elif expected_macros is not None: - if sorted(expected_macros) != sorted(macros): - print "FAILED!" - sys.stderr.write(" List of macros doesn't match\n") - sys.stderr.write(" Expected: '%s'\n" % ",".join(sorted(expected_macros))) - sys.stderr.write(" Got: '%s'\n" % ",".join(sorted(expected_macros))) - failed += 1 - else: - print "OK" - elif expected_features is not None: - if sorted(expected_features) != sorted(features): - print "FAILED!" - sys.stderr.write(" List of features doesn't match\n") - sys.stderr.write(" Expected: '%s'\n" % ",".join(sorted(expected_features))) - sys.stderr.write(" Got: '%s'\n" % ",".join(sorted(expected_features))) - failed += 1 - else: - print "OK" - else: - print "OK" - sys.path.remove(full_name) - return failed - -failed = 0 -root_dir = os.path.abspath(os.path.dirname(__file__)) -tlist = sorted(os.listdir(root_dir), key = lambda e: int(e[4:]) if e.startswith('test') else -1) -for test_name in tlist: - full_name = os.path.join(root_dir, test_name) - if os.path.isdir(full_name) and test_name.startswith('test'): - failed += test_tree(full_name, test_name) -sys.exit(failed) -