def test_multiple_sources(self, get_collection_recipients): project = self.create_project(name='test', slug='test') build = self.create_build(project, date_started=datetime.utcnow(), result=Result.failed, status=Status.finished) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource( step=step, name='console', ) self.create_logchunk( source=logsource, text='hello world', ) phase2 = self.create_jobphase(job=job, label='other') step2 = self.create_jobstep(phase=phase2) logsource2 = self.create_logsource( step=step2, name='other', ) self.create_logchunk( source=logsource2, text='hello world', ) job_link = 'http://example.com/projects/%s/builds/%s/jobs/%s/' % ( project.slug, build.id.hex, job.id.hex, ) log_link1 = '%slogs/%s/' % (job_link, logsource.id.hex) log_link2 = '%slogs/%s/' % (job_link, logsource2.id.hex) get_collection_recipients.return_value = [ '*****@*****.**', 'Bob <*****@*****.**>' ] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] assert msg.subject == '%s failed - %s' % ('D1234', job.build.label) assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>'] assert msg.extra_headers[ 'Reply-To'] == '[email protected], Bob <*****@*****.**>' assert job_link in msg.html assert job_link in msg.body assert log_link1 in msg.html assert log_link1 in msg.body assert log_link2 in msg.html assert log_link2 in msg.body assert msg.as_string()
def test_multiple_sources(self, get_collection_recipients): project = self.create_project(name='test', slug='test') build = self.create_build( project, date_started=datetime.utcnow(), result=Result.failed, status=Status.finished ) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource( step=step, name='console', ) self.create_logchunk( source=logsource, text='hello world', ) phase2 = self.create_jobphase(job=job, label='other') step2 = self.create_jobstep(phase=phase2) logsource2 = self.create_logsource( step=step2, name='other', ) self.create_logchunk( source=logsource2, text='hello world', ) job_link = 'http://example.com/projects/%s/builds/%s/jobs/%s/' % ( project.slug, build.id.hex, job.id.hex,) log_link1 = '%slogs/%s/' % (job_link, logsource.id.hex) log_link2 = '%slogs/%s/' % (job_link, logsource2.id.hex) get_collection_recipients.return_value = ['*****@*****.**', 'Bob <*****@*****.**>'] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] assert msg.subject == '%s failed - %s' % ( 'D1234', job.build.label) assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>'] assert msg.extra_headers['Reply-To'] == '[email protected], Bob <*****@*****.**>' assert job_link in msg.html assert job_link in msg.body assert log_link1 in msg.html assert log_link1 in msg.body assert log_link2 in msg.html assert log_link2 in msg.body assert msg.as_string()
def test_subject_branch(self, get_collection_recipients): project = self.create_project(name='test', slug='test') repo = project.repository branches = ['master', 'branch1'] revision = self.create_revision(repository=repo, branches=branches) source = self.create_source( project=project, revision=revision, ) build = self.create_build(project=project, source=source, label='Test diff', date_started=datetime.utcnow(), result=Result.failed, status=Status.finished) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource( step=step, name='console', ) self.create_logchunk( source=logsource, text='hello world', ) job_link = 'http://example.com/projects/%s/builds/%s/jobs/%s/' % ( project.slug, build.id.hex, job.id.hex, ) log_link = '%slogs/%s/' % (job_link, logsource.id.hex) get_collection_recipients.return_value = [ '*****@*****.**', 'Bob <*****@*****.**>' ] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] assert msg.subject == '%s failed - %s' % ('D1234', job.build.label) assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>'] assert msg.extra_headers[ 'Reply-To'] == '[email protected], Bob <*****@*****.**>' assert job_link in msg.html assert job_link in msg.body assert log_link in msg.html assert log_link in msg.body assert msg.as_string()
def test_max_shown_log(self, get_collection_recipients): project = self.create_project(name='test', slug='test') build = self.create_build(project, label='Test diff', date_started=datetime.utcnow(), result=Result.failed, status=Status.finished) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) max_shown = current_app.config.get('MAX_SHOWN_ITEMS_PER_BUILD_MAIL', 3) total_log_count = max_shown + 1 log_sources = [] for i in range(total_log_count): log_source = self.create_logsource( step=step, name='console' + str(i), ) self.create_logchunk( source=log_source, text='hello world', ) log_sources.append(log_source) get_collection_recipients.return_value = [ '*****@*****.**', 'Bob <*****@*****.**>' ] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] text_content = msg.body html_content = msg.html job_link = 'http://example.com/projects/%s/builds/%s/jobs/%s/' % ( project.slug, build.id.hex, job.id.hex, ) shown_log_count = 0 for log_source in log_sources: log_link = '%slogs/%s/' % (job_link, log_source.id.hex) if log_link in text_content: shown_log_count += 1 assert shown_log_count == max_shown shown_log_count = 0 for log_source in log_sources: log_link = '%slogs/%s/' % (job_link, log_source.id.hex) if log_link in html_content: shown_log_count += 1 assert shown_log_count == max_shown
def test_max_shown(self, get_collection_recipients): project = self.create_project(name='test', slug='test') build = self.create_build(project, label='Test diff', date_started=datetime.utcnow(), result=Result.failed, status=Status.finished) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) max_shown = current_app.config.get('MAX_SHOWN_ITEMS_PER_BUILD_MAIL', 3) total_test_count = max_shown + 1 test_cases = [] for i in range(total_test_count): test_cases.append( self.create_test( package='test.group.ClassName', name='test.group.ClassName.test_foo{}'.format(i), job=job, duration=134, result=Result.failed, )) get_collection_recipients.return_value = [ '*****@*****.**', 'Bob <*****@*****.**>' ] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] text_content = msg.body html_content = msg.html assert text_content shown_test_count = 0 for test_case in test_cases: test_link = build_context_lib._get_test_case_uri(test_case) if test_link in text_content: shown_test_count += 1 assert shown_test_count == max_shown assert html_content assert 'Showing {} out of <strong style="font-weight: bold">{}</strong>'.format( max_shown, total_test_count) in html_content assert 'See all failing tests (1 remaining)' in html_content shown_test_count = 0 for test_case in test_cases: test_link = build_context_lib._get_test_case_uri(test_case) if test_link in html_content: shown_test_count += 1 assert shown_test_count == max_shown
def test_subject_branch(self, get_collection_recipients): project = self.create_project(name='test', slug='test') repo = project.repository branches = ['master', 'branch1'] revision = self.create_revision(repository=repo, branches=branches) source = self.create_source( project=project, revision=revision, ) build = self.create_build( project=project, source=source, label='Test diff', date_started=datetime.utcnow(), result=Result.failed, status=Status.finished ) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource( step=step, name='console', ) self.create_logchunk( source=logsource, text='hello world', ) job_link = 'http://example.com/projects/%s/builds/%s/jobs/%s/' % ( project.slug, build.id.hex, job.id.hex,) log_link = '%slogs/%s/' % (job_link, logsource.id.hex) get_collection_recipients.return_value = ['*****@*****.**', 'Bob <*****@*****.**>'] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] assert msg.subject == '%s failed - %s' % ( 'D1234', job.build.label) assert msg.recipients == ['*****@*****.**', 'Bob <*****@*****.**>'] assert msg.extra_headers['Reply-To'] == '[email protected], Bob <*****@*****.**>' assert job_link in msg.html assert job_link in msg.body assert log_link in msg.html assert log_link in msg.body assert msg.as_string()
def test_max_shown_log(self, get_collection_recipients): project = self.create_project(name='test', slug='test') build = self.create_build( project, label='Test diff', date_started=datetime.utcnow(), result=Result.failed, status=Status.finished ) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) max_shown = current_app.config.get('MAX_SHOWN_ITEMS_PER_BUILD_MAIL', 3) total_log_count = max_shown + 1 log_sources = [] for i in range(total_log_count): log_source = self.create_logsource( step=step, name='console' + str(i), ) self.create_logchunk( source=log_source, text='hello world', ) log_sources.append(log_source) get_collection_recipients.return_value = ['*****@*****.**', 'Bob <*****@*****.**>'] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] text_content = msg.body html_content = msg.html job_link = 'http://example.com/projects/%s/builds/%s/jobs/%s/' % ( project.slug, build.id.hex, job.id.hex,) shown_log_count = 0 for log_source in log_sources: log_link = '%slogs/%s/' % (job_link, log_source.id.hex) if log_link in text_content: shown_log_count += 1 assert shown_log_count == max_shown shown_log_count = 0 for log_source in log_sources: log_link = '%slogs/%s/' % (job_link, log_source.id.hex) if log_link in html_content: shown_log_count += 1 assert shown_log_count == max_shown
def test_max_shown(self, get_collection_recipients): project = self.create_project(name='test', slug='test') build = self.create_build( project, label='Test diff', date_started=datetime.utcnow(), result=Result.failed, status=Status.finished ) job = self.create_job(build=build, result=Result.failed) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) max_shown = current_app.config.get('MAX_SHOWN_ITEMS_PER_BUILD_MAIL', 3) total_test_count = max_shown + 1 test_cases = [] for i in range(total_test_count): test_cases.append(self.create_test( package='test.group.ClassName', name='test.group.ClassName.test_foo{}'.format(i), job=job, duration=134, result=Result.failed, )) get_collection_recipients.return_value = ['*****@*****.**', 'Bob <*****@*****.**>'] build_finished_handler(build.id) assert len(self.outbox) == 1 msg = self.outbox[0] text_content = msg.body html_content = msg.html assert text_content shown_test_count = 0 for test_case in test_cases: test_link = build_context_lib._get_test_case_uri(test_case) if test_link in text_content: shown_test_count += 1 assert shown_test_count == max_shown assert html_content assert 'Showing {} out of <strong style="font-weight: bold">{}</strong>'.format(max_shown, total_test_count) in html_content assert 'See all failing tests (1 remaining)' in html_content shown_test_count = 0 for test_case in test_cases: test_link = build_context_lib._get_test_case_uri(test_case) if test_link in html_content: shown_test_count += 1 assert shown_test_count == max_shown