diff options
Diffstat (limited to 'bitbake/lib/toaster/toastergui/tests.py')
| -rw-r--r-- | bitbake/lib/toaster/toastergui/tests.py | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/bitbake/lib/toaster/toastergui/tests.py b/bitbake/lib/toaster/toastergui/tests.py index eebd1b79ba..a4cab58483 100644 --- a/bitbake/lib/toaster/toastergui/tests.py +++ b/bitbake/lib/toaster/toastergui/tests.py | |||
| @@ -492,90 +492,3 @@ class ViewTests(TestCase): | |||
| 492 | page_two_data, | 492 | page_two_data, |
| 493 | "Changed page on table %s but first row is the " | 493 | "Changed page on table %s but first row is the " |
| 494 | "same as the previous page" % name) | 494 | "same as the previous page" % name) |
| 495 | |||
| 496 | class BuildDashboardTests(TestCase): | ||
| 497 | """ Tests for the build dashboard /build/X """ | ||
| 498 | |||
| 499 | def setUp(self): | ||
| 500 | bbv = BitbakeVersion.objects.create(name="bbv1", giturl="/tmp/", | ||
| 501 | branch="master", dirpath="") | ||
| 502 | release = Release.objects.create(name="release1", | ||
| 503 | bitbake_version=bbv) | ||
| 504 | project = Project.objects.create_project(name=PROJECT_NAME, | ||
| 505 | release=release) | ||
| 506 | |||
| 507 | now = timezone.now() | ||
| 508 | |||
| 509 | self.build1 = Build.objects.create(project=project, | ||
| 510 | started_on=now, | ||
| 511 | completed_on=now) | ||
| 512 | |||
| 513 | # exception | ||
| 514 | msg1 = 'an exception was thrown' | ||
| 515 | self.exception_message = LogMessage.objects.create( | ||
| 516 | build=self.build1, | ||
| 517 | level=LogMessage.EXCEPTION, | ||
| 518 | message=msg1 | ||
| 519 | ) | ||
| 520 | |||
| 521 | # critical | ||
| 522 | msg2 = 'a critical error occurred' | ||
| 523 | self.critical_message = LogMessage.objects.create( | ||
| 524 | build=self.build1, | ||
| 525 | level=LogMessage.CRITICAL, | ||
| 526 | message=msg2 | ||
| 527 | ) | ||
| 528 | |||
| 529 | def _get_build_dashboard_errors(self): | ||
| 530 | """ | ||
| 531 | Get a list of HTML fragments representing the errors on the | ||
| 532 | build dashboard | ||
| 533 | """ | ||
| 534 | url = reverse('builddashboard', args=(self.build1.id,)) | ||
| 535 | response = self.client.get(url) | ||
| 536 | soup = BeautifulSoup(response.content) | ||
| 537 | return soup.select('#errors div.alert-error') | ||
| 538 | |||
| 539 | def _check_for_log_message(self, log_message): | ||
| 540 | """ | ||
| 541 | Check whether the LogMessage instance <log_message> is | ||
| 542 | represented as an HTML error in the build dashboard page | ||
| 543 | """ | ||
| 544 | errors = self._get_build_dashboard_errors() | ||
| 545 | self.assertEqual(len(errors), 2) | ||
| 546 | |||
| 547 | expected_text = log_message.message | ||
| 548 | expected_id = str(log_message.id) | ||
| 549 | |||
| 550 | found = False | ||
| 551 | for error in errors: | ||
| 552 | error_text = error.find('pre').text | ||
| 553 | text_matches = (error_text == expected_text) | ||
| 554 | |||
| 555 | error_id = error['data-error'] | ||
| 556 | id_matches = (error_id == expected_id) | ||
| 557 | |||
| 558 | if text_matches and id_matches: | ||
| 559 | found = True | ||
| 560 | break | ||
| 561 | |||
| 562 | template_vars = (expected_text, error_text, | ||
| 563 | expected_id, error_id) | ||
| 564 | assertion_error_msg = 'exception not found as error: ' \ | ||
| 565 | 'expected text "%s" and got "%s"; ' \ | ||
| 566 | 'expected ID %s and got %s' % template_vars | ||
| 567 | self.assertTrue(found, assertion_error_msg) | ||
| 568 | |||
| 569 | def test_exceptions_show_as_errors(self): | ||
| 570 | """ | ||
| 571 | LogMessages with level EXCEPTION should display in the errors | ||
| 572 | section of the page | ||
| 573 | """ | ||
| 574 | self._check_for_log_message(self.exception_message) | ||
| 575 | |||
| 576 | def test_criticals_show_as_errors(self): | ||
| 577 | """ | ||
| 578 | LogMessages with level CRITICAL should display in the errors | ||
| 579 | section of the page | ||
| 580 | """ | ||
| 581 | self._check_for_log_message(self.critical_message) | ||
