1#!/usr/bin/env python 2 3import os 4import sys 5 6if len(sys.argv) == 3 and sys.argv[1] == "--gtest_list_tests": 7 if sys.argv[2] != '--gtest_filter=-*DISABLED_*': 8 raise ValueError("unexpected argument: %s" % (sys.argv[2])) 9 print("""\ 10FirstTest. 11 subTestA""") 12 sys.exit(0) 13elif len(sys.argv) != 1: 14 # sharding and json output are specified using environment variables 15 raise ValueError("unexpected argument: %r" % (' '.join(sys.argv[1:]))) 16 17for e in ['GTEST_TOTAL_SHARDS', 'GTEST_SHARD_INDEX', 'GTEST_OUTPUT']: 18 if e not in os.environ: 19 raise ValueError("missing environment variables: " + e) 20 21if not os.environ['GTEST_OUTPUT'].startswith('json:'): 22 raise ValueError("must emit json output: " + os.environ['GTEST_OUTPUT']) 23 24output = """\ 25{ 26"random_seed": 123, 27"testsuites": [ 28 { 29 "name": "FirstTest", 30 "testsuite": [ 31 { 32 "name": "subTestA", 33 "result": "COMPLETED", 34 "time": "0.001s" 35 } 36 ] 37 } 38] 39}""" 40 41dummy_output = """\ 42{ 43"testsuites": [ 44] 45}""" 46 47json_filename = os.environ['GTEST_OUTPUT'].split(':', 1)[1] 48with open(json_filename, 'w', encoding='utf-8') as f: 49 if os.environ['GTEST_SHARD_INDEX'] == '0': 50 f.write(output) 51 else: 52 f.write(dummy_output) 53 exit_code = 0 54 55sys.exit(exit_code) 56