xref: /llvm-project/llvm/utils/lit/tests/Inputs/xunit-output/dummy_format.py (revision b71edfaa4ec3c998aadb35255ce2f60bba2940b0)
1import os
2
3try:
4    import ConfigParser
5except ImportError:
6    import configparser as ConfigParser
7
8import lit.formats
9import lit.Test
10
11
12class DummyFormat(lit.formats.FileBasedTest):
13    def execute(self, test, lit_config):
14        # In this dummy format, expect that each test file is actually just a
15        # .ini format dump of the results to report.
16
17        source_path = test.getSourcePath()
18
19        cfg = ConfigParser.ConfigParser()
20        cfg.read(source_path)
21
22        # Create the basic test result.
23        result_code = cfg.get("global", "result_code")
24        result_output = cfg.get("global", "result_output")
25        result = lit.Test.Result(getattr(lit.Test, result_code), result_output)
26
27        if cfg.has_option("global", "required_feature"):
28            required_feature = cfg.get("global", "required_feature")
29            if required_feature:
30                test.requires.append(required_feature)
31
32        # Load additional metrics.
33        for key, value_str in cfg.items("results"):
34            value = eval(value_str)
35            if isinstance(value, int):
36                metric = lit.Test.IntMetricValue(value)
37            elif isinstance(value, float):
38                metric = lit.Test.RealMetricValue(value)
39            else:
40                raise RuntimeError("unsupported result type")
41            result.addMetric(key, metric)
42
43        return result
44