#!/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