From d33153985335c4a6a33f01e4be4ebe31dd8cb5fa Mon Sep 17 00:00:00 2001 From: Jimmy Brisson Date: Wed, 20 Mar 2019 08:49:56 -0500 Subject: [PATCH 1/2] Test that excluded libraries are correctly collected --- tools/test/resources/resource_test.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/tools/test/resources/resource_test.py b/tools/test/resources/resource_test.py index 17b91ee875f..fbf9a43efb2 100644 --- a/tools/test/resources/resource_test.py +++ b/tools/test/resources/resource_test.py @@ -15,8 +15,8 @@ # limitations under the License. import unittest -from os.path import dirname, join -from tools.resources import Resources, FileType +from os.path import dirname, join, basename +from tools.resources import Resources, FileType, MBED_LIB_FILENAME from tools.notifier.mock import MockNotifier SRC_PATHS = { @@ -105,20 +105,29 @@ def test_filter_by_all_libraries(self): """ Assert something """ - res = Resources(MockNotifier()) + res = Resources(MockNotifier(), collect_ignores=True) res._add_labels('TARGET', ['K64F', 'FRDM']) for name, loc in SRC_PATHS.items(): res.add_directory(loc, into_path=name) res.filter_by_libraries(res.get_file_refs(FileType.JSON)) assert("main.cpp" in res.get_file_names(FileType.CPP_SRC)) + lib_dirs = ( + dirname(name) or "." for name in + res.get_file_names(FileType.JSON) + ) + assert(not any(dir in res.ignored_dirs for dir in lib_dirs)) def test_filter_by_bm_lib(self): - res = Resources(MockNotifier()) + res = Resources(MockNotifier(), collect_ignores=True) res._add_labels('TARGET', ['K64F', 'FRDM']) for name, loc in SRC_PATHS.items(): res.add_directory(loc, into_path=name) - filter_by = [ + libs = [ ref for ref in res.get_file_refs(FileType.JSON) + if basename(ref.name) == MBED_LIB_FILENAME + ] + filter_by = [ + ref for ref in libs if join("platform", "bm", "mbed_lib.json") in ref.name ] res.filter_by_libraries(filter_by) @@ -131,6 +140,11 @@ def test_filter_by_bm_lib(self): join("mbed-os", "TARGET_FRDM", "not-main.cpp") in res.get_file_names(FileType.CPP_SRC) ) + inc_names = [dirname(name) or "." for name, _ in filter_by] + assert(not any(d in res.ignored_dirs for d in inc_names)) + excluded_libs = set(libs) - set(filter_by) + exc_names = [dirname(name) or "." for name, _ in excluded_libs] + assert(all(e in res.ignored_dirs for e in exc_names)) if __name__ == '__main__': From 41c1553d75500df91ca982acf009135fb572c74c Mon Sep 17 00:00:00 2001 From: Jimmy Brisson Date: Wed, 20 Mar 2019 09:01:38 -0500 Subject: [PATCH 2/2] Collect excluded libraries into ignored_dirs --- tools/resources/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/resources/__init__.py b/tools/resources/__init__.py index 599b4c58e34..46727769e77 100644 --- a/tools/resources/__init__.py +++ b/tools/resources/__init__.py @@ -312,6 +312,10 @@ def filter_by_libraries(self, libraries_included): if ref.name.endswith(MBED_LIB_FILENAME) ) self._excluded_libs = all_library_refs - self._libs_filtered + if self._collect_ignores: + self.ignored_dirs += [ + dirname(n) or "." for n, _ in self._excluded_libs + ] def _get_from_refs(self, file_type, key): return sorted([key(f) for f in self.get_file_refs(file_type)])