diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index a5ced9c8264..470b97a3c0f 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -170,7 +170,8 @@ module Ci def extract_coverage(text, regex) begin - matches = regex.match(text).to_a.last + matches = text.scan(Regexp.new(regex)).last + matches = matches.last if matches.kind_of?(Array) coverage = matches.gsub(/\d+(\.\d+)?/).first if coverage.present? diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb index 96b6f1dbca6..e3880cd9cfe 100644 --- a/spec/models/build_spec.rb +++ b/spec/models/build_spec.rb @@ -189,6 +189,12 @@ describe Ci::Build, models: true do it { is_expected.to eq(98.29) } end + + context 'using a regex capture' do + subject { build.extract_coverage('TOTAL 9926 3489 65%', 'TOTAL\s+\d+\s+\d+\s+(\d{1,3}\%)') } + + it { is_expected.to eq(65) } + end end describe :variables do