| #!/usr/bin/python |
| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """ Utility code adapted from test_importer.py for test doc generation. |
| |
| These routines are modified versions of those in test_importer.py. If the |
| docgen code is ever merged into Autotest, this code should be factored out |
| of test_importer.py and combined with this. |
| """ |
| |
| import fnmatch |
| import os |
| |
| import common |
| from autotest_lib.client.common_lib import control_data |
| |
| |
| def GetTestsFromFS(parent_dir, logger): |
| """ |
| Find control files in file system and load a list with their info. |
| |
| @param parent_dir: directory to search recursively. |
| @param logger: Python logger for logging. |
| |
| @return dictionary of the form: tests[file_path] = parsed_object |
| """ |
| tests = {} |
| tests_src = {} |
| for root, dirnames, filenames in os.walk(parent_dir): |
| for filename in fnmatch.filter(filenames, 'control*'): |
| test_name = os.path.basename(root) |
| if test_name[:5].lower() == 'suite' or '.svn' in filename: |
| continue |
| full_name = os.path.join(root, filename) |
| try: |
| found_test = control_data.parse_control(full_name, |
| raise_warnings=True) |
| tests[test_name] = '' |
| tests_src[test_name] = parent_dir |
| except control_data.ControlVariableException, e: |
| logger.warn("Skipping %s\n%s", full_name, e) |
| except Exception, e: |
| logger.error("Bad %s\n%s", full_name, e) |
| return tests, tests_src |
| |
| |