Sha256: db68843b56a45d8f32f3eb0101999539b40a489eb62d32f5dc0e05682dd79ba6

Contents?: true

Size: 1.53 KB

Versions: 11

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true

require_relative 'core_ext/exec_callbacks'

module DeepCover
  module AutoRun
    class Runner
      def initialize(covered_path)
        @covered_path = covered_path
        @saved = !(DeepCover.respond_to?(:running?) && DeepCover.running?)
      end

      def run!
        after_tests { save }
        ExecCallbacks.before_exec { save }
        self
      end

      def report!(**options)
        after_tests { puts report(**options) }
        self
      end

      private

      def saved?
        @saved
      end

      def coverage
        @coverage ||= if saved?
                        Coverage.load(@covered_path, with_trackers: false)
                      else
                        DeepCover.coverage
                      end
      end

      def save
        require_relative '../deep_cover'
        coverage.save(@covered_path) unless saved?
        coverage.save_trackers(@covered_path)
      end

      def report(**options)
        coverage.report(**options)
      end

      def after_tests
        use_at_exit = true
        if defined?(Minitest)
          use_at_exit = false
          Minitest.after_run { yield }
        end
        if defined?(Rspec)
          use_at_exit = false
          RSpec.configure do |config|
            config.after(:suite) { yield }
          end
        end
        if use_at_exit
          at_exit { yield }
        end
      end
    end

    def self.run!(covered_path)
      @runners ||= {}
      @runners[covered_path] ||= Runner.new(covered_path).run!
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
deep-cover-core-0.6.4 lib/deep_cover/auto_run.rb
deep-cover-core-0.6.3 lib/deep_cover/auto_run.rb
deep-cover-core-0.6.3.pre lib/deep_cover/auto_run.rb
deep-cover-0.6.2 lib/deep_cover/auto_run.rb
deep-cover-0.6.1 lib/deep_cover/auto_run.rb
deep-cover-0.6.0 lib/deep_cover/auto_run.rb
deep-cover-0.5.7 lib/deep_cover/auto_run.rb
deep-cover-0.5.6 lib/deep_cover/auto_run.rb
deep-cover-0.5.5 lib/deep_cover/auto_run.rb
deep-cover-0.5.4 lib/deep_cover/auto_run.rb
deep-cover-0.5.3 lib/deep_cover/auto_run.rb