From 32b9ada3ecb5135954bed4c67d396fe9b77ba5be Mon Sep 17 00:00:00 2001 From: Russ Butler Date: Fri, 3 Feb 2017 17:33:15 -0600 Subject: [PATCH] Enforce device_name is valid in targets.json Add a CI test ensure that device_name exists inside the pack index. --- .travis.yml | 1 + tools/test/targets/target_test.py | 43 +++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 tools/test/targets/target_test.py diff --git a/.travis.yml b/.travis.yml index f11a07d5e21..077abbae3aa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ script: - make -C events/equeue test clean - PYTHONPATH=. python tools/test/config_test/config_test.py - PYTHONPATH=. python tools/test/build_api/build_api_test.py + - PYTHONPATH=. python tools/test/targets/target_test.py - python tools/test/pylint.py - py.test tools/test/toolchains/api.py - python tools/test/memap/memap_test.py diff --git a/tools/test/targets/target_test.py b/tools/test/targets/target_test.py new file mode 100644 index 00000000000..3227c925ad4 --- /dev/null +++ b/tools/test/targets/target_test.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +""" + mbed + Copyright (c) 2017-2017 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. +""" + +import sys +from os.path import join, abspath, dirname +import unittest + +# Be sure that the tools directory is in the search path +ROOT = abspath(join(dirname(__file__), "..", "..", "..")) +sys.path.insert(0, ROOT) + +from tools.targets import TARGETS +from tools.arm_pack_manager import Cache + +class TestTargets(unittest.TestCase): + + def test_device_name(self): + """Assert device name is in a pack""" + cache = Cache(True, True) + named_targets = (target for target in TARGETS if + hasattr(target, "device_name")) + for target in named_targets: + self.assertTrue(target.device_name in cache.index, + "Target %s contains invalid device_name %s" % + (target.name, target.device_name)) + +if __name__ == '__main__': + unittest.main()