xref: /llvm-project/llvm/utils/lit/tests/Inputs/googletest-crash/DummySubDir/OneTest.py (revision b71edfaa4ec3c998aadb35255ce2f60bba2940b0)
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