41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import os
|
|
from typing import List
|
|
|
|
|
|
def collect_test_dirs(test_root: str, test_levels: List[int]) -> List[str]:
|
|
"""Returns a list of test directories.
|
|
|
|
Args:
|
|
test_root (str): Should be `{LAGRIT_ROOT}/test/`
|
|
test_levels (List): A list containing one or more of [1, 2, 3]
|
|
|
|
Returns:
|
|
List[str]: A list of absolute paths to valid test directories.
|
|
"""
|
|
all_test_dirs = []
|
|
|
|
# Get absolute path of 'level01', 'level02', etc.
|
|
# test_levels = [os.path.join(test_root, level) for level in test_levels]
|
|
|
|
for level in test_levels:
|
|
if isinstance(level, int):
|
|
level = "level%02d" % level
|
|
|
|
level_abspath = os.path.join(test_root, level)
|
|
assert os.path.isdir(level_abspath), "Could not find level: %s" % level_abspath
|
|
|
|
# Grabs and appends all subfolders in a 'level0X/' directory
|
|
# Requires each subfolder to have a 'reference/' directory
|
|
for test_dir in sorted(os.listdir(level_abspath)):
|
|
|
|
if test_dir == "test_results":
|
|
continue
|
|
|
|
test_dir = os.path.join(level_abspath, test_dir)
|
|
reference_dir = os.path.join(test_dir, "reference/")
|
|
|
|
if os.path.isdir(test_dir) and os.path.isdir(reference_dir):
|
|
all_test_dirs.append(test_dir)
|
|
|
|
return all_test_dirs
|