1cd0a5889SYuanfang Chen#!/usr/bin/env python 2cd0a5889SYuanfang Chen 3cd0a5889SYuanfang Chenimport os 4cd0a5889SYuanfang Chenimport sys 5cd0a5889SYuanfang Chen 6cd0a5889SYuanfang Chenif len(sys.argv) == 3 and sys.argv[1] == "--gtest_list_tests": 7*b71edfaaSTobias Hieta if sys.argv[2] != "--gtest_filter=-*DISABLED_*": 8cd0a5889SYuanfang Chen raise ValueError("unexpected argument: %s" % (sys.argv[2])) 9*b71edfaaSTobias Hieta print( 10*b71edfaaSTobias Hieta """\ 11cd0a5889SYuanfang ChenFirstTest. 12cd0a5889SYuanfang Chen subTestA 13cd0a5889SYuanfang Chen subTestB 14cd0a5889SYuanfang Chen subTestC 15cd0a5889SYuanfang Chen subTestD 16cd0a5889SYuanfang ChenParameterizedTest/0. 17cd0a5889SYuanfang Chen subTest 18cd0a5889SYuanfang ChenParameterizedTest/1. 19*b71edfaaSTobias Hieta subTest""" 20*b71edfaaSTobias Hieta ) 21cd0a5889SYuanfang Chen sys.exit(0) 22cd0a5889SYuanfang Chenelif len(sys.argv) != 1: 23cd0a5889SYuanfang Chen # sharding and json output are specified using environment variables 24*b71edfaaSTobias Hieta raise ValueError("unexpected argument: %r" % (" ".join(sys.argv[1:]))) 25cd0a5889SYuanfang Chen 26*b71edfaaSTobias Hietafor e in ["GTEST_TOTAL_SHARDS", "GTEST_SHARD_INDEX", "GTEST_OUTPUT"]: 27cd0a5889SYuanfang Chen if e not in os.environ: 28cd0a5889SYuanfang Chen raise ValueError("missing environment variables: " + e) 29cd0a5889SYuanfang Chen 30*b71edfaaSTobias Hietaif not os.environ["GTEST_OUTPUT"].startswith("json:"): 31*b71edfaaSTobias Hieta raise ValueError("must emit json output: " + os.environ["GTEST_OUTPUT"]) 32cd0a5889SYuanfang Chen 33cd0a5889SYuanfang Chendummy_output = """\ 34cd0a5889SYuanfang Chen{ 35cd0a5889SYuanfang Chen"testsuites": [ 36cd0a5889SYuanfang Chen] 37cd0a5889SYuanfang Chen}""" 38cd0a5889SYuanfang Chen 39*b71edfaaSTobias Hietaif os.environ["GTEST_SHARD_INDEX"] == "0": 40*b71edfaaSTobias Hieta print( 41*b71edfaaSTobias Hieta """\ 42d3efa577SYuanfang Chen[----------] 4 test from FirstTest 43d3efa577SYuanfang Chen[ RUN ] FirstTest.subTestA 44d3efa577SYuanfang Chen[ OK ] FirstTest.subTestA (18 ms) 45*b71edfaaSTobias Hieta[ RUN ] FirstTest.subTestB""", 46*b71edfaaSTobias Hieta flush=True, 47*b71edfaaSTobias Hieta ) 48*b71edfaaSTobias Hieta print("I am about to crash", file=sys.stderr, flush=True) 49cd0a5889SYuanfang Chen exit_code = 1 50cd0a5889SYuanfang Chenelse: 51*b71edfaaSTobias Hieta json_filename = os.environ["GTEST_OUTPUT"].split(":", 1)[1] 52*b71edfaaSTobias Hieta with open(json_filename, "w", encoding="utf-8") as f: 53cd0a5889SYuanfang Chen f.write(dummy_output) 54cd0a5889SYuanfang Chen exit_code = 0 55cd0a5889SYuanfang Chen 56cd0a5889SYuanfang Chensys.exit(exit_code) 57