12380c1b6SYuanfang Chen#!/usr/bin/env python 22380c1b6SYuanfang Chen 32380c1b6SYuanfang Chenimport os 42380c1b6SYuanfang Chenimport sys 52380c1b6SYuanfang Chen 62380c1b6SYuanfang Chenif len(sys.argv) == 3 and sys.argv[1] == "--gtest_list_tests": 7*b71edfaaSTobias Hieta if sys.argv[2] != "--gtest_filter=-*DISABLED_*": 82380c1b6SYuanfang Chen raise ValueError("unexpected argument: %s" % (sys.argv[2])) 9*b71edfaaSTobias Hieta print( 10*b71edfaaSTobias Hieta """\ 112380c1b6SYuanfang ChenFirstTest. 12*b71edfaaSTobias Hieta subTestA""" 13*b71edfaaSTobias Hieta ) 142380c1b6SYuanfang Chen sys.exit(0) 152380c1b6SYuanfang Chenelif len(sys.argv) != 1: 162380c1b6SYuanfang Chen # sharding and json output are specified using environment variables 17*b71edfaaSTobias Hieta raise ValueError("unexpected argument: %r" % (" ".join(sys.argv[1:]))) 182380c1b6SYuanfang Chen 19*b71edfaaSTobias Hietafor e in ["GTEST_TOTAL_SHARDS", "GTEST_SHARD_INDEX", "GTEST_OUTPUT"]: 202380c1b6SYuanfang Chen if e not in os.environ: 212380c1b6SYuanfang Chen raise ValueError("missing environment variables: " + e) 222380c1b6SYuanfang Chen 23*b71edfaaSTobias Hietaif not os.environ["GTEST_OUTPUT"].startswith("json:"): 24*b71edfaaSTobias Hieta raise ValueError("must emit json output: " + os.environ["GTEST_OUTPUT"]) 252380c1b6SYuanfang Chen 262380c1b6SYuanfang Chenoutput = """\ 272380c1b6SYuanfang Chen{ 282380c1b6SYuanfang Chen"random_seed": 123, 292380c1b6SYuanfang Chen"testsuites": [ 302380c1b6SYuanfang Chen { 312380c1b6SYuanfang Chen "name": "FirstTest", 322380c1b6SYuanfang Chen "testsuite": [ 332380c1b6SYuanfang Chen { 342380c1b6SYuanfang Chen "name": "subTestA", 352380c1b6SYuanfang Chen "result": "COMPLETED", 362380c1b6SYuanfang Chen "time": "0.001s" 372380c1b6SYuanfang Chen } 382380c1b6SYuanfang Chen ] 392380c1b6SYuanfang Chen } 402380c1b6SYuanfang Chen] 412380c1b6SYuanfang Chen}""" 422380c1b6SYuanfang Chen 432380c1b6SYuanfang Chendummy_output = """\ 442380c1b6SYuanfang Chen{ 452380c1b6SYuanfang Chen"testsuites": [ 462380c1b6SYuanfang Chen] 472380c1b6SYuanfang Chen}""" 482380c1b6SYuanfang Chen 49*b71edfaaSTobias Hietajson_filename = os.environ["GTEST_OUTPUT"].split(":", 1)[1] 50*b71edfaaSTobias Hietawith open(json_filename, "w", encoding="utf-8") as f: 51*b71edfaaSTobias Hieta if os.environ["GTEST_SHARD_INDEX"] == "0": 522380c1b6SYuanfang Chen f.write(output) 532380c1b6SYuanfang Chen else: 542380c1b6SYuanfang Chen f.write(dummy_output) 552380c1b6SYuanfang Chen exit_code = 0 562380c1b6SYuanfang Chen 572380c1b6SYuanfang Chensys.exit(exit_code) 58