Sha256: 97979d258e8c763fd996ff1496e08ebdb4f09c123e715cf907331486c573f1d8

Contents?: true

Size: 1.13 KB

Versions: 6

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

# Released under the MIT License.
# Copyright, 2018-2023, by Samuel Williams.

require_relative 'wrapper'
require_relative 'coverage'

module Covered
	class CoverageError < StandardError
	end
	
	class Statistics < Wrapper
		def initialize
			@count = 0
			@executable_count = 0
			@executed_count = 0
		end
		
		# Total number of files added.
		attr :count
		
		# The number of lines which could have been executed.
		attr :executable_count
		
		# The number of lines that were executed.
		attr :executed_count
		
		def << coverage
			@count += 1
			
			@executable_count += coverage.executable_count
			@executed_count += coverage.executed_count
		end
		
		include Ratio
		
		def print(output)
			output.puts "* #{count} files checked; #{executed_count}/#{executable_count} lines executed; #{percentage.to_f.round(2)}% covered."
			
			# Could output funny message here, especially for 100% coverage.
		end
		
		def validate!(minimum = 1.0)
			if self.ratio < minimum
				raise CoverageError, "Coverage of #{self.percentage.to_f.round(2)}% is less than required minimum of #{(minimum * 100.0).round(2)}%!"
			end
		end
	end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
covered-0.22.1 lib/covered/statistics.rb
covered-0.22.0 lib/covered/statistics.rb
covered-0.21.0 lib/covered/statistics.rb
covered-0.20.2 lib/covered/statistics.rb
covered-0.20.1 lib/covered/statistics.rb
covered-0.20.0 lib/covered/statistics.rb