test-prof 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +1 -1
- data/lib/test_prof.rb +1 -1
- data/lib/test_prof/any_fixture.rb +6 -6
- data/lib/test_prof/any_fixture/dump.rb +4 -4
- data/lib/test_prof/before_all.rb +2 -2
- data/lib/test_prof/event_prof/custom_events.rb +1 -1
- data/lib/test_prof/event_prof/instrumentations/active_support.rb +1 -1
- data/lib/test_prof/event_prof/profiler.rb +3 -4
- data/lib/test_prof/factory_prof.rb +1 -1
- data/lib/test_prof/recipes/logging.rb +1 -1
- data/lib/test_prof/recipes/minitest/before_all.rb +2 -2
- data/lib/test_prof/recipes/rspec/before_all.rb +1 -1
- data/lib/test_prof/recipes/rspec/let_it_be.rb +3 -6
- data/lib/test_prof/rspec_dissect.rb +2 -2
- data/lib/test_prof/ruby_prof.rb +11 -9
- data/lib/test_prof/utils/sized_ordered_set.rb +2 -2
- data/lib/test_prof/version.rb +1 -1
- metadata +6 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c3ea5b7078b12209f32a60554f25acffccd184bdf852ebfe14cad161ded2c180
         | 
| 4 | 
            +
              data.tar.gz: 34e61ec6d58e5688b441ea09c1be524ae563f9ca82f334541c3f2c3197787cbd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d866bfe03650d81cb2dd5b698b5de5703a8fa505c7c8d0b0e4283b8130eb774ac43c5cca6a750fef6f8342acdec7e518613489e898fd354f133e1793df833e45
         | 
| 7 | 
            +
              data.tar.gz: cf92cef8973837d2e09ff3bcc4449fb0675ebfca3f10fc75a314f10d885ad92aaae2f6fac0cd99e7250eb57985208e6d6f53b88d101f177709a172b8fcae1815
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -32,7 +32,7 @@ TestProf toolbox aims to help you identify bottlenecks in your test suite. It co | |
| 32 32 | 
             
            📑 [Documentation](https://test-prof.evilmartians.io)
         | 
| 33 33 |  | 
| 34 34 | 
             
            <p align="center">
         | 
| 35 | 
            -
              <a href="http://bit.ly/test-prof-map">
         | 
| 35 | 
            +
              <a href="http://bit.ly/test-prof-map-v1">
         | 
| 36 36 | 
             
                <img src="./docs/assets/images/coggle.png" alt="TestProf map" width="738">
         | 
| 37 37 | 
             
              </a>
         | 
| 38 38 | 
             
            </p>
         | 
    
        data/lib/test_prof.rb
    CHANGED
    
    | @@ -161,5 +161,5 @@ require "test_prof/factory_doctor" | |
| 161 161 | 
             
            require "test_prof/factory_prof"
         | 
| 162 162 | 
             
            require "test_prof/rspec_stamp"
         | 
| 163 163 | 
             
            require "test_prof/tag_prof"
         | 
| 164 | 
            -
            require "test_prof/rspec_dissect"
         | 
| 164 | 
            +
            require "test_prof/rspec_dissect" if TestProf.rspec?
         | 
| 165 165 | 
             
            require "test_prof/factory_all_stub"
         | 
| @@ -6,7 +6,7 @@ require "test_prof/any_fixture/dump" | |
| 6 6 | 
             
            module TestProf
         | 
| 7 7 | 
             
              # Make DB fixtures from blocks.
         | 
| 8 8 | 
             
              module AnyFixture
         | 
| 9 | 
            -
                INSERT_RXP = /^INSERT INTO ( | 
| 9 | 
            +
                INSERT_RXP = /^INSERT INTO (\S+)/.freeze
         | 
| 10 10 |  | 
| 11 11 | 
             
                using FloatDuration
         | 
| 12 12 |  | 
| @@ -16,8 +16,8 @@ module TestProf | |
| 16 16 | 
             
                    :import_dump_via_cli, :dump_matching_queries, :force_matching_dumps
         | 
| 17 17 | 
             
                  attr_reader :default_dump_watch_paths
         | 
| 18 18 |  | 
| 19 | 
            -
                   | 
| 20 | 
            -
                   | 
| 19 | 
            +
                  alias_method :reporting_enabled?, :reporting_enabled
         | 
| 20 | 
            +
                  alias_method :import_dump_via_cli?, :import_dump_via_cli
         | 
| 21 21 |  | 
| 22 22 | 
             
                  def initialize
         | 
| 23 23 | 
             
                    @reporting_enabled = ENV["ANYFIXTURE_REPORT"] == "1"
         | 
| @@ -42,7 +42,7 @@ module TestProf | |
| 42 42 | 
             
                  end
         | 
| 43 43 |  | 
| 44 44 | 
             
                  def before_dump(&block)
         | 
| 45 | 
            -
                    if  | 
| 45 | 
            +
                    if block
         | 
| 46 46 | 
             
                      @before_dump << block
         | 
| 47 47 | 
             
                    else
         | 
| 48 48 | 
             
                      @before_dump
         | 
| @@ -50,7 +50,7 @@ module TestProf | |
| 50 50 | 
             
                  end
         | 
| 51 51 |  | 
| 52 52 | 
             
                  def after_dump(&block)
         | 
| 53 | 
            -
                    if  | 
| 53 | 
            +
                    if block
         | 
| 54 54 | 
             
                      @after_dump << block
         | 
| 55 55 | 
             
                    else
         | 
| 56 56 | 
             
                      @after_dump
         | 
| @@ -112,7 +112,7 @@ module TestProf | |
| 112 112 | 
             
                    config.reporting_enabled
         | 
| 113 113 | 
             
                  end
         | 
| 114 114 |  | 
| 115 | 
            -
                   | 
| 115 | 
            +
                  alias_method :reporting_enabled?, :reporting_enabled
         | 
| 116 116 |  | 
| 117 117 | 
             
                  # Register a block of code as a fixture,
         | 
| 118 118 | 
             
                  # returns the result of the block execution
         | 
| @@ -6,9 +6,9 @@ require "set" | |
| 6 6 |  | 
| 7 7 | 
             
            module TestProf
         | 
| 8 8 | 
             
              module AnyFixture
         | 
| 9 | 
            -
                MODIFY_RXP = /^(INSERT INTO|UPDATE|DELETE FROM) ( | 
| 10 | 
            -
                ANY_FIXTURE_RXP = /( | 
| 11 | 
            -
                ANY_FIXTURE_IGNORE_RXP = /( | 
| 9 | 
            +
                MODIFY_RXP = /^(INSERT INTO|UPDATE|DELETE FROM) (\S+)/i.freeze
         | 
| 10 | 
            +
                ANY_FIXTURE_RXP = /(\/\*|--).*\bany_fixture:dump/.freeze
         | 
| 11 | 
            +
                ANY_FIXTURE_IGNORE_RXP = /(\/\*|--).*\bany_fixture:ignore/.freeze
         | 
| 12 12 |  | 
| 13 13 | 
             
                using(Module.new do
         | 
| 14 14 | 
             
                  refine Object do
         | 
| @@ -111,7 +111,7 @@ module TestProf | |
| 111 111 | 
             
                  end
         | 
| 112 112 |  | 
| 113 113 | 
             
                  attr_reader :name, :digest, :path, :subscriber, :success
         | 
| 114 | 
            -
                   | 
| 114 | 
            +
                  alias_method :success?, :success
         | 
| 115 115 |  | 
| 116 116 | 
             
                  def initialize(name, watch: [], cache_key: nil)
         | 
| 117 117 | 
             
                    @name = name
         | 
    
        data/lib/test_prof/before_all.rb
    CHANGED
    
    | @@ -79,7 +79,7 @@ module TestProf | |
| 79 79 | 
             
                  #   config.before(:rollback) { ... }
         | 
| 80 80 | 
             
                  def before(type, &block)
         | 
| 81 81 | 
             
                    validate_hook_type!(type)
         | 
| 82 | 
            -
                    hooks[type].before << block if  | 
| 82 | 
            +
                    hooks[type].before << block if block
         | 
| 83 83 | 
             
                  end
         | 
| 84 84 |  | 
| 85 85 | 
             
                  # Add `after` hook for `begin` or
         | 
| @@ -88,7 +88,7 @@ module TestProf | |
| 88 88 | 
             
                  #   config.after(:begin) { ... }
         | 
| 89 89 | 
             
                  def after(type, &block)
         | 
| 90 90 | 
             
                    validate_hook_type!(type)
         | 
| 91 | 
            -
                    hooks[type].after << block if  | 
| 91 | 
            +
                    hooks[type].after << block if block
         | 
| 92 92 | 
             
                  end
         | 
| 93 93 |  | 
| 94 94 | 
             
                  def run_hooks(type) # :nodoc:
         | 
| @@ -26,7 +26,7 @@ module TestProf::EventProf | |
| 26 26 |  | 
| 27 27 | 
             
                  class << self
         | 
| 28 28 | 
             
                    def subscribe(event, &block)
         | 
| 29 | 
            -
                      raise ArgumentError, "Block is required!" unless  | 
| 29 | 
            +
                      raise ArgumentError, "Block is required!" unless block
         | 
| 30 30 |  | 
| 31 31 | 
             
                      ::ActiveSupport::Notifications.subscribe(event, Subscriber.new(block))
         | 
| 32 32 | 
             
                    end
         | 
| @@ -6,7 +6,7 @@ module TestProf | |
| 6 6 | 
             
                  attr_reader :event, :total_count, :total_time, :rank_by, :top_count, :per_example,
         | 
| 7 7 | 
             
                    :time, :count, :example_time, :example_count, :absolute_run_time
         | 
| 8 8 |  | 
| 9 | 
            -
                   | 
| 9 | 
            +
                  alias_method :per_example?, :per_example
         | 
| 10 10 |  | 
| 11 11 | 
             
                  def initialize(event:, instrumenter:, rank_by: :time, top_count: 5, per_example: false)
         | 
| 12 12 | 
             
                    @event = event
         | 
| @@ -88,14 +88,13 @@ module TestProf | |
| 88 88 | 
             
                  end
         | 
| 89 89 |  | 
| 90 90 | 
             
                  def results
         | 
| 91 | 
            -
                     | 
| 91 | 
            +
                    {
         | 
| 92 92 | 
             
                      groups: @groups.to_a
         | 
| 93 93 | 
             
                    }.tap do |data|
         | 
| 94 94 | 
             
                      next unless per_example?
         | 
| 95 95 |  | 
| 96 96 | 
             
                      data[:examples] = @examples.to_a
         | 
| 97 97 | 
             
                    end
         | 
| 98 | 
            -
                    results
         | 
| 99 98 | 
             
                  end
         | 
| 100 99 |  | 
| 101 100 | 
             
                  def take_time(start_ts)
         | 
| @@ -130,7 +129,7 @@ module TestProf | |
| 130 129 | 
             
                  end
         | 
| 131 130 |  | 
| 132 131 | 
             
                  def each(&block)
         | 
| 133 | 
            -
                    if  | 
| 132 | 
            +
                    if block
         | 
| 134 133 | 
             
                      @profilers.each(&block)
         | 
| 135 134 | 
             
                    else
         | 
| 136 135 | 
             
                      @profilers.each
         | 
| @@ -10,7 +10,7 @@ module TestProf | |
| 10 10 | 
             
              # flamegraphs or detect most popular factories
         | 
| 11 11 | 
             
              module FactoryProf
         | 
| 12 12 | 
             
                FACTORY_BUILDERS = [FactoryBuilders::FactoryBot,
         | 
| 13 | 
            -
             | 
| 13 | 
            +
                  FactoryBuilders::Fabrication].freeze
         | 
| 14 14 |  | 
| 15 15 | 
             
                # FactoryProf configuration
         | 
| 16 16 | 
             
                class Configuration
         | 
| @@ -11,8 +11,8 @@ module TestProf | |
| 11 11 | 
             
                    attr_reader :active, :block, :captured_ivars, :teardown_block, :current_test_object,
         | 
| 12 12 | 
             
                      :setup_fixtures
         | 
| 13 13 |  | 
| 14 | 
            -
                     | 
| 15 | 
            -
                     | 
| 14 | 
            +
                    alias_method :active?, :active
         | 
| 15 | 
            +
                    alias_method :setup_fixtures?, :setup_fixtures
         | 
| 16 16 |  | 
| 17 17 | 
             
                    def initialize(setup_fixtures: false, &block)
         | 
| 18 18 | 
             
                      @setup_fixtures = setup_fixtures
         | 
| @@ -7,7 +7,7 @@ module TestProf | |
| 7 7 | 
             
                # Helper to wrap the whole example group into a transaction
         | 
| 8 8 | 
             
                module RSpec
         | 
| 9 9 | 
             
                  def before_all(setup_fixtures: BeforeAll.config.setup_fixtures, &block)
         | 
| 10 | 
            -
                    raise ArgumentError, "Block is required!" unless  | 
| 10 | 
            +
                    raise ArgumentError, "Block is required!" unless block
         | 
| 11 11 |  | 
| 12 12 | 
             
                    if within_before_all?
         | 
| 13 13 | 
             
                      before(:all) do
         | 
| @@ -55,9 +55,7 @@ module TestProf | |
| 55 55 | 
             
                  end
         | 
| 56 56 |  | 
| 57 57 | 
             
                  def module_for(group)
         | 
| 58 | 
            -
                    modules[group] ||=  | 
| 59 | 
            -
                      Module.new.tap { |mod| group.prepend(mod) }
         | 
| 60 | 
            -
                    end
         | 
| 58 | 
            +
                    modules[group] ||= Module.new.tap { |mod| group.prepend(mod) }
         | 
| 61 59 | 
             
                  end
         | 
| 62 60 |  | 
| 63 61 | 
             
                  private
         | 
| @@ -91,8 +89,7 @@ module TestProf | |
| 91 89 | 
             
                  initializer = proc do
         | 
| 92 90 | 
             
                    instance_variable_set(:"#{TestProf::LetItBe::PREFIX}#{identifier}", instance_exec(&block))
         | 
| 93 91 | 
             
                  rescue FrozenError => e
         | 
| 94 | 
            -
                    e.message | 
| 95 | 
            -
                    raise
         | 
| 92 | 
            +
                    raise e.exception("#{e.message}#{TestProf::LetItBe::FROZEN_ERROR_HINT}")
         | 
| 96 93 | 
             
                  end
         | 
| 97 94 |  | 
| 98 95 | 
             
                  default_options = LetItBe.config.default_modifiers.dup
         | 
| @@ -243,7 +240,7 @@ end | |
| 243 240 | 
             
            RSpec.configure do |config|
         | 
| 244 241 | 
             
              config.after(:example) do |example|
         | 
| 245 242 | 
             
                if example.exception&.is_a?(FrozenError)
         | 
| 246 | 
            -
                  example.exception.message << TestProf::LetItBe::FROZEN_ERROR_HINT
         | 
| 243 | 
            +
                  example.exception.message << TestProf::LetItBe::FROZEN_ERROR_HINT unless example.exception.message.frozen?
         | 
| 247 244 | 
             
                end
         | 
| 248 245 | 
             
              end
         | 
| 249 246 | 
             
            end
         | 
| @@ -38,7 +38,7 @@ module TestProf | |
| 38 38 | 
             
                  attr_accessor :top_count, :let_stats_enabled,
         | 
| 39 39 | 
             
                    :let_top_count
         | 
| 40 40 |  | 
| 41 | 
            -
                   | 
| 41 | 
            +
                  alias_method :let_stats_enabled?, :let_stats_enabled
         | 
| 42 42 |  | 
| 43 43 | 
             
                  attr_reader :mode
         | 
| 44 44 |  | 
| @@ -139,7 +139,7 @@ end | |
| 139 139 |  | 
| 140 140 | 
             
            require "test_prof/rspec_dissect/collectors/let"
         | 
| 141 141 | 
             
            require "test_prof/rspec_dissect/collectors/before"
         | 
| 142 | 
            -
            require "test_prof/rspec_dissect/rspec" | 
| 142 | 
            +
            require "test_prof/rspec_dissect/rspec"
         | 
| 143 143 |  | 
| 144 144 | 
             
            TestProf.activate("RD_PROF") do
         | 
| 145 145 | 
             
              TestProf::RSpecDissect.init
         | 
    
        data/lib/test_prof/ruby_prof.rb
    CHANGED
    
    | @@ -239,16 +239,18 @@ module TestProf | |
| 239 239 | 
             
                  end
         | 
| 240 240 |  | 
| 241 241 | 
             
                  def exclude_common_methods(profiler)
         | 
| 242 | 
            -
                     | 
| 243 | 
            -
                       | 
| 244 | 
            -
             | 
| 245 | 
            -
             | 
| 242 | 
            +
                    if defined?(TSort)
         | 
| 243 | 
            +
                      profiler.exclude_methods!(
         | 
| 244 | 
            +
                        TSort,
         | 
| 245 | 
            +
                        :tsort_each
         | 
| 246 | 
            +
                      )
         | 
| 246 247 |  | 
| 247 | 
            -
             | 
| 248 | 
            -
             | 
| 249 | 
            -
             | 
| 250 | 
            -
             | 
| 251 | 
            -
             | 
| 248 | 
            +
                      profiler.exclude_methods!(
         | 
| 249 | 
            +
                        TSort.singleton_class,
         | 
| 250 | 
            +
                        :tsort_each, :each_strongly_connected_component,
         | 
| 251 | 
            +
                        :each_strongly_connected_component_from
         | 
| 252 | 
            +
                      )
         | 
| 253 | 
            +
                    end
         | 
| 252 254 |  | 
| 253 255 | 
             
                    profiler.exclude_methods!(
         | 
| 254 256 | 
             
                      BasicObject,
         | 
| @@ -14,7 +14,7 @@ module TestProf | |
| 14 14 | 
             
                  def initialize(max_size, sort_by: nil, &block)
         | 
| 15 15 | 
             
                    @max_size = max_size
         | 
| 16 16 | 
             
                    @comparator =
         | 
| 17 | 
            -
                      if  | 
| 17 | 
            +
                      if block
         | 
| 18 18 | 
             
                        block
         | 
| 19 19 | 
             
                      elsif !sort_by.nil?
         | 
| 20 20 | 
             
                        ->(x, y) { x[sort_by] >= y[sort_by] }
         | 
| @@ -42,7 +42,7 @@ module TestProf | |
| 42 42 | 
             
                  end
         | 
| 43 43 |  | 
| 44 44 | 
             
                  def each(&block)
         | 
| 45 | 
            -
                    if  | 
| 45 | 
            +
                    if block
         | 
| 46 46 | 
             
                      data.each(&block)
         | 
| 47 47 | 
             
                    else
         | 
| 48 48 | 
             
                      data.each
         | 
    
        data/lib/test_prof/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: test-prof
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0. | 
| 4 | 
            +
              version: 1.0.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Vladimir Dementyev
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-04-30 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -219,7 +219,7 @@ metadata: | |
| 219 219 | 
             
              documentation_uri: https://test-prof.evilmartians.io/
         | 
| 220 220 | 
             
              homepage_uri: https://test-prof.evilmartians.io/
         | 
| 221 221 | 
             
              source_code_uri: http://github.com/test-prof/test-prof
         | 
| 222 | 
            -
            post_install_message: | 
| 222 | 
            +
            post_install_message:
         | 
| 223 223 | 
             
            rdoc_options: []
         | 
| 224 224 | 
             
            require_paths:
         | 
| 225 225 | 
             
            - lib
         | 
| @@ -234,8 +234,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 234 234 | 
             
                - !ruby/object:Gem::Version
         | 
| 235 235 | 
             
                  version: '0'
         | 
| 236 236 | 
             
            requirements: []
         | 
| 237 | 
            -
            rubygems_version: 3. | 
| 238 | 
            -
            signing_key: | 
| 237 | 
            +
            rubygems_version: 3.2.15
         | 
| 238 | 
            +
            signing_key:
         | 
| 239 239 | 
             
            specification_version: 4
         | 
| 240 240 | 
             
            summary: Ruby applications tests profiling tools
         | 
| 241 241 | 
             
            test_files: []
         |