minitest-speed 1.0.1 → 1.1.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8d5602f0d650efd86b71dab5ab2c63df82040a0f
4
- data.tar.gz: 15d624414639de4cbaf2191d38d36c36dfa5aa3d
2
+ SHA256:
3
+ metadata.gz: 5a6b0f795c932b715c2243a9de667729d1d5bf6b2b1f04052f8ccf093a9063aa
4
+ data.tar.gz: e5d75d409294f742b3c24a8ca28aabf00160dd1260f2af0c904e29920583922b
5
5
  SHA512:
6
- metadata.gz: 2f0bdabbfbe2cfc73ef78321949dc3b23122a7d02f88efa3dfc2bf2708bc228d51b19502fbd29e9c0af20dc2ac4a7b729d4c194423ab88345755392445ed98bd
7
- data.tar.gz: ac90054eccc056b3481a5dbeeb7b2275f738a5e0ae9b99766cd9fc4b9599a42aac7593e0c989679e29a5e85a887ad05864b21e22717dbb8b634f6990870e3802
6
+ metadata.gz: 736554b62ac40be16ed7a7de8c1c490680491e4ff209c2cfe8d50af21b4e6a740e24a186a13dd3a87662663067219254d10340ace7b4e71fac10961943a66f82
7
+ data.tar.gz: 23531330c8d3843b11b1c4d112955a52581be7174297863464c38d85a0a0bc69f4be4eab2eed179fd728fcdd49c552e7b8d03d5f1469e71a7f37210c0bf4c2e0
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,23 @@
1
+ === 1.1.0 / 2025-04-07
2
+
3
+ * 3 minor enhancements:
4
+
5
+ * Added a message to the assertions to clarify which one fired. (HeyNonster)
6
+ * Added permit_slow_* methods to allow for disabling the speed checks. (HeyNonster)
7
+ * Allow for custom clock_time to be set. (HeyNonster)
8
+
9
+ === 1.0.2 / 2025-01-06
10
+
11
+ NINE YEARS!
12
+
13
+ * 1 minor enhancement:
14
+
15
+ * Use Minitest.clock_time instead of Time.now for higher resolution when available.
16
+
17
+ * 1 bug fix:
18
+
19
+ * Fixed bug in max test time assertion.
20
+
1
21
  === 1.0.1 / 2016-10-09
2
22
 
3
23
  * 1 bug fix:
@@ -9,4 +29,3 @@
9
29
  * 1 major enhancement
10
30
 
11
31
  * Birthday!
12
-
@@ -5,9 +5,21 @@ module Minitest; end # :nodoc:
5
5
  # and teardown phases of each test. If the time of any phase goes over
6
6
  # the maximum time, it fails the test. Use class variables to set the
7
7
  # maximum thresholds and crank it down over time.
8
+ #
9
+ # class SpeedTest < Minitest::Test
10
+ # include Minitest::Speed
11
+ #
12
+ # @@max_setup_time = 0.01
13
+ # @@max_test_time = 0.01
14
+ # @@max_teardown_time = 0.01
15
+ # end
16
+ #
17
+ # class MyTest < SpeedTest
18
+ # # ...
19
+ # end
8
20
 
9
21
  module Minitest::Speed
10
- VERSION = "1.0.1" # :nodoc:
22
+ VERSION = "1.1.0" # :nodoc:
11
23
 
12
24
  ##
13
25
  # Maximum setup time to pass a speed test. Default to 1.0 second.
@@ -24,18 +36,30 @@ module Minitest::Speed
24
36
 
25
37
  @@max_teardown_time = 1.0
26
38
 
39
+ mc = class << self; self; end # :nodoc:
40
+
41
+ ##
42
+ # Default way of getting the current time.
43
+ #
44
+ # Minitest::Speed.clock_time = proc { Minitest.clock_time }
45
+
46
+ mc.attr_accessor :clock_time
47
+
48
+ self.clock_time = -> { Minitest.clock_time }
49
+
50
+
27
51
  def before_setup # :nodoc:
28
52
  super
29
53
 
30
- @setup_t0 = Time.now
54
+ @setup_t0 = Minitest::Speed.clock_time.call
31
55
  end
32
56
 
33
57
  def after_setup # :nodoc:
34
- delta = Time.now - @setup_t0
58
+ delta = Minitest::Speed.clock_time.call - @setup_t0
35
59
 
36
- @test_t0 = Time.now
60
+ @test_t0 = Minitest::Speed.clock_time.call
37
61
 
38
- assert_operator delta, :<=, @@max_setup_time
62
+ assert_operator delta, :<=, @@max_setup_time, "max_setup_time exceeded" unless @permit_slow_setup
39
63
 
40
64
  super
41
65
  end
@@ -43,16 +67,61 @@ module Minitest::Speed
43
67
  def before_teardown # :nodoc:
44
68
  super
45
69
 
46
- @teardown_t0 = Time.now
70
+ @teardown_t0 = Minitest::Speed.clock_time.call
71
+
72
+ delta = Minitest::Speed.clock_time.call - @test_t0
47
73
 
48
- delta = Time.now - @test_t0
49
- assert_operator delta, :<=, @@max_teardown_time
74
+ assert_operator delta, :<=, @@max_test_time, "max_test_time exceeded" unless @permit_slow_test
50
75
  end
51
76
 
52
77
  def after_teardown # :nodoc:
53
- delta = Time.now - @teardown_t0
78
+ delta = Minitest::Speed.clock_time.call - @teardown_t0
79
+
80
+ assert_operator delta, :<=, @@max_teardown_time, "max_teardown_time exceeded" unless @permit_slow_teardown
54
81
 
55
- assert_operator delta, :<=, @@max_teardown_time
56
82
  super
57
83
  end
84
+
85
+ ##
86
+ # Disable setup speed assertion for the current setup.
87
+ #
88
+ # def setup
89
+ # permit_slow_setup
90
+ #
91
+ # slow_setup_thing
92
+ #
93
+ # super
94
+ # end
95
+
96
+ def permit_slow_setup
97
+ @permit_slow_setup = true
98
+ end
99
+
100
+ ##
101
+ # Disable test speed assertion for the current test.
102
+ #
103
+ # def test_slow_thing
104
+ # permit_slow_test
105
+ #
106
+ # slow_thing
107
+ # end
108
+
109
+ def permit_slow_test
110
+ @permit_slow_test = true
111
+ end
112
+
113
+ ##
114
+ # Disable teardown speed assertion for the current teardown.
115
+ #
116
+ # def teardown
117
+ # permit_slow_teardown
118
+ #
119
+ # slow_teardown_thing
120
+ #
121
+ # super
122
+ # end
123
+
124
+ def permit_slow_teardown
125
+ @permit_slow_teardown = true
126
+ end
58
127
  end
@@ -6,9 +6,9 @@ module TestMinitest; end
6
6
  class SpeedTest < Minitest::Test
7
7
  include Minitest::Speed
8
8
 
9
- @@max_setup_time = 0.01
10
- @@max_test_time = 0.01
11
- @@max_teardown_time = 0.01
9
+ @@max_setup_time = 0.005
10
+ @@max_test_time = 0.015
11
+ @@max_teardown_time = 0.025
12
12
 
13
13
  def self.go(&b)
14
14
  Class.new(SpeedTest, &b).new(:test_something).run
@@ -16,14 +16,30 @@ class SpeedTest < Minitest::Test
16
16
  end
17
17
 
18
18
  class TestMinitest::TestSpeed < Minitest::Test
19
- def assert_test_speed(&b)
19
+ def assert_slow(&b)
20
20
  refute_predicate SpeedTest.go(&b), :passed?
21
21
  end
22
22
 
23
+ def assert_fast(&b)
24
+ assert_predicate SpeedTest.go(&b), :passed?
25
+ end
26
+
27
+ def test_fast_setup
28
+ assert_fast do
29
+ def setup
30
+ sleep 0.001
31
+ end
32
+
33
+ def test_something
34
+ assert true
35
+ end
36
+ end
37
+ end
38
+
23
39
  def test_slow_setup
24
- assert_test_speed do
40
+ assert_slow do
25
41
  def setup
26
- sleep 0.1
42
+ sleep 0.01
27
43
  end
28
44
 
29
45
  def test_something
@@ -32,23 +48,94 @@ class TestMinitest::TestSpeed < Minitest::Test
32
48
  end
33
49
  end
34
50
 
51
+ def test_permit_slow_setup
52
+ assert_fast do
53
+ def setup
54
+ permit_slow_setup
55
+ sleep 0.01
56
+ end
57
+
58
+ def test_something
59
+ assert true
60
+ end
61
+ end
62
+ end
63
+
64
+ def test_fast_test
65
+ assert_fast do
66
+ def test_something
67
+ sleep 0.01
68
+ end
69
+ end
70
+ end
71
+
35
72
  def test_slow_test
36
- assert_test_speed do
73
+ assert_slow do
37
74
  def test_something
38
- sleep 0.1
75
+ sleep 0.02
76
+ end
77
+ end
78
+ end
79
+
80
+ def test_permit_slow_test
81
+ assert_fast do
82
+ def test_something
83
+ permit_slow_test
84
+ sleep 0.02
85
+ end
86
+ end
87
+ end
88
+
89
+ def test_fast_teardown
90
+ assert_fast do
91
+ def teardown
92
+ sleep 0.01
93
+ end
94
+
95
+ def test_something
96
+ assert true
39
97
  end
40
98
  end
41
99
  end
42
100
 
43
101
  def test_slow_teardown
44
- assert_test_speed do
102
+ assert_slow do
103
+ def teardown
104
+ sleep 0.03
105
+ end
106
+
107
+ def test_something
108
+ assert true
109
+ end
110
+ end
111
+ end
112
+
113
+ def test_permit_slow_teardown
114
+ assert_fast do
45
115
  def teardown
46
- sleep 0.1
116
+ permit_slow_teardown
117
+ sleep 0.03
118
+ end
119
+
120
+ def test_something
121
+ assert true
122
+ end
123
+ end
124
+ end
125
+
126
+ def test_clock_time
127
+ clock_time_was = Minitest::Speed.clock_time
128
+ assert_fast do
129
+ Minitest::Speed.clock_time = proc { 0 }
130
+ def setup
131
+ sleep(0.03)
47
132
  end
48
133
 
49
134
  def test_something
50
135
  assert true
51
136
  end
52
137
  end
138
+ ensure
139
+ Minitest::Speed.clock_time = clock_time_was
53
140
  end
54
141
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,18 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-speed
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain:
11
10
  - |
12
11
  -----BEGIN CERTIFICATE-----
13
- MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
12
+ MIIDPjCCAiagAwIBAgIBCTANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
14
13
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE2MDkyNjAxNTczNVoXDTE3MDkyNjAxNTczNVowRTETMBEGA1UE
14
+ GRYDY29tMB4XDTI1MDEwNjIzMjcwMVoXDTI2MDEwNjIzMjcwMVowRTETMBEGA1UE
16
15
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
16
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
17
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -20,66 +19,71 @@ cert_chain:
20
19
  oOvjtt5P8+GSK9zLzxQP0gVLS/D0FmoE44XuDr3iQkVS2ujU5zZL84mMNqNB1znh
21
20
  GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
22
21
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
- gBEfoTEGr7Zii72cx+sCAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
- sDAdBgNVHQ4EFgQUR8V72Z3+v+2P9abCnL4wjx32T+EwIwYDVR0RBBwwGoEYcnlh
25
- bmQtcnVieUB6ZW5zcGlkZXIuY29tMCMGA1UdEgQcMBqBGHJ5YW5kLXJ1YnlAemVu
26
- c3BpZGVyLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAIGzgp0aZ2W9+v96ujmBcQHoC
27
- buy0iU68MVj2VlxMyfr1KPZIh1OyhU4UO4zrkREcH8ML70v9cYHNvOd9oynRHnvC
28
- l2tj/fD3YJ0AEkJxGrYwRWQmvMfC4bJ02bC1+rVOUIXXKp3+cUmiN4sTniof8VFo
29
- bo/YYP4c7erpERa+9hrqygg6WQbJlk2YRlH3JXPFjmu869i2dcbR5ZLOAeEy+axH
30
- E4oJcnPkJAr0rw504JGtlZtONZQblwmRJOIdXzolaE3NRGUzGVOUSptZppAKiavY
31
- fO6tdKQc/5RfA8oQEkg8hrxA5PQSz4TOFJGLpFvIapEk6tMruQ0bHgkhr9auXg==
22
+ gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
24
+ AQAC0WQJcPOWPFwkojhzweilRVjTJ19UiLhiBTw3C1wJO3LVdBkWDmnnhAmKuX4D
25
+ r7vjQvESlABGIPdutI1Yl7mrHQzTkfLfXvNN6MT0nLChPyIYauT6SZZxubwJrUfA
26
+ 7R0c2CJTIboZ0XaGpLsXqHEF1c29H7TV1QvVuqKAN2mCjh4N82QVn+ZKtys28AwT
27
+ 6GfQX2fqLoi4KSc7xIzHKaNzqxeOICmJofk9w5VZ2rRN6yes8jvFYwz9HR41wdj8
28
+ bwfinv7Yp5fA6AysuZLhCykyfDuZVRrUp0Vb68YCKsLjJly/Theak+euNTxvHsB+
29
+ al9oSgPPHICMEX65qvLywitx
32
30
  -----END CERTIFICATE-----
33
- date: 2016-10-09 00:00:00.000000000 Z
31
+ date: 2025-04-07 00:00:00.000000000 Z
34
32
  dependencies:
35
33
  - !ruby/object:Gem::Dependency
36
34
  name: minitest
37
35
  requirement: !ruby/object:Gem::Requirement
38
36
  requirements:
39
- - - '>'
37
+ - - ">"
40
38
  - !ruby/object:Gem::Version
41
39
  version: '5'
42
- - - <
40
+ - - "<"
43
41
  - !ruby/object:Gem::Version
44
42
  version: '7'
45
43
  type: :runtime
46
44
  prerelease: false
47
45
  version_requirements: !ruby/object:Gem::Requirement
48
46
  requirements:
49
- - - '>'
47
+ - - ">"
50
48
  - !ruby/object:Gem::Version
51
49
  version: '5'
52
- - - <
50
+ - - "<"
53
51
  - !ruby/object:Gem::Version
54
52
  version: '7'
55
53
  - !ruby/object:Gem::Dependency
56
54
  name: rdoc
57
55
  requirement: !ruby/object:Gem::Requirement
58
56
  requirements:
59
- - - ~>
57
+ - - ">="
60
58
  - !ruby/object:Gem::Version
61
59
  version: '4.0'
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '7'
62
63
  type: :development
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
- - - ~>
67
+ - - ">="
67
68
  - !ruby/object:Gem::Version
68
69
  version: '4.0'
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '7'
69
73
  - !ruby/object:Gem::Dependency
70
74
  name: hoe
71
75
  requirement: !ruby/object:Gem::Requirement
72
76
  requirements:
73
- - - ~>
77
+ - - "~>"
74
78
  - !ruby/object:Gem::Version
75
- version: '3.15'
79
+ version: '4.2'
76
80
  type: :development
77
81
  prerelease: false
78
82
  version_requirements: !ruby/object:Gem::Requirement
79
83
  requirements:
80
- - - ~>
84
+ - - "~>"
81
85
  - !ruby/object:Gem::Version
82
- version: '3.15'
86
+ version: '4.2'
83
87
  description: |-
84
88
  minitest-speed adds test hooks to verify the time it takes to run the
85
89
  setup, body, and teardown phases of each test. If the time of any
@@ -94,7 +98,7 @@ extra_rdoc_files:
94
98
  - Manifest.txt
95
99
  - README.rdoc
96
100
  files:
97
- - .autotest
101
+ - ".autotest"
98
102
  - History.rdoc
99
103
  - Manifest.txt
100
104
  - README.rdoc
@@ -104,27 +108,25 @@ files:
104
108
  homepage: https://github.com/seattlerb/minitest-speed
105
109
  licenses:
106
110
  - MIT
107
- metadata: {}
108
- post_install_message:
111
+ metadata:
112
+ homepage_uri: https://github.com/seattlerb/minitest-speed
109
113
  rdoc_options:
110
- - --main
114
+ - "--main"
111
115
  - README.rdoc
112
116
  require_paths:
113
117
  - lib
114
118
  required_ruby_version: !ruby/object:Gem::Requirement
115
119
  requirements:
116
- - - '>='
120
+ - - ">="
117
121
  - !ruby/object:Gem::Version
118
122
  version: '0'
119
123
  required_rubygems_version: !ruby/object:Gem::Requirement
120
124
  requirements:
121
- - - '>='
125
+ - - ">="
122
126
  - !ruby/object:Gem::Version
123
127
  version: '0'
124
128
  requirements: []
125
- rubyforge_project:
126
- rubygems_version: 2.4.5
127
- signing_key:
129
+ rubygems_version: 3.6.3
128
130
  specification_version: 4
129
131
  summary: minitest-speed adds test hooks to verify the time it takes to run the setup,
130
132
  body, and teardown phases of each test
metadata.gz.sig CHANGED
Binary file