def test_last_build_not_finished(self): self.create_build('0', datetime=h(10)) ProjectStatus.create(self.project) b1 = self.create_build('1', datetime=h(5)) self.create_build('2', datetime=h(4), create_test_run=False) status = ProjectStatus.create(self.project) self.assertEqual(b1, status.build)
def test_status_of_second_build(self): self.create_build('1') status1 = ProjectStatus.create(self.project) build2 = self.create_build('2') status2 = ProjectStatus.create(self.project) self.assertEqual(status1, status2.previous) self.assertEqual(build2, status2.build)
def test_status_with_multiple_builds(self): self.create_build('1', datetime=h(10)) ProjectStatus.create(self.project) b1 = self.create_build('2', datetime=h(5)) b2 = self.create_build('3', datetime=h(4)) status = ProjectStatus.create(self.project) self.assertEqual([b1, b2], list(status.builds))
def setUp(self): t0 = timezone.now() - relativedelta(hours=3) t = timezone.now() - relativedelta(hours=3) self.group = Group.objects.create(slug='mygroup') self.project = self.group.projects.create(slug='myproject') self.project.builds.create(version='1', datetime=t0) ProjectStatus.create(self.project) self.project.builds.create(version='2', datetime=t)
def test_status_with_multiple_builds(self): self.create_build('1', datetime=timezone.now() - relativedelta(hours=10)) ProjectStatus.create(self.project) b1 = self.create_build('2', datetime=timezone.now() - relativedelta(hours=5)) b2 = self.create_build('3', datetime=timezone.now() - relativedelta(hours=4)) status = ProjectStatus.create(self.project) self.assertEqual([b1, b2], list(status.builds))
def test_metrics_summary(self): build = self.create_build('1', datetime=h(10)) test_run = build.test_runs.first() test_run.metrics.create(name='foo', suite=self.suite, result=2) test_run.metrics.create(name='bar', suite=self.suite, result=2) status = ProjectStatus.create(self.project) self.assertEqual(2.0, status.metrics_summary)
def send_notification(project): """ E-mails a project status change notification to all subscribed email addresses. This should almost always be invoked in a background process. """ project_status = ProjectStatus.create(project) if not project_status: return for notification in get_notifications(project_status): __send_notification__(project, notification)
def test_test_summary(self): build = self.create_build('1', datetime=h(10)) test_run = build.test_runs.first() test_run.tests.create(name='foo', suite=self.suite, result=True) test_run.tests.create(name='foo', suite=self.suite, result=False) test_run.tests.create(name='foo', suite=self.suite, result=None) status = ProjectStatus.create(self.project) self.assertEqual(1, status.tests_pass) self.assertEqual(1, status.tests_fail) self.assertEqual(1, status.tests_skip) self.assertEqual(3, status.tests_total)
def test_first_build(self): build = self.create_build('1') status = ProjectStatus.create(self.project) self.assertEqual(build, status.build)
def test_wait_for_build_completion(self): self.create_build('1', datetime=h(1), create_test_run=False) status = ProjectStatus.create(self.project) self.assertIsNone(status)
def test_dont_record_the_same_status_twice(self): self.create_build('1') ProjectStatus.create(self.project) self.assertIsNone(ProjectStatus.create(self.project)) self.assertEqual(1, ProjectStatus.objects.count())
def test_status_of_first_build(self): build = self.create_build('1') status = ProjectStatus.create(self.project) self.assertEqual(build, status.build) self.assertIsNone(status.previous)
def test_status_without_builds(self): status = ProjectStatus.create(self.project) self.assertIsNone(status) self.assertEqual(0, ProjectStatus.objects.count())
def test_wait_for_build_completion(self): self.create_build('1', datetime=timezone.now() - relativedelta(hours=1)) status = ProjectStatus.create(self.project) self.assertIsNone(status)