Sha256: 11ae2e25a6a5d3e80ee2c84fbc64b7dede71c63d57c5351cadea9f5af9a1491b

Contents?: true

Size: 1.39 KB

Versions: 8

Compression:

Stored size: 1.39 KB

Contents

module KnapsackPro
  class Tracker
    include Singleton

    attr_reader :global_time, :test_files_with_time
    attr_writer :current_test_path

    def initialize
      set_defaults
    end

    def reset!
      set_defaults
    end

    def start_timer
      @start_time = now_without_mock_time.to_f
    end

    def stop_timer
      @execution_time = @start_time ? now_without_mock_time.to_f - @start_time : 0.0
      update_global_time
      update_test_file_time
      @execution_time
    end

    def current_test_path
      raise("current_test_path needs to be set by Knapsack Pro Adapter's bind method") unless @current_test_path
      @current_test_path.sub(/^\.\//, '')
    end

    def to_a
      test_files = []
      @test_files_with_time.each do |path, time_execution|
        test_files << {
          path: path,
          time_execution: time_execution
        }
      end
      test_files
    end

    private

    def set_defaults
      @global_time = 0
      @test_files_with_time = {}
      @test_path = nil
    end

    def update_global_time
      @global_time += @execution_time
    end

    def update_test_file_time
      @test_files_with_time[current_test_path] ||= 0
      @test_files_with_time[current_test_path] += @execution_time
    end

    def now_without_mock_time
      if defined?(Timecop)
        Time.now_without_mock_time
      else
        Time.raw_now
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
knapsack_pro-0.46.0 lib/knapsack_pro/tracker.rb
knapsack_pro-0.45.0 lib/knapsack_pro/tracker.rb
knapsack_pro-0.44.0 lib/knapsack_pro/tracker.rb
knapsack_pro-0.43.0 lib/knapsack_pro/tracker.rb
knapsack_pro-0.42.0 lib/knapsack_pro/tracker.rb
knapsack_pro-0.41.0 lib/knapsack_pro/tracker.rb
knapsack_pro-0.40.0 lib/knapsack_pro/tracker.rb
knapsack_pro-0.39.0 lib/knapsack_pro/tracker.rb