1ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarimport os
2ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbartry:
3ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar    import ConfigParser
4ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarexcept ImportError:
5ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar    import configparser as ConfigParser
6ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
7ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarimport lit.formats
8ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarimport lit.Test
9ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
10ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarclass DummyFormat(lit.formats.FileBasedTest):
11ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar    def execute(self, test, lit_config):
12ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        # In this dummy format, expect that each test file is actually just a
13ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        # .ini format dump of the results to report.
14ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
15ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        source_path = test.getSourcePath()
16ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
17ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        cfg = ConfigParser.ConfigParser()
18ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        cfg.read(source_path)
19ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
20ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        # Create the basic test result.
21ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        result_code = cfg.get('global', 'result_code')
22ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        result_output = cfg.get('global', 'result_output')
23ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        result = lit.Test.Result(getattr(lit.Test, result_code),
24ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar                                 result_output)
25ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
26ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        # Load additional metrics.
27ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        for key,value_str in cfg.items('results'):
28ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar            value = eval(value_str)
29ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar            if isinstance(value, int):
30ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar                metric = lit.Test.IntMetricValue(value)
31ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar            elif isinstance(value, float):
32ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar                metric = lit.Test.RealMetricValue(value)
33ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar            else:
34ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar                raise RuntimeError("unsupported result type")
35ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar            result.addMetric(key, metric)
36ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
37ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar        return result
38ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbar
39ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarconfig.name = 'test-data'
40ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarconfig.suffixes = ['.ini']
41ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarconfig.test_format = DummyFormat()
42ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarconfig.test_source_root = None
43ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarconfig.test_exec_root = None
44ff058f0a701b601f1593f2a9c8030acb652fdba6Daniel Dunbarconfig.target_triple = None
45