From a5bbe9a8fa8aa732a8d52686df02620b8eb71e36 Mon Sep 17 00:00:00 2001 From: Caleb Cartwright Date: Thu, 6 Dec 2018 16:07:27 -0600 Subject: [PATCH] Fix Jenkins Cobertura badge and tests (#2468) --- services/jenkins/jenkins-coverage.service.js | 8 ++++++-- services/jenkins/jenkins-coverage.tester.js | 8 ++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/services/jenkins/jenkins-coverage.service.js b/services/jenkins/jenkins-coverage.service.js index 7f6016f97c..df7ad03e42 100644 --- a/services/jenkins/jenkins-coverage.service.js +++ b/services/jenkins/jenkins-coverage.service.js @@ -22,13 +22,14 @@ const coberturaCoverageSchema = Joi.object({ elements: Joi.array() .items( Joi.object({ - name: 'Lines', + name: Joi.string().required(), ratio: Joi.number() .min(0) .max(100) .required(), }) ) + .has(Joi.object({ name: 'Lines' })) .min(1) .required(), }).required(), @@ -130,8 +131,11 @@ class CoberturaJenkinsCoverage extends BaseJenkinsCoverage { options, schema: coberturaCoverageSchema, }) + const lineCoverage = json.results.elements.filter( + element => element.name === 'Lines' + )[0] return this.constructor.render({ - coverage: json.results.elements[0].ratio, + coverage: lineCoverage.ratio, }) } diff --git a/services/jenkins/jenkins-coverage.tester.js b/services/jenkins/jenkins-coverage.tester.js index 0144eebd21..6fcd6ff56a 100644 --- a/services/jenkins/jenkins-coverage.tester.js +++ b/services/jenkins/jenkins-coverage.tester.js @@ -1,5 +1,7 @@ 'use strict' +const Joi = require('joi') +const { isIntegerPercentage } = require('../test-validators') const ServiceTester = require('../service-tester') const t = new ServiceTester({ @@ -168,3 +170,9 @@ t.create('cobertura: invalid data response (missing line coverage)') t.create('cobertura: job not found') .get('/c/https/updates.jenkins-ci.org/job/does-not-exist.json') .expectJSON({ name: 'coverage', value: 'job or coverage not found' }) + +t.create('cobertura: job found') + .get('/c/https/builds.apache.org/job/olingo-odata4-cobertura.json') + .expectJSONTypes( + Joi.object().keys({ name: 'coverage', value: isIntegerPercentage }) + )