
Summary: Libc++ frequently has the need to parse more than just the builtin *test keywords* (`RUN`, `REQUIRES`, `XFAIL`, ect). For example libc++ currently needs a new keyword `MODULES-DEFINES: macro list...`. Instead of re-implementing the script parsing in libc++ this patch allows `parseIntegratedTestScript` to take custom parsers. This patch introduces a new class `IntegratedTestKeywordParser` which implements the logic to parse/process a test keyword. Parsing of various keyword "kinds" are supported out of the box, including 'TAG', 'COMMAND', and 'LIST', which parse keywords such as `END.`, `RUN:` and `XFAIL:` respectively. As an example after this change libc++ can implement the `MODULES-DEFINES` simply using: ``` mparser = IntegratedTestKeywordParser('MODULES-DEFINES:', ParserKind.LIST) parseIntegratedTestScript(test, additional_parsers=[mparser]) macro_list = mparser.getValue() ``` Reviewers: ddunbar, modocache, rnk, danalbert, jroelofs Subscribers: mgrang, llvm-commits, cfe-commits Differential Revision: https://reviews.llvm.org/D27005 llvm-svn: 288694
15 lines
374 B
INI
15 lines
374 B
INI
import lit.formats
|
|
import os
|
|
import lit.Test
|
|
|
|
class TestParserFormat(lit.formats.FileBasedTest):
|
|
def execute(self, test, lit_config):
|
|
return lit.Test.PASS, ''
|
|
|
|
config.name = 'custom-parsers'
|
|
config.suffixes = ['.txt']
|
|
config.test_format = TestParserFormat()
|
|
config.test_source_root = None
|
|
config.test_exec_root = None
|
|
config.target_triple = 'x86_64-unknown-unknown'
|