86 lines
2.6 KiB
Python
86 lines
2.6 KiB
Python
# Copyright (c) 2015 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import sys
|
|
import os
|
|
|
|
|
|
def _AddToPathIfNeeded(path):
|
|
if path not in sys.path:
|
|
sys.path.insert(0, path)
|
|
|
|
|
|
def UpdateSysPathIfNeeded():
|
|
p = DashboardProject()
|
|
|
|
_AddToPathIfNeeded(p.catapult_third_party_path)
|
|
_AddToPathIfNeeded(p.catapult_path)
|
|
_AddToPathIfNeeded(p.tracing_root_path)
|
|
import tracing_project
|
|
tracing_project.UpdateSysPathIfNeeded()
|
|
|
|
|
|
def _FindAllFilesRecursive(source_paths):
|
|
assert isinstance(source_paths, list)
|
|
all_filenames = set()
|
|
for source_path in source_paths:
|
|
for dirpath, _, filenames in os.walk(source_path):
|
|
for f in filenames:
|
|
if f.startswith('.'):
|
|
continue
|
|
x = os.path.abspath(os.path.join(dirpath, f))
|
|
all_filenames.add(x)
|
|
return all_filenames
|
|
|
|
|
|
def _IsFilenameATest(x):
|
|
if x.endswith('-test.html'):
|
|
return True
|
|
if x.endswith('_test.html'):
|
|
return True
|
|
return False
|
|
|
|
|
|
class DashboardProject(object):
|
|
catapult_path = os.path.abspath(
|
|
os.path.join(os.path.dirname(__file__), '..'))
|
|
|
|
catapult_third_party_path = os.path.join(catapult_path, 'third_party')
|
|
|
|
dashboard_root_path = os.path.join(catapult_path, 'dashboard')
|
|
dashboard_src_path = os.path.join(dashboard_root_path, 'dashboard')
|
|
dashboard_test_data_path = os.path.join(dashboard_root_path, 'test_data')
|
|
dashboard_polymer_path = os.path.join(catapult_third_party_path, 'polymer')
|
|
|
|
tracing_root_path = os.path.join(catapult_path, 'tracing')
|
|
|
|
def __init__(self):
|
|
self._source_paths = None
|
|
|
|
@property
|
|
def source_paths(self):
|
|
# We lazily init source_paths to resolve this cyclic dependency
|
|
# (See perf_insights_project.py).
|
|
if self._source_paths is None:
|
|
self._source_paths = []
|
|
self._source_paths.append(self.dashboard_root_path)
|
|
self._source_paths.append(self.dashboard_polymer_path)
|
|
self._source_paths.append(self.catapult_third_party_path)
|
|
|
|
import tracing_project as tracing_project_module
|
|
tracing_project = tracing_project_module.TracingProject()
|
|
self._source_paths.extend(tracing_project.source_paths)
|
|
|
|
return self._source_paths
|
|
|
|
def FindAllTestModuleRelPaths(self, pred=None):
|
|
if pred is None:
|
|
pred = lambda x: True
|
|
all_filenames = _FindAllFilesRecursive([self.dashboard_src_path])
|
|
test_module_filenames = [x for x in all_filenames if
|
|
_IsFilenameATest(x) and pred(x)]
|
|
test_module_filenames.sort()
|
|
|
|
return [os.path.relpath(x, self.dashboard_root_path)
|
|
for x in test_module_filenames]
|