From e949b857a04d3907566055ecde9778fd4db9d009 Mon Sep 17 00:00:00 2001 From: Jimmy Brisson Date: Tue, 7 Mar 2017 11:41:56 -0600 Subject: [PATCH] Add unit test for gcc path specifications --- tools/test/toolchains/api.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/tools/test/toolchains/api.py b/tools/test/toolchains/api.py index 31ced9d0c9..01a684fae8 100644 --- a/tools/test/toolchains/api.py +++ b/tools/test/toolchains/api.py @@ -4,15 +4,15 @@ import os from string import printable from copy import deepcopy from mock import MagicMock, patch -from hypothesis import given -from hypothesis.strategies import text, lists, fixed_dictionaries +from hypothesis import given, settings +from hypothesis.strategies import text, lists, fixed_dictionaries, booleans ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "..")) sys.path.insert(0, ROOT) from tools.toolchains import TOOLCHAIN_CLASSES, LEGACY_TOOLCHAIN_NAMES,\ - Resources + Resources, TOOLCHAIN_PATHS from tools.targets import TARGET_MAP def test_instantiation(): @@ -125,3 +125,21 @@ def test_detect_duplicates(filenames): assert "dupe.s" in notification["message"] assert "dupe.c" in notification["message"] assert "dupe.cpp" in notification["message"] + +@given(text(alphabet=ALPHABET + ["/"], min_size=1)) +@given(booleans()) +@given(booleans()) +@settings(max_examples=20) +def test_path_specified_gcc(gcc_loc, exists_at_loc, exists_in_path): + with patch('tools.toolchains.gcc.exists') as _exists: + with patch('tools.toolchains.gcc.find_executable') as _find: + _exists.return_value = exists_at_loc + _find.return_value = exists_in_path + TOOLCHAIN_PATHS['GCC_ARM'] = gcc_loc + toolchain_class = TOOLCHAIN_CLASSES["GCC_ARM"] + found_p = toolchain_class.check_executable() + assert found_p == (exists_at_loc or exists_in_path) + if exists_at_loc: + assert TOOLCHAIN_PATHS['GCC_ARM'] == gcc_loc + elif exists_in_path: + assert TOOLCHAIN_PATHS['GCC_ARM'] == ''