예제 #1
0
파일: builder.py 프로젝트: amitdash/changes
    def _sync_artifact_as_coverage(self, jobstep, artifact):
        resp = self.fetch_artifact(jobstep, artifact)

        # TODO(dcramer): requests doesnt seem to provide a non-binary file-like
        # API, so we're stuffing it into StringIO
        handler = CoverageHandler(jobstep)
        handler.process(StringIO(resp.content))
예제 #2
0
파일: builder.py 프로젝트: davej/changes
    def _sync_artifact_as_coverage(self, jobstep, artifact):
        resp = self.fetch_artifact(jobstep, artifact)

        # TODO(dcramer): requests doesnt seem to provide a non-binary file-like
        # API, so we're stuffing it into StringIO
        handler = CoverageHandler(jobstep)
        handler.process(StringIO(resp.content))
예제 #3
0
파일: builder.py 프로젝트: ghotiv/changes
    def _sync_artifact_as_coverage(self, jobstep, job_name, build_no, artifact):
        url = '{base}/job/{job}/{build}/artifact/{artifact}'.format(
            base=self.base_url, job=job_name,
            build=build_no, artifact=artifact['relativePath'],
        )

        resp = requests.get(url, stream=True, timeout=15)

        # TODO(dcramer): requests doesnt seem to provide a non-binary file-like
        # API, so we're stuffing it into StringIO
        handler = CoverageHandler(jobstep)
        handler.process(StringIO(resp.content))
예제 #4
0
파일: builder.py 프로젝트: zbyufei/changes
    def _sync_artifact_as_coverage(self, jobstep, artifact):
        resp = self.fetch_artifact(jobstep, artifact)

        # TODO(dcramer): requests doesnt seem to provide a non-binary file-like
        # API, so we're stuffing it into StringIO
        try:
            handler = CoverageHandler(jobstep)
            handler.process(StringIO(resp.content))
        except Exception:
            db.session.rollback()
            self.logger.exception(
                'Failed to sync test results for job step %s', jobstep.id)
        else:
            db.session.commit()
예제 #5
0
    def test_simple(self, process_diff, get_coverage):
        project = self.create_project()
        build = self.create_build(project)
        job = self.create_job(build)
        jobphase = self.create_jobphase(job)
        jobstep = self.create_jobstep(jobphase)

        handler = CoverageHandler(jobstep)

        process_diff.return_value = {
            'setup.py': set([1, 2, 3, 4, 5]),
        }

        # now try with some duplicate coverage
        get_coverage.return_value = [FileCoverage(
            job_id=job.id,
            step_id=jobstep.id,
            project_id=project.id,
            filename='setup.py',
            data='CUNNNNCCNNNUNNNUUUUUU'
        )]

        fp = StringIO()
        handler.process(fp)
        get_coverage.assert_called_once_with(fp)

        get_coverage.reset_mock()

        get_coverage.return_value = [FileCoverage(
            job_id=job.id,
            step_id=jobstep.id,
            project_id=project.id,
            filename='setup.py',
            data='NUUNNNNNNNNUCCNU'
        )]

        fp = StringIO()
        handler.process(fp)
        get_coverage.assert_called_once_with(fp)

        file_cov = list(FileCoverage.query.filter(
            FileCoverage.job_id == job.id,
        ))
        assert len(file_cov) == 1
        assert file_cov[0].filename == 'setup.py'
        assert file_cov[0].data == 'CUUNNNCCNNNUCCNUUUUUU'
        assert file_cov[0].lines_covered == 5
        assert file_cov[0].lines_uncovered == 9
        assert file_cov[0].diff_lines_covered == 1
        assert file_cov[0].diff_lines_uncovered == 2
예제 #6
0
def test_result_generation():
    jobstep = JobStep(id=uuid.uuid4(),
                      job=Job(id=uuid.uuid4(), project_id=uuid.uuid4()))

    fp = StringIO(SAMPLE_COVERAGE)

    handler = CoverageHandler(jobstep)
    results = handler.get_coverage(fp)

    assert len(results) == 2

    r1 = results[0]
    assert type(r1) == FileCoverage
    assert r1.job_id == jobstep.job.id
    assert r1.project_id == jobstep.job.project_id
    assert r1.filename == 'setup.py'
    assert r1.data == 'NUNNNNNNNNNUCCNU'
    r2 = results[1]
    assert type(r2) == FileCoverage
    assert r2.job_id == jobstep.job.id
    assert r2.project_id == jobstep.job.project_id
    assert r2.data == 'CCCNNNU'
예제 #7
0
def test_result_generation():
    jobstep = JobStep(
        id=uuid.uuid4(),
        job=Job(id=uuid.uuid4(), project_id=uuid.uuid4())
    )

    fp = StringIO(SAMPLE_COVERAGE)

    handler = CoverageHandler(jobstep)
    results = handler.get_coverage(fp)

    assert len(results) == 2

    r1 = results[0]
    assert type(r1) == FileCoverage
    assert r1.job_id == jobstep.job.id
    assert r1.project_id == jobstep.job.project_id
    assert r1.filename == 'setup.py'
    assert r1.data == 'NUNNNNNNNNNUCCNU'
    r2 = results[1]
    assert type(r2) == FileCoverage
    assert r2.job_id == jobstep.job.id
    assert r2.project_id == jobstep.job.project_id
    assert r2.data == 'CCCNNNU'