Skip to content

Commit

Permalink
[lldb][tests] Take into account all parent's categories when traverse…
Browse files Browse the repository at this point in the history
… folders upwards

This is needed to not re-write parent's categories by categories of a nested folder,
e.g. commands/expression/completion specify "cmdline" category, however it still belongs
to parent's "expression" category.

The sentinel ".categories" in the test-suite root directory is no longer needed.

Differential Revision: https://reviews.llvm.org/D71905
  • Loading branch information
tkrasnukha committed Jan 10, 2020
1 parent 564481a commit e4d6729
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 12 deletions.
Empty file.
25 changes: 13 additions & 12 deletions lldb/packages/Python/lldbsuite/test/test_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,8 @@ def getDescription(self, test):
def _getFileBasedCategories(test):
"""
Returns the list of categories to which this test case belongs by
looking for a ".categories" file. We start at the folder the test is in
an traverse the hierarchy upwards - we guarantee a .categories to exist
at the top level directory so we do not end up looping endlessly.
collecting values of ".categories" files. We start at the folder the test is in
and traverse the hierarchy upwards until the test-suite root directory.
"""
import inspect
import os.path
Expand All @@ -120,20 +119,22 @@ def _getFileBasedCategories(test):
start_path = inspect.getfile(test.__class__)

folder = os.path.dirname(start_path)
while folder != '/':

from lldbsuite import lldb_test_root as test_root
if test_root != os.path.commonprefix([folder, test_root]):
raise Exception("The test file %s is outside the test root directory" % start_path)

categories = set()
while not os.path.samefile(folder, test_root):
categories_file_name = os.path.join(folder, ".categories")
if os.path.exists(categories_file_name):
categories_file = open(categories_file_name, 'r')
categories = categories_file.readline()
categories_str = categories_file.readline().strip()
categories_file.close()
categories = str.replace(categories, '\n', '')
categories = str.replace(categories, '\r', '')
return categories.split(',')
else:
folder = os.path.dirname(folder)
continue
raise Exception("Did not find a .categories file, starting at: %s" % start_path)
categories.update(categories_str.split(','))
folder = os.path.dirname(folder)

return list(categories)

def getCategoriesForTest(self, test):
"""
Expand Down

0 comments on commit e4d6729

Please sign in to comment.