1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #!/usr/bin/env python
- # Copyright (c) 2021 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.
- """Creates a dummy RTS filter file and a dummy inverse filter file if a
- real ones do not exist yet. Real filter files (and their inverse) are
- generated by the RTS binary for suites with any skippable tests. The
- rest of the suites need to have dummy files because gn will expect the
- file to be present.
- Implementation uses try / except because the filter files are written
- relatively close to when this code creates the dummy files.
- The following type of implementation would have a race condition:
- if not os.path.isfile(filter_file):
- open(filter_file, 'w') as fp:
- fp.write('*')
- """
- import errno
- import os
- import sys
- def main():
- filter_file = sys.argv[1]
- # '*' is a dummy that means run everything
- write_filter_file(filter_file, '*')
- inverted_filter_file = sys.argv[2]
- # '-*' is a dummy that means run nothing
- write_filter_file(inverted_filter_file, '-*')
- def write_filter_file(filter_file, filter_string):
- directory = os.path.dirname(filter_file)
- try:
- os.makedirs(directory)
- except OSError as err:
- if err.errno == errno.EEXIST:
- pass
- else:
- raise
- try:
- fp = os.open(filter_file, os.O_CREAT | os.O_EXCL | os.O_WRONLY)
- except OSError as err:
- if err.errno == errno.EEXIST:
- pass
- else:
- raise
- else:
- with os.fdopen(fp, 'w') as file_obj:
- file_obj.write(filter_string)
- if __name__ == '__main__':
- sys.exit(main())
|