Sha256: a85306ed1580c112cfd316fcf5a178f575ac23a7c9044c163389aafb2b69fe84

Contents?: true

Size: 1.04 KB

Versions: 15

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

module DeepCover
  module Node::Mixin
    module HasTracker
      def self.included(base)
        base.extend ClassMethods
      end
      TRACKERS = {}

      def initialize(*)
        @tracker_offset = covered_code.allocate_trackers(self.class::TRACKERS.size).begin
        super
      end

      def tracker_sources
        self.class::TRACKERS.map do |name, _|
          [:"#{name}_tracker", send(:"#{name}_tracker_source")]
        end.to_h
      end

      module ClassMethods
        def inherited(base)
          base.const_set :TRACKERS, self::TRACKERS.dup
          super
        end

        def has_tracker(name)
          i = self::TRACKERS[name] = self::TRACKERS.size
          class_eval <<-EVAL, __FILE__, __LINE__ + 1
            def #{name}_tracker_source
              covered_code.increment_tracker_source(@tracker_offset + #{i})
            end
            def #{name}_tracker_hits
              covered_code.tracker_hits[@tracker_offset + #{i}]
            end
          EVAL
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
deep-cover-core-1.1.0 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-1.0.0 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.8.1 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.8.0 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.10 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.9 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.8 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.7 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.6 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.5 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.4 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.3 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.2 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.1 lib/deep_cover/node/mixin/has_tracker.rb
deep-cover-core-0.7.0 lib/deep_cover/node/mixin/has_tracker.rb