diff options
Diffstat (limited to 'bitbake/lib/bb/tests/event.py')
-rw-r--r-- | bitbake/lib/bb/tests/event.py | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/bitbake/lib/bb/tests/event.py b/bitbake/lib/bb/tests/event.py index 9ca7e9bc8e..ef61891d30 100644 --- a/bitbake/lib/bb/tests/event.py +++ b/bitbake/lib/bb/tests/event.py | |||
@@ -13,6 +13,7 @@ import pickle | |||
13 | import threading | 13 | import threading |
14 | import time | 14 | import time |
15 | import unittest | 15 | import unittest |
16 | import tempfile | ||
16 | from unittest.mock import Mock | 17 | from unittest.mock import Mock |
17 | from unittest.mock import call | 18 | from unittest.mock import call |
18 | 19 | ||
@@ -157,7 +158,7 @@ class EventHandlingTest(unittest.TestCase): | |||
157 | self._test_process.event_handler, | 158 | self._test_process.event_handler, |
158 | event, | 159 | event, |
159 | None) | 160 | None) |
160 | self._test_process.event_handler.assert_called_once_with(event) | 161 | self._test_process.event_handler.assert_called_once_with(event, None) |
161 | 162 | ||
162 | def test_fire_class_handlers(self): | 163 | def test_fire_class_handlers(self): |
163 | """ Test fire_class_handlers method """ | 164 | """ Test fire_class_handlers method """ |
@@ -175,10 +176,10 @@ class EventHandlingTest(unittest.TestCase): | |||
175 | bb.event.fire_class_handlers(event1, None) | 176 | bb.event.fire_class_handlers(event1, None) |
176 | bb.event.fire_class_handlers(event2, None) | 177 | bb.event.fire_class_handlers(event2, None) |
177 | bb.event.fire_class_handlers(event2, None) | 178 | bb.event.fire_class_handlers(event2, None) |
178 | expected_event_handler1 = [call(event1)] | 179 | expected_event_handler1 = [call(event1, None)] |
179 | expected_event_handler2 = [call(event1), | 180 | expected_event_handler2 = [call(event1, None), |
180 | call(event2), | 181 | call(event2, None), |
181 | call(event2)] | 182 | call(event2, None)] |
182 | self.assertEqual(self._test_process.event_handler1.call_args_list, | 183 | self.assertEqual(self._test_process.event_handler1.call_args_list, |
183 | expected_event_handler1) | 184 | expected_event_handler1) |
184 | self.assertEqual(self._test_process.event_handler2.call_args_list, | 185 | self.assertEqual(self._test_process.event_handler2.call_args_list, |
@@ -205,7 +206,7 @@ class EventHandlingTest(unittest.TestCase): | |||
205 | bb.event.fire_class_handlers(event2, None) | 206 | bb.event.fire_class_handlers(event2, None) |
206 | bb.event.fire_class_handlers(event2, None) | 207 | bb.event.fire_class_handlers(event2, None) |
207 | expected_event_handler1 = [] | 208 | expected_event_handler1 = [] |
208 | expected_event_handler2 = [call(event1)] | 209 | expected_event_handler2 = [call(event1, None)] |
209 | self.assertEqual(self._test_process.event_handler1.call_args_list, | 210 | self.assertEqual(self._test_process.event_handler1.call_args_list, |
210 | expected_event_handler1) | 211 | expected_event_handler1) |
211 | self.assertEqual(self._test_process.event_handler2.call_args_list, | 212 | self.assertEqual(self._test_process.event_handler2.call_args_list, |
@@ -223,7 +224,7 @@ class EventHandlingTest(unittest.TestCase): | |||
223 | self.assertEqual(result, bb.event.Registered) | 224 | self.assertEqual(result, bb.event.Registered) |
224 | bb.event.fire_class_handlers(event1, None) | 225 | bb.event.fire_class_handlers(event1, None) |
225 | bb.event.fire_class_handlers(event2, None) | 226 | bb.event.fire_class_handlers(event2, None) |
226 | expected = [call(event1), call(event2)] | 227 | expected = [call(event1, None), call(event2, None)] |
227 | self.assertEqual(self._test_process.event_handler1.call_args_list, | 228 | self.assertEqual(self._test_process.event_handler1.call_args_list, |
228 | expected) | 229 | expected) |
229 | 230 | ||
@@ -237,7 +238,7 @@ class EventHandlingTest(unittest.TestCase): | |||
237 | self.assertEqual(result, bb.event.Registered) | 238 | self.assertEqual(result, bb.event.Registered) |
238 | bb.event.fire_class_handlers(event1, None) | 239 | bb.event.fire_class_handlers(event1, None) |
239 | bb.event.fire_class_handlers(event2, None) | 240 | bb.event.fire_class_handlers(event2, None) |
240 | expected = [call(event1), call(event2), call(event1)] | 241 | expected = [call(event1, None), call(event2, None), call(event1, None)] |
241 | self.assertEqual(self._test_process.event_handler1.call_args_list, | 242 | self.assertEqual(self._test_process.event_handler1.call_args_list, |
242 | expected) | 243 | expected) |
243 | 244 | ||
@@ -251,7 +252,7 @@ class EventHandlingTest(unittest.TestCase): | |||
251 | self.assertEqual(result, bb.event.Registered) | 252 | self.assertEqual(result, bb.event.Registered) |
252 | bb.event.fire_class_handlers(event1, None) | 253 | bb.event.fire_class_handlers(event1, None) |
253 | bb.event.fire_class_handlers(event2, None) | 254 | bb.event.fire_class_handlers(event2, None) |
254 | expected = [call(event1), call(event2), call(event1), call(event2)] | 255 | expected = [call(event1,None), call(event2, None), call(event1, None), call(event2, None)] |
255 | self.assertEqual(self._test_process.event_handler1.call_args_list, | 256 | self.assertEqual(self._test_process.event_handler1.call_args_list, |
256 | expected) | 257 | expected) |
257 | 258 | ||
@@ -359,9 +360,10 @@ class EventHandlingTest(unittest.TestCase): | |||
359 | 360 | ||
360 | event1 = bb.event.ConfigParsed() | 361 | event1 = bb.event.ConfigParsed() |
361 | bb.event.fire(event1, None) | 362 | bb.event.fire(event1, None) |
362 | expected = [call(event1)] | 363 | expected = [call(event1, None)] |
363 | self.assertEqual(self._test_process.event_handler1.call_args_list, | 364 | self.assertEqual(self._test_process.event_handler1.call_args_list, |
364 | expected) | 365 | expected) |
366 | expected = [call(event1)] | ||
365 | self.assertEqual(self._test_ui1.event.send.call_args_list, | 367 | self.assertEqual(self._test_ui1.event.send.call_args_list, |
366 | expected) | 368 | expected) |
367 | 369 | ||
@@ -450,10 +452,9 @@ class EventHandlingTest(unittest.TestCase): | |||
450 | and disable threadlocks tests """ | 452 | and disable threadlocks tests """ |
451 | bb.event.fire(bb.event.OperationStarted(), None) | 453 | bb.event.fire(bb.event.OperationStarted(), None) |
452 | 454 | ||
453 | def test_enable_threadlock(self): | 455 | def test_event_threadlock(self): |
454 | """ Test enable_threadlock method """ | 456 | """ Test enable_threadlock method """ |
455 | self._set_threadlock_test_mockups() | 457 | self._set_threadlock_test_mockups() |
456 | bb.event.enable_threadlock() | ||
457 | self._set_and_run_threadlock_test_workers() | 458 | self._set_and_run_threadlock_test_workers() |
458 | # Calls to UI handlers should be in order as all the registered | 459 | # Calls to UI handlers should be in order as all the registered |
459 | # handlers for the event coming from the first worker should be | 460 | # handlers for the event coming from the first worker should be |
@@ -461,20 +462,6 @@ class EventHandlingTest(unittest.TestCase): | |||
461 | self.assertEqual(self._threadlock_test_calls, | 462 | self.assertEqual(self._threadlock_test_calls, |
462 | ["w1_ui1", "w1_ui2", "w2_ui1", "w2_ui2"]) | 463 | ["w1_ui1", "w1_ui2", "w2_ui1", "w2_ui2"]) |
463 | 464 | ||
464 | |||
465 | def test_disable_threadlock(self): | ||
466 | """ Test disable_threadlock method """ | ||
467 | self._set_threadlock_test_mockups() | ||
468 | bb.event.disable_threadlock() | ||
469 | self._set_and_run_threadlock_test_workers() | ||
470 | # Calls to UI handlers should be intertwined together. Thanks to the | ||
471 | # delay in the registered handlers for the event coming from the first | ||
472 | # worker, the event coming from the second worker starts being | ||
473 | # processed before finishing handling the first worker event. | ||
474 | self.assertEqual(self._threadlock_test_calls, | ||
475 | ["w1_ui1", "w2_ui1", "w1_ui2", "w2_ui2"]) | ||
476 | |||
477 | |||
478 | class EventClassesTest(unittest.TestCase): | 465 | class EventClassesTest(unittest.TestCase): |
479 | """ Event classes test class """ | 466 | """ Event classes test class """ |
480 | 467 | ||
@@ -482,6 +469,8 @@ class EventClassesTest(unittest.TestCase): | |||
482 | 469 | ||
483 | def setUp(self): | 470 | def setUp(self): |
484 | bb.event.worker_pid = EventClassesTest._worker_pid | 471 | bb.event.worker_pid = EventClassesTest._worker_pid |
472 | self.d = bb.data.init() | ||
473 | bb.parse.siggen = bb.siggen.init(self.d) | ||
485 | 474 | ||
486 | def test_Event(self): | 475 | def test_Event(self): |
487 | """ Test the Event base class """ | 476 | """ Test the Event base class """ |
@@ -964,3 +953,24 @@ class EventClassesTest(unittest.TestCase): | |||
964 | event = bb.event.FindSigInfoResult(result) | 953 | event = bb.event.FindSigInfoResult(result) |
965 | self.assertEqual(event.result, result) | 954 | self.assertEqual(event.result, result) |
966 | self.assertEqual(event.pid, EventClassesTest._worker_pid) | 955 | self.assertEqual(event.pid, EventClassesTest._worker_pid) |
956 | |||
957 | def test_lineno_in_eventhandler(self): | ||
958 | # The error lineno is 5, not 4 since the first line is '\n' | ||
959 | error_line = """ | ||
960 | # Comment line1 | ||
961 | # Comment line2 | ||
962 | python test_lineno_in_eventhandler() { | ||
963 | This is an error line | ||
964 | } | ||
965 | addhandler test_lineno_in_eventhandler | ||
966 | test_lineno_in_eventhandler[eventmask] = "bb.event.ConfigParsed" | ||
967 | """ | ||
968 | |||
969 | with self.assertLogs() as logs: | ||
970 | f = tempfile.NamedTemporaryFile(suffix = '.bb') | ||
971 | f.write(bytes(error_line, "utf-8")) | ||
972 | f.flush() | ||
973 | d = bb.parse.handle(f.name, self.d)[''] | ||
974 | |||
975 | output = "".join(logs.output) | ||
976 | self.assertTrue(" line 5\n" in output) | ||