From 6602205ee00177955293c369a9d6b77f838cfd62 Mon Sep 17 00:00:00 2001 From: Alex Langford Date: Fri, 14 Sep 2018 19:44:09 +0000 Subject: [PATCH] Fix lit/example/many-tests pickling issue Summary: The multiprocess module uses pickling to transfer information between processes and does not know how to pickle the class created in the lit.cfg file and thus the example fails. Implement ManyTests in a separate file and import for the example test passes Patch by Nathan Lanza Differential Revision: https://reviews.llvm.org/D51328 llvm-svn: 342269 --- utils/lit/examples/many-tests/ManyTests.py | 18 ++++++++++++++++ utils/lit/examples/many-tests/lit.cfg | 25 +++++----------------- 2 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 utils/lit/examples/many-tests/ManyTests.py diff --git a/utils/lit/examples/many-tests/ManyTests.py b/utils/lit/examples/many-tests/ManyTests.py new file mode 100644 index 00000000000..df3edb55b85 --- /dev/null +++ b/utils/lit/examples/many-tests/ManyTests.py @@ -0,0 +1,18 @@ +from lit import Test + + +class ManyTests(object): + def __init__(self, N=10000): + self.N = N + + def getTestsInDirectory(self, testSuite, path_in_suite, litConfig, localConfig): + for i in range(self.N): + test_name = "test-%04d" % (i,) + yield Test.Test(testSuite, path_in_suite + (test_name,), localConfig) + + def execute(self, test, litConfig): + # Do a "non-trivial" amount of Python work. + sum = 0 + for i in range(10000): + sum += i + return Test.PASS, "" diff --git a/utils/lit/examples/many-tests/lit.cfg b/utils/lit/examples/many-tests/lit.cfg index 8f7b940b6ea..3477fef01ef 100644 --- a/utils/lit/examples/many-tests/lit.cfg +++ b/utils/lit/examples/many-tests/lit.cfg @@ -1,23 +1,8 @@ # -*- Python -*- -from lit import Test +import sys +import os +sys.path.insert(0, os.path.dirname(__file__)) +import ManyTests -class ManyTests(object): - def __init__(self, N=10000): - self.N = N - - def getTestsInDirectory(self, testSuite, path_in_suite, - litConfig, localConfig): - for i in range(self.N): - test_name = 'test-%04d' % (i,) - yield Test.Test(testSuite, path_in_suite + (test_name,), - localConfig) - - def execute(self, test, litConfig): - # Do a "non-trivial" amount of Python work. - sum = 0 - for i in range(10000): - sum += i - return Test.PASS,'' - -config.test_format = ManyTests() +config.test_format = ManyTests.ManyTests()