58 lines
1.8 KiB
Python
Executable File
58 lines
1.8 KiB
Python
Executable File
#!/usr/bin/python2
|
|
|
|
# Copyright (c) 2015 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.
|
|
"""This script creates a allowlist of test attributes based on the 'suite' read
|
|
from test control files.
|
|
"""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
|
|
import common
|
|
from autotest_lib.client.common_lib.cros import dev_server
|
|
from autotest_lib.server.cros.dynamic_suite.suite import Suite
|
|
|
|
|
|
def main():
|
|
"""main script."""
|
|
# Parse filepath from cmd line.
|
|
parser = argparse.ArgumentParser(description='Create attribute allowlist.')
|
|
parser.add_argument('path',
|
|
metavar='ALLOWLIST_FILE_PATH',
|
|
help='Path to the file allowlist is written to. E.g. '
|
|
'./attribute_allowlist.txt')
|
|
args = parser.parse_args()
|
|
|
|
# Get all the suites from current test control files, and order them.
|
|
fs_getter = Suite.create_fs_getter(common.autotest_dir)
|
|
devserver = dev_server.ImageServer('')
|
|
suite_list = Suite.list_all_suites('', devserver, fs_getter)
|
|
suite_list.sort(key=str.lower)
|
|
|
|
# Parse attributes from suites, and write to a file
|
|
allowlist = ['suite:' + x for x in suite_list]
|
|
_WriteToFile(allowlist, args.path)
|
|
|
|
|
|
def _WriteToFile(allowlist, path):
|
|
""""Write the allowlist to a file under the path.
|
|
|
|
The format of the file used here is a list, which can be easily read to a list
|
|
by using ast.literal_eval.
|
|
|
|
Args:
|
|
allowlist: a list contains all the allowed attributes.
|
|
path: path to the file.
|
|
"""
|
|
with open(path, 'wb') as attr_file:
|
|
attr_file.write('\n'.join(allowlist).encode('utf-8'))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|