class CircleCI::CoverageReporter::Reporters::Base
@abstract Subclass and override {.default_dir}, {.default_html_file_name},
{.default_json_file_name} and {#parse_json} to implement a custom Reporter class.
Public Class Methods
default_dir()
click to toggle source
# File lib/circleci/coverage_reporter/reporters/base.rb, line 9 def self.default_dir raise NotImplementedError end
default_html_file_name()
click to toggle source
# File lib/circleci/coverage_reporter/reporters/base.rb, line 13 def self.default_html_file_name raise NotImplementedError end
default_json_file_name()
click to toggle source
# File lib/circleci/coverage_reporter/reporters/base.rb, line 17 def self.default_json_file_name raise NotImplementedError end
new(options = {})
click to toggle source
# File lib/circleci/coverage_reporter/reporters/base.rb, line 21 def initialize(options = {}) @options = options end
Public Instance Methods
active?()
click to toggle source
@return [Boolean]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 26 def active? File.directory?(File.join(configuration.artifacts_dir, dir)) end
name()
click to toggle source
Name of reporter.
@return [String]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 45 def name self.class.name.split('::').last end
report(base_build, previous_build)
click to toggle source
@param base_build [Build, nil] @param previous_build [Build, nil] @return [Report]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 33 def report(base_build, previous_build) Report.new( self, create_current_result, base: base_build ? create_build_result(base_build) : nil, previous: previous_build ? create_build_result(previous_build) : nil ) end
Private Instance Methods
build_coverage(build)
click to toggle source
@param build [Build] @return [Float]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 95 def build_coverage(build) artifact = build.find_artifact(json_file_name, node_index: 0) or return Float::NAN parse_json(artifact.body) end
build_url(build)
click to toggle source
@param build [Build] @return [String]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 102 def build_url(build) artifact = build.find_artifact(html_file_name, node_index: 0) or return '#' artifact.url end
configuration()
click to toggle source
# File lib/circleci/coverage_reporter/reporters/base.rb, line 107 def configuration CoverageReporter.configuration end
create_build_result(build)
click to toggle source
@param build [Build, nil] @return [Result, nil]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 66 def create_build_result(build) Result.new(build_coverage(build), build_url(build)) end
create_current_result()
click to toggle source
@return [AbstractResult]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 71 def create_current_result Result.new(current_coverage, current_url) end
current_coverage()
click to toggle source
@return [Float]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 76 def current_coverage parse_json(File.read(File.join(configuration.artifacts_dir, dir, json_file_name))) end
current_url()
click to toggle source
@return [String]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 81 def current_url [ 'https://circle-artifacts.com/gh', configuration.project, configuration.current_build_number, 'artifacts', "0#{configuration.artifacts_dir}", dir, html_file_name ].join('/') end
dir()
click to toggle source
@return [String]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 52 def dir @options[:dir] || self.class.default_dir end
html_file_name()
click to toggle source
# File lib/circleci/coverage_reporter/reporters/base.rb, line 56 def html_file_name @options[:html_file_name] || self.class.default_html_file_name end
json_file_name()
click to toggle source
# File lib/circleci/coverage_reporter/reporters/base.rb, line 60 def json_file_name @options[:json_file_name] || self.class.default_json_file_name end
parse_json(json)
click to toggle source
@param json [String] @return [Float]
# File lib/circleci/coverage_reporter/reporters/base.rb, line 113 def parse_json(json) # rubocop:disable Lint/UnusedMethodArgument raise NotImplementedError end