| # Copyright (c) 2016 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 = NetlogViewerProject() |
| |
| _AddToPathIfNeeded(p.catapult_third_party_path) |
| _AddToPathIfNeeded(p.catapult_path) |
| |
| |
| 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): # pylint: disable=unused-argument |
| if x.endswith('_test.js'): |
| return True |
| |
| if x.endswith('_test.html'): |
| return True |
| |
| return False |
| |
| |
| class NetlogViewerProject(object): |
| catapult_path = os.path.abspath( |
| os.path.join(os.path.dirname(__file__), '..')) |
| |
| catapult_third_party_path = os.path.join(catapult_path, 'third_party') |
| |
| netlog_viewer_root_path = os.path.join(catapult_path, 'netlog_viewer') |
| netlog_viewer_src_path = os.path.join( |
| netlog_viewer_root_path, 'netlog_viewer') |
| |
| |
| def __init__(self): |
| self._source_paths = None |
| |
| @property |
| def source_paths(self): |
| if self._source_paths is None: |
| self._source_paths = [] |
| self._source_paths.append(self.netlog_viewer_root_path) |
| self._source_paths.append(self.catapult_third_party_path) |
| |
| return self._source_paths |
| |
| def FindAllTestModuleRelPaths(self, pred=None): |
| if pred is None: |
| pred = lambda x: True |
| all_filenames = _FindAllFilesRecursive([self.netlog_viewer_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.netlog_viewer_root_path) |
| for x in test_module_filenames] |