class CircleCIReporter::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_reporter/reporters/base.rb, line 10 def self.default_dir raise NotImplementedError end
default_html_file_name()
click to toggle source
# File lib/circleci_reporter/reporters/base.rb, line 14 def self.default_html_file_name raise NotImplementedError end
default_json_file_name()
click to toggle source
# File lib/circleci_reporter/reporters/base.rb, line 18 def self.default_json_file_name raise NotImplementedError end
new(options = {})
click to toggle source
# File lib/circleci_reporter/reporters/base.rb, line 22 def initialize(options = {}) @options = options end
Public Instance Methods
active?()
click to toggle source
@return [Boolean]
# File lib/circleci_reporter/reporters/base.rb, line 27 def active? File.directory?(File.join(configuration.artifacts_dir, dir)) end
name()
click to toggle source
Name of reporter.
@return [String]
# File lib/circleci_reporter/reporters/base.rb, line 46 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_reporter/reporters/base.rb, line 34 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_reporter/reporters/base.rb, line 96 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_reporter/reporters/base.rb, line 103 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_reporter/reporters/base.rb, line 108 def configuration CircleCIReporter.configuration end
create_build_result(build)
click to toggle source
@param build [Build, nil] @return [Result, nil]
# File lib/circleci_reporter/reporters/base.rb, line 67 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_reporter/reporters/base.rb, line 72 def create_current_result Result.new(current_coverage, current_url) end
current_coverage()
click to toggle source
@return [Float]
# File lib/circleci_reporter/reporters/base.rb, line 77 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_reporter/reporters/base.rb, line 82 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_reporter/reporters/base.rb, line 53 def dir @options[:dir] || self.class.default_dir end
html_file_name()
click to toggle source
# File lib/circleci_reporter/reporters/base.rb, line 57 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_reporter/reporters/base.rb, line 61 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_reporter/reporters/base.rb, line 114 def parse_json(json) raise NotImplementedError end