Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions tools/resources/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)])
Expand Down
24 changes: 19 additions & 5 deletions tools/test/resources/resource_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down Expand Up @@ -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)
Expand All @@ -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__':
Expand Down