Skip to content

Commit

Permalink
Fix lit/example/many-tests pickling issue
Browse files Browse the repository at this point in the history
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 <nathan@lanza.io>

Differential Revision: https://reviews.llvm.org/D51328

llvm-svn: 342269
  • Loading branch information
bulbazord committed Sep 14, 2018
1 parent 7bff00e commit a250f90
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 20 deletions.
18 changes: 18 additions & 0 deletions llvm/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, ""
25 changes: 5 additions & 20 deletions llvm/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()

0 comments on commit a250f90

Please sign in to comment.