summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest/cases/oelib/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oeqa/selftest/cases/oelib/utils.py')
-rw-r--r--meta/lib/oeqa/selftest/cases/oelib/utils.py46
1 files changed, 45 insertions, 1 deletions
diff --git a/meta/lib/oeqa/selftest/cases/oelib/utils.py b/meta/lib/oeqa/selftest/cases/oelib/utils.py
index 9fb6c1576e..275aeda74e 100644
--- a/meta/lib/oeqa/selftest/cases/oelib/utils.py
+++ b/meta/lib/oeqa/selftest/cases/oelib/utils.py
@@ -1,5 +1,8 @@
1import sys
1from unittest.case import TestCase 2from unittest.case import TestCase
2from oe.utils import packages_filter_out_system, trim_version 3from contextlib import contextmanager
4from io import StringIO
5from oe.utils import packages_filter_out_system, trim_version, multiprocess_launch
3 6
4class TestPackagesFilterOutSystem(TestCase): 7class TestPackagesFilterOutSystem(TestCase):
5 def test_filter(self): 8 def test_filter(self):
@@ -49,3 +52,44 @@ class TestTrimVersion(TestCase):
49 self.assertEqual(trim_version("1.2.3", 2), "1.2") 52 self.assertEqual(trim_version("1.2.3", 2), "1.2")
50 self.assertEqual(trim_version("1.2.3", 3), "1.2.3") 53 self.assertEqual(trim_version("1.2.3", 3), "1.2.3")
51 self.assertEqual(trim_version("1.2.3", 4), "1.2.3") 54 self.assertEqual(trim_version("1.2.3", 4), "1.2.3")
55
56
57class TestMultiprocessLaunch(TestCase):
58
59 def test_multiprocesslaunch(self):
60 import bb
61
62 def testfunction(item, d):
63 if item == "2" or item == "1":
64 raise KeyError("Invalid number %s" % item)
65 return "Found %s" % item
66
67 def dummyerror(msg):
68 print("ERROR: %s" % msg)
69
70 @contextmanager
71 def captured_output():
72 new_out, new_err = StringIO(), StringIO()
73 old_out, old_err = sys.stdout, sys.stderr
74 try:
75 sys.stdout, sys.stderr = new_out, new_err
76 yield sys.stdout, sys.stderr
77 finally:
78 sys.stdout, sys.stderr = old_out, old_err
79
80 d = bb.data_smart.DataSmart()
81 bb.error = dummyerror
82
83 # Assert the function returns the right results
84 result = multiprocess_launch(testfunction, ["3", "4", "5", "6"], d, extraargs=(d,))
85 self.assertIn("Found 3", result)
86 self.assertIn("Found 4", result)
87 self.assertIn("Found 5", result)
88 self.assertIn("Found 6", result)
89 self.assertEqual(len(result), 4)
90
91 # Assert the function prints exceptions
92 with captured_output() as (out, err):
93 self.assertRaises(bb.BBHandledException, multiprocess_launch, testfunction, ["1", "2", "3", "4", "5", "6"], d, extraargs=(d,))
94 self.assertIn("KeyError: 'Invalid number 1'", out.getvalue())
95 self.assertIn("KeyError: 'Invalid number 2'", out.getvalue())