Example #1
0
    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()
Example #2
0
    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()
Example #3
0
    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()
Example #4
0
    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
Example #5
0
    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
Example #6
0
    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()
Example #7
0
    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
Example #8
0
    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