blob: 0074d836ddfc7dcb85e26ea414e9de5783c4c45c [file] [log] [blame]
#!/usr/bin/env python
# Copyright 2017 The Fuchsia 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 argparse
import os
import re
import sys
def main():
parser = argparse.ArgumentParser(
sys.argv[0], description="Generate main file for Fuchsia dart test")
parser.add_argument(
"--out", help="Path to .dart file to generate", required=True)
parser.add_argument(
'--source',
help='Test source file',
required=True,
default=[],
action='append')
args = parser.parse_args()
out_dir = os.path.dirname(args.out)
test_files = [os.path.relpath(t, out_dir) for t in args.source]
outfile = open(args.out, 'w')
outfile.write(
'''// Generated by %s
// ignore_for_file: directives_ordering
// ignore_for_file: avoid_relative_lib_imports
import 'dart:async';
import 'package:fuchsia_test_helper/fuchsia_test_helper.dart';
''' % os.path.basename(__file__))
for i, path in enumerate(test_files):
outfile.write("import '%s' as test_%d;\n" % (path, i))
outfile.write(
'''
Future<int> main(List<String> args) async {
final int exitCode = await runFuchsiaTests(<MainFunction>[
''')
for i in range(len(test_files)):
outfile.write('test_%d.main,\n' % i)
outfile.write(
'''], args);
exitFuchsiaTest(exitCode);
return exitCode;
}
''')
outfile.close()
if __name__ == '__main__':
main()