Browse Source

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 <nathan@lanza.io>

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@342269 91177308-0d34-0410-b5e6-96231b3b80d8
Alex Langford 7 years ago
parent
commit
7b77a6b5d2
2 changed files with 23 additions and 20 deletions
  1. 18 0
      utils/lit/examples/many-tests/ManyTests.py
  2. 5 20
      utils/lit/examples/many-tests/lit.cfg

+ 18 - 0
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, ""

+ 5 - 20
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()