Sha256: 7d190f7c4f34a8b8d2bfeb5ea3264ff956ae5551343a6f7ae2c416e5476a731f

Contents?: true

Size: 1.24 KB

Versions: 38

Compression:

Stored size: 1.24 KB

Contents

module ParallelTests
  module Cucumber
    class RuntimeLogger
      def initialize(step_mother, path_or_io, options=nil)
        @io = prepare_io(path_or_io)
        @example_times = Hash.new(0)
      end

      def before_feature(_)
        @start_at = Time.now.to_f
      end

      def after_feature(feature)
        @example_times[feature.file] += Time.now.to_f - @start_at
      end

      def after_features(*args)
        lock_output do
          @io.puts @example_times.map { |file, time| "#{file}:#{time}" }
        end
      end

      private

      def prepare_io(path_or_io)
        if path_or_io.respond_to?(:write)
          path_or_io
        else # its a path
          File.open(path_or_io, 'w').close # clean out the file
          file = File.open(path_or_io, 'a')

          at_exit do
            unless file.closed?
              file.flush
              file.close
            end
          end

          file
        end
      end

      # do not let multiple processes get in each others way
      def lock_output
        if File === @io
          begin
            @io.flock File::LOCK_EX
            yield
          ensure
            @io.flock File::LOCK_UN
          end
        else
          yield
        end
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 2 rubygems

Version Path
parallel_tests-0.11.1 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.11.0 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.10.4 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.10.3 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.10.2 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.10.1 lib/parallel_tests/cucumber/runtime_logger.rb
friendlyfashion-parallel_tests-0.9.0 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.10.0 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.9.4 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.9.3 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.9.2 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.9.1 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.9.0 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.8.14 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.8.13 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.8.12 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.8.11 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.8.10 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.8.9 lib/parallel_tests/cucumber/runtime_logger.rb
parallel_tests-0.8.8 lib/parallel_tests/cucumber/runtime_logger.rb