diff --git a/bake/covered/policy.rb b/bake/covered/policy.rb index 7ad8592..031d3c7 100644 --- a/bake/covered/policy.rb +++ b/bake/covered/policy.rb @@ -13,7 +13,7 @@ def initialize(context) # Load the current coverage policy. # Defaults to the default coverage path if no paths are specified. # @parameter paths [Array(String)] The coverage database paths. -def current(paths: nil) +def current(paths: nil, reports: Covered::Config.reports) policy = Covered::Policy.new # Load the default path if no paths are specified: @@ -30,6 +30,10 @@ def current(paths: nil) Covered::Persist.new(policy.output, path).load!(ignore_mtime: true) end + if reports + policy.reports!(reports) + end + return policy end diff --git a/bake/covered/validate.rb b/bake/covered/validate.rb index 6101b68..e3948d5 100644 --- a/bake/covered/validate.rb +++ b/bake/covered/validate.rb @@ -26,6 +26,8 @@ def validate(paths: nil, minimum: 1.0, input:) # Print statistics: statistics.print($stderr) + policy.call(STDOUT) + # Validate statistics and raise an error if they are not met: statistics.validate!(minimum) end diff --git a/lib/covered/config.rb b/lib/covered/config.rb index 74dd5e1..bd66239 100644 --- a/lib/covered/config.rb +++ b/lib/covered/config.rb @@ -21,11 +21,13 @@ def self.path(root) end end - def self.coverage - ENV['COVERAGE'] + def self.reports + ENV.fetch('COVERED_REPORTS') do + ENV['COVERAGE'] + end end - def self.load(root: self.root, coverage: self.coverage) + def self.load(root: self.root, reports: self.reports) derived = Class.new(self) if path = self.path(root) @@ -34,19 +36,19 @@ def self.load(root: self.root, coverage: self.coverage) derived.prepend(config) end - return derived.new(root, coverage) + return derived.new(root, reports) end - def initialize(root, coverage) + def initialize(root, reports) @root = root - @coverage = coverage + @reports = reports @policy = nil @environment = nil end def report? - !!@coverage + !!@reports end alias :record? :report? @@ -108,7 +110,7 @@ def make_policy(policy) policy.persist! - policy.reports!(@coverage) + policy.reports!(@reports) end protected diff --git a/lib/covered/policy.rb b/lib/covered/policy.rb index 6d8aa0e..6b9cbab 100644 --- a/lib/covered/policy.rb +++ b/lib/covered/policy.rb @@ -101,9 +101,9 @@ def snake_case(string) end end - def reports!(coverage) - if coverage.is_a?(String) - names = coverage.split(',') + def reports!(reports) + if reports.is_a?(String) + names = reports.split(',') names.each do |name| begin @@ -113,8 +113,14 @@ def reports!(coverage) @reports << Autoload.new(name) end end - elsif coverage + elsif reports == true @reports << Covered::BriefSummary.new + elsif reports == false + @reports.clear + elsif reports.is_a?(Array) + @reports.concat(reports) + else + @reports << reports end end