Module: Minitest::Speed
- Defined in:
- lib/minitest/speed.rb
Overview
Adds test hooks to verify the time it takes to run the setup, body, and teardown phases of each test. If the time of any phase goes over the maximum time, it fails the test. Use class variables to set the maximum thresholds and crank it down over time.
class SpeedTest < Minitest::Test
include Minitest::Speed
@@max_setup_time = 0.01
@@max_test_time = 0.01
@@max_teardown_time = 0.01
end
class MyTest < SpeedTest
# ...
end
Constant Summary collapse
- VERSION =
:nodoc:
"1.1.0"- @@max_setup_time =
Maximum setup time to pass a speed test. Default to 1.0 second.
1.0- @@max_test_time =
Maximum test time to pass a speed test. Default to 1.0 second.
1.0- @@max_teardown_time =
Maximum teardown time to pass a speed test. Default to 1.0 second.
1.0
Instance Attribute Summary collapse
-
#clock_time ⇒ Object
Default way of getting the current time.
Instance Method Summary collapse
-
#after_setup ⇒ Object
:nodoc:.
-
#after_teardown ⇒ Object
:nodoc:.
-
#before_setup ⇒ Object
:nodoc:.
-
#before_teardown ⇒ Object
:nodoc:.
-
#permit_slow_setup ⇒ Object
Disable setup speed assertion for the current setup.
-
#permit_slow_teardown ⇒ Object
Disable teardown speed assertion for the current teardown.
-
#permit_slow_test ⇒ Object
Disable test speed assertion for the current test.
Instance Attribute Details
#clock_time ⇒ Object
Default way of getting the current time.
Minitest::Speed.clock_time = proc { Minitest.clock_time }
46 47 48 |
# File 'lib/minitest/speed.rb', line 46 def clock_time @clock_time end |
Instance Method Details
#after_setup ⇒ Object
:nodoc:
57 58 59 60 61 62 63 64 65 |
# File 'lib/minitest/speed.rb', line 57 def after_setup # :nodoc: delta = Minitest::Speed.clock_time.call - @setup_t0 @test_t0 = Minitest::Speed.clock_time.call assert_operator delta, :<=, @@max_setup_time, "max_setup_time exceeded" unless @permit_slow_setup super end |
#after_teardown ⇒ Object
:nodoc:
77 78 79 80 81 82 83 |
# File 'lib/minitest/speed.rb', line 77 def after_teardown # :nodoc: delta = Minitest::Speed.clock_time.call - @teardown_t0 assert_operator delta, :<=, @@max_teardown_time, "max_teardown_time exceeded" unless @permit_slow_teardown super end |
#before_setup ⇒ Object
:nodoc:
51 52 53 54 55 |
# File 'lib/minitest/speed.rb', line 51 def before_setup # :nodoc: super @setup_t0 = Minitest::Speed.clock_time.call end |
#before_teardown ⇒ Object
:nodoc:
67 68 69 70 71 72 73 74 75 |
# File 'lib/minitest/speed.rb', line 67 def before_teardown # :nodoc: super @teardown_t0 = Minitest::Speed.clock_time.call delta = Minitest::Speed.clock_time.call - @test_t0 assert_operator delta, :<=, @@max_test_time, "max_test_time exceeded" unless @permit_slow_test end |
#permit_slow_setup ⇒ Object
Disable setup speed assertion for the current setup.
def setup
permit_slow_setup
slow_setup_thing
super
end
96 97 98 |
# File 'lib/minitest/speed.rb', line 96 def permit_slow_setup @permit_slow_setup = true end |
#permit_slow_teardown ⇒ Object
Disable teardown speed assertion for the current teardown.
def teardown
permit_slow_teardown
slow_teardown_thing
super
end
124 125 126 |
# File 'lib/minitest/speed.rb', line 124 def permit_slow_teardown @permit_slow_teardown = true end |
#permit_slow_test ⇒ Object
Disable test speed assertion for the current test.
def test_slow_thing
permit_slow_test
slow_thing
end
109 110 111 |
# File 'lib/minitest/speed.rb', line 109 def permit_slow_test @permit_slow_test = true end |