You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
172
external/llvm/utils/lit/tests/unit/TestRunner.py
vendored
172
external/llvm/utils/lit/tests/unit/TestRunner.py
vendored
@ -1,172 +0,0 @@
|
||||
# RUN: %{python} %s
|
||||
#
|
||||
# END.
|
||||
|
||||
|
||||
import unittest
|
||||
import platform
|
||||
import os.path
|
||||
import tempfile
|
||||
|
||||
import lit
|
||||
from lit.TestRunner import ParserKind, IntegratedTestKeywordParser, \
|
||||
parseIntegratedTestScript
|
||||
|
||||
|
||||
class TestIntegratedTestKeywordParser(unittest.TestCase):
|
||||
inputTestCase = None
|
||||
|
||||
@staticmethod
|
||||
def load_keyword_parser_lit_tests():
|
||||
"""
|
||||
Create and load the LIT test suite and test objects used by
|
||||
TestIntegratedTestKeywordParser
|
||||
"""
|
||||
# Create the global config object.
|
||||
lit_config = lit.LitConfig.LitConfig(progname='lit',
|
||||
path=[],
|
||||
quiet=False,
|
||||
useValgrind=False,
|
||||
valgrindLeakCheck=False,
|
||||
singleProcess=False,
|
||||
valgrindArgs=[],
|
||||
noExecute=False,
|
||||
debug=False,
|
||||
isWindows=(
|
||||
platform.system() == 'Windows'),
|
||||
params={})
|
||||
TestIntegratedTestKeywordParser.litConfig = lit_config
|
||||
# Perform test discovery.
|
||||
test_path = os.path.dirname(os.path.dirname(__file__))
|
||||
inputs = [os.path.join(test_path, 'Inputs/testrunner-custom-parsers/')]
|
||||
assert os.path.isdir(inputs[0])
|
||||
run = lit.run.Run(lit_config,
|
||||
lit.discovery.find_tests_for_inputs(lit_config, inputs))
|
||||
assert len(run.tests) == 1 and "there should only be one test"
|
||||
TestIntegratedTestKeywordParser.inputTestCase = run.tests[0]
|
||||
|
||||
@staticmethod
|
||||
def make_parsers():
|
||||
def custom_parse(line_number, line, output):
|
||||
if output is None:
|
||||
output = []
|
||||
output += [part for part in line.split(' ') if part.strip()]
|
||||
return output
|
||||
|
||||
return [
|
||||
IntegratedTestKeywordParser("MY_TAG.", ParserKind.TAG),
|
||||
IntegratedTestKeywordParser("MY_DNE_TAG.", ParserKind.TAG),
|
||||
IntegratedTestKeywordParser("MY_LIST:", ParserKind.LIST),
|
||||
IntegratedTestKeywordParser("MY_RUN:", ParserKind.COMMAND),
|
||||
IntegratedTestKeywordParser("MY_CUSTOM:", ParserKind.CUSTOM,
|
||||
custom_parse)
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def get_parser(parser_list, keyword):
|
||||
for p in parser_list:
|
||||
if p.keyword == keyword:
|
||||
return p
|
||||
assert False and "parser not found"
|
||||
|
||||
@staticmethod
|
||||
def parse_test(parser_list):
|
||||
script = parseIntegratedTestScript(
|
||||
TestIntegratedTestKeywordParser.inputTestCase,
|
||||
additional_parsers=parser_list, require_script=False)
|
||||
assert not isinstance(script, lit.Test.Result)
|
||||
assert isinstance(script, list)
|
||||
assert len(script) == 0
|
||||
|
||||
def test_tags(self):
|
||||
parsers = self.make_parsers()
|
||||
self.parse_test(parsers)
|
||||
tag_parser = self.get_parser(parsers, 'MY_TAG.')
|
||||
dne_tag_parser = self.get_parser(parsers, 'MY_DNE_TAG.')
|
||||
self.assertTrue(tag_parser.getValue())
|
||||
self.assertFalse(dne_tag_parser.getValue())
|
||||
|
||||
def test_lists(self):
|
||||
parsers = self.make_parsers()
|
||||
self.parse_test(parsers)
|
||||
list_parser = self.get_parser(parsers, 'MY_LIST:')
|
||||
self.assertEqual(list_parser.getValue(),
|
||||
['one', 'two', 'three', 'four'])
|
||||
|
||||
def test_commands(self):
|
||||
parsers = self.make_parsers()
|
||||
self.parse_test(parsers)
|
||||
cmd_parser = self.get_parser(parsers, 'MY_RUN:')
|
||||
value = cmd_parser.getValue()
|
||||
self.assertEqual(len(value), 2) # there are only two run lines
|
||||
self.assertEqual(value[0].strip(), 'baz')
|
||||
self.assertEqual(value[1].strip(), 'foo bar')
|
||||
|
||||
def test_custom(self):
|
||||
parsers = self.make_parsers()
|
||||
self.parse_test(parsers)
|
||||
custom_parser = self.get_parser(parsers, 'MY_CUSTOM:')
|
||||
value = custom_parser.getValue()
|
||||
self.assertEqual(value, ['a', 'b', 'c'])
|
||||
|
||||
def test_bad_keywords(self):
|
||||
def custom_parse(line_number, line, output):
|
||||
return output
|
||||
|
||||
try:
|
||||
IntegratedTestKeywordParser("TAG_NO_SUFFIX", ParserKind.TAG),
|
||||
self.fail("TAG_NO_SUFFIX failed to raise an exception")
|
||||
except ValueError as e:
|
||||
pass
|
||||
except BaseException as e:
|
||||
self.fail("TAG_NO_SUFFIX raised the wrong exception: %r" % e)
|
||||
|
||||
try:
|
||||
IntegratedTestKeywordParser("TAG_WITH_COLON:", ParserKind.TAG),
|
||||
self.fail("TAG_WITH_COLON: failed to raise an exception")
|
||||
except ValueError as e:
|
||||
pass
|
||||
except BaseException as e:
|
||||
self.fail("TAG_WITH_COLON: raised the wrong exception: %r" % e)
|
||||
|
||||
try:
|
||||
IntegratedTestKeywordParser("LIST_WITH_DOT.", ParserKind.LIST),
|
||||
self.fail("LIST_WITH_DOT. failed to raise an exception")
|
||||
except ValueError as e:
|
||||
pass
|
||||
except BaseException as e:
|
||||
self.fail("LIST_WITH_DOT. raised the wrong exception: %r" % e)
|
||||
|
||||
try:
|
||||
IntegratedTestKeywordParser("CUSTOM_NO_SUFFIX",
|
||||
ParserKind.CUSTOM, custom_parse),
|
||||
self.fail("CUSTOM_NO_SUFFIX failed to raise an exception")
|
||||
except ValueError as e:
|
||||
pass
|
||||
except BaseException as e:
|
||||
self.fail("CUSTOM_NO_SUFFIX raised the wrong exception: %r" % e)
|
||||
|
||||
# Both '.' and ':' are allowed for CUSTOM keywords.
|
||||
try:
|
||||
IntegratedTestKeywordParser("CUSTOM_WITH_DOT.",
|
||||
ParserKind.CUSTOM, custom_parse),
|
||||
except BaseException as e:
|
||||
self.fail("CUSTOM_WITH_DOT. raised an exception: %r" % e)
|
||||
try:
|
||||
IntegratedTestKeywordParser("CUSTOM_WITH_COLON:",
|
||||
ParserKind.CUSTOM, custom_parse),
|
||||
except BaseException as e:
|
||||
self.fail("CUSTOM_WITH_COLON: raised an exception: %r" % e)
|
||||
|
||||
try:
|
||||
IntegratedTestKeywordParser("CUSTOM_NO_PARSER:",
|
||||
ParserKind.CUSTOM),
|
||||
self.fail("CUSTOM_NO_PARSER: failed to raise an exception")
|
||||
except ValueError as e:
|
||||
pass
|
||||
except BaseException as e:
|
||||
self.fail("CUSTOM_NO_PARSER: raised the wrong exception: %r" % e)
|
||||
|
||||
if __name__ == '__main__':
|
||||
TestIntegratedTestKeywordParser.load_keyword_parser_lit_tests()
|
||||
unittest.main(verbosity=2)
|
Reference in New Issue
Block a user