derailed_benchmarks 1.4.3 → 1.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/check_changelog.yml +11 -8
  3. data/.travis.yml +9 -7
  4. data/Appraisals +16 -16
  5. data/CHANGELOG.md +29 -1
  6. data/README.md +14 -4
  7. data/derailed_benchmarks.gemspec +4 -3
  8. data/gemfiles/rails_5_1.gemfile +3 -1
  9. data/gemfiles/rails_5_2.gemfile +3 -3
  10. data/lib/derailed_benchmarks.rb +2 -1
  11. data/lib/derailed_benchmarks/core_ext/kernel_require.rb +29 -24
  12. data/lib/derailed_benchmarks/git/commit.rb +36 -0
  13. data/lib/derailed_benchmarks/git/in_path.rb +59 -0
  14. data/lib/derailed_benchmarks/git/switch_project.rb +128 -0
  15. data/lib/derailed_benchmarks/git_switch_project.rb +1 -0
  16. data/lib/derailed_benchmarks/load_tasks.rb +11 -4
  17. data/lib/derailed_benchmarks/require_tree.rb +11 -1
  18. data/lib/derailed_benchmarks/{stats_in_file.rb → stats_for_file.rb} +8 -2
  19. data/lib/derailed_benchmarks/stats_from_dir.rb +68 -13
  20. data/lib/derailed_benchmarks/tasks.rb +34 -63
  21. data/lib/derailed_benchmarks/version.rb +1 -1
  22. data/test/derailed_benchmarks/core_ext/kernel_require_test.rb +70 -11
  23. data/test/derailed_benchmarks/git_switch_project_test.rb +83 -0
  24. data/test/derailed_benchmarks/require_tree_test.rb +1 -1
  25. data/test/derailed_benchmarks/stats_from_dir_test.rb +57 -9
  26. data/test/fixtures/require/autoload_child.rb +5 -0
  27. data/test/fixtures/require/autoload_parent.rb +8 -0
  28. data/test/fixtures/require/child_one.rb +1 -1
  29. data/test/fixtures/require/child_two.rb +1 -1
  30. data/test/fixtures/require/load_child.rb +3 -0
  31. data/test/fixtures/require/load_parent.rb +5 -0
  32. data/test/fixtures/require/parent_one.rb +1 -1
  33. data/test/integration/tasks_test.rb +43 -5
  34. data/test/rails_app/config/application.rb +2 -0
  35. data/test/test_helper.rb +6 -1
  36. metadata +46 -12
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class GitSwitchProjectTest < ActiveSupport::TestCase
6
+ test "tells me when it's not pointing at a git project" do
7
+ exception = assert_raises {
8
+ DerailedBenchmarks::Git::SwitchProject.new(path: "/dev/null")
9
+ }
10
+ assert_includes(exception.message, '.git directory')
11
+ end
12
+
13
+ test "dirty gemspec cleaning" do
14
+ Dir.mktmpdir do |dir|
15
+ run!("git clone https://github.com/sharpstone/default_ruby #{dir} 2>&1 && cd #{dir} && git checkout 6e642963acec0ff64af51bd6fba8db3c4176ed6e 2>&1 && git checkout -b mybranch 2>&1")
16
+ run!("cd #{dir} && echo lol > foo.gemspec && git add .")
17
+
18
+ io = StringIO.new
19
+ project = DerailedBenchmarks::Git::SwitchProject.new(path: dir, io: io)
20
+
21
+ assert project.dirty?
22
+ refute project.clean?
23
+
24
+ project.restore_branch_on_return do
25
+ project.commits.map(&:checkout!)
26
+ end
27
+
28
+ assert_includes io.string, "Bundler modifies gemspec files"
29
+ assert_includes io.string, "Applying stash"
30
+ end
31
+ end
32
+
33
+ test "works on a git repo" do
34
+ Dir.mktmpdir do |dir|
35
+ run!("git clone https://github.com/sharpstone/default_ruby #{dir} 2>&1 && cd #{dir} && git checkout 6e642963acec0ff64af51bd6fba8db3c4176ed6e 2>&1 && git checkout -b mybranch 2>&1")
36
+
37
+ # finds shas when none given
38
+ project = DerailedBenchmarks::Git::SwitchProject.new(path: dir)
39
+
40
+ assert_equal ["6e642963acec0ff64af51bd6fba8db3c4176ed6e", "da748a59340be8b950e7bbbfb32077eb67d70c3c"], project.commits.map(&:ref)
41
+ first_commit = project.commits.first
42
+
43
+ assert_equal "CI test support", first_commit.description
44
+ assert_equal "6e64296", first_commit.short_sha
45
+ assert_equal "/dev/null/6e642963acec0ff64af51bd6fba8db3c4176ed6e.bench.txt", first_commit.log.to_s
46
+ assert_equal DateTime.parse("Tue, 14 Apr 2020 13:26:03 -0500"), first_commit.time
47
+
48
+ assert_equal "mybranch", project.current_branch_or_sha
49
+
50
+ # Finds shas when 1 is given
51
+ project = DerailedBenchmarks::Git::SwitchProject.new(path: dir, ref_array: ["da748a59340be8b950e7bbbfb32077eb67d70c3c"])
52
+
53
+ assert_equal ["da748a59340be8b950e7bbbfb32077eb67d70c3c", "5c09f748957d2098182762004adee27d1ff83160"], project.commits.map(&:ref)
54
+
55
+
56
+ # Returns correct refs if given
57
+ project = DerailedBenchmarks::Git::SwitchProject.new(path: dir, ref_array: ["da748a59340be8b950e7bbbfb32077eb67d70c3c", "9b19275a592f148e2a53b87ead4ccd8c747539c9"])
58
+
59
+ assert_equal ["da748a59340be8b950e7bbbfb32077eb67d70c3c", "9b19275a592f148e2a53b87ead4ccd8c747539c9"], project.commits.map(&:ref)
60
+
61
+ first_commit = project.commits.first
62
+
63
+ first_commit.checkout!
64
+
65
+ assert_equal first_commit.short_sha, project.current_branch_or_sha
66
+
67
+ # Test restore_branch_on_return
68
+ project.restore_branch_on_return(quiet: true) do
69
+ project.commits.last.checkout!
70
+
71
+ assert_equal project.commits.last.short_sha, project.current_branch_or_sha
72
+ end
73
+
74
+ assert_equal project.commits.first.short_sha, project.current_branch_or_sha
75
+
76
+ exception = assert_raise {
77
+ DerailedBenchmarks::Git::SwitchProject.new(path: dir, ref_array: ["6e642963acec0ff64af51bd6fba8db3c4176ed6e", "mybranch"])
78
+ }
79
+
80
+ assert_includes(exception.message, 'Duplicate SHA resolved "6e64296"')
81
+ end
82
+ end
83
+ end
@@ -9,7 +9,7 @@ class RequireTree < ActiveSupport::TestCase
9
9
  end
10
10
 
11
11
  def teardown
12
- DerailedBenchmarks::RequireTree.const_set("REQUIRED_BY", {})
12
+ DerailedBenchmarks::RequireTree.reset!
13
13
  end
14
14
 
15
15
  test "default_cost" do
@@ -3,6 +3,19 @@
3
3
  require 'test_helper'
4
4
 
5
5
  class StatsFromDirTest < ActiveSupport::TestCase
6
+ test "empty files" do
7
+ Dir.mktmpdir do |dir|
8
+ dir = Pathname.new(dir)
9
+ branch_info = {}
10
+ branch_info["loser"] = { desc: "Old commit", time: Time.now, file: dir.join("loser"), name: "loser" }
11
+ branch_info["winner"] = { desc: "I am the new commit", time: Time.now + 1, file: dir.join("winner"), name: "winner" }
12
+ stats = DerailedBenchmarks::StatsFromDir.new(branch_info).call
13
+ io = StringIO.new
14
+ stats.call.banner(io: io) # Doesn't error
15
+ assert_equal "", io.read
16
+ end
17
+ end
18
+
6
19
  test "that it works" do
7
20
  dir = fixtures_dir("stats/significant")
8
21
  branch_info = {}
@@ -19,7 +32,7 @@ class StatsFromDirTest < ActiveSupport::TestCase
19
32
  assert_equal "loser", oldest.name
20
33
 
21
34
  assert_in_delta 0.26, stats.d_max, 0.01
22
- assert_in_delta 0.1730818382602285, stats.d_critical, 0.00001
35
+ assert_in_delta 0.2145966026289347, stats.d_critical, 0.00001
23
36
  assert_equal true, stats.significant?
24
37
 
25
38
  format = DerailedBenchmarks::StatsFromDir::FORMAT
@@ -27,14 +40,49 @@ class StatsFromDirTest < ActiveSupport::TestCase
27
40
  assert_equal "0.6147", format % stats.percent_faster
28
41
 
29
42
  assert_equal "11.3844", format % newest.median
30
- end
43
+ end
31
44
 
32
- test "banner faster" do
45
+ test "histogram output" do
46
+ dir = fixtures_dir("stats/significant")
47
+ branch_info = {}
48
+ branch_info["loser"] = { desc: "Old commit", time: Time.now, file: dir.join("loser.bench.txt"), name: "loser" }
49
+ branch_info["winner"] = { desc: "I am the new commit", time: Time.now + 1, file: dir.join("winner.bench.txt"), name: "winner" }
50
+ stats = DerailedBenchmarks::StatsFromDir.new(branch_info).call
51
+
52
+ io = StringIO.new
53
+ stats.call.banner(io)
54
+
55
+ assert_match(/11\.2 , 11\.28/, io.string)
56
+ assert_match(/11\.8 , 11\.88/, io.string)
57
+ end
58
+
59
+
60
+ test "alignment" do
33
61
  dir = fixtures_dir("stats/significant")
34
62
  branch_info = {}
35
63
  branch_info["loser"] = { desc: "Old commit", time: Time.now, file: dir.join("loser.bench.txt"), name: "loser" }
36
64
  branch_info["winner"] = { desc: "I am the new commit", time: Time.now + 1, file: dir.join("winner.bench.txt"), name: "winner" }
37
65
  stats = DerailedBenchmarks::StatsFromDir.new(branch_info).call
66
+ def stats.percent_faster
67
+ -0.1
68
+ end
69
+
70
+ def stats.x_faster
71
+ 0.9922
72
+ end
73
+
74
+ assert_equal 1, stats.align.length
75
+ end
76
+
77
+ test "banner faster" do
78
+ dir = fixtures_dir("stats/significant")
79
+ Branch_info = {}
80
+
81
+ require 'ostruct'
82
+ commits = []
83
+ commits << OpenStruct.new({ desc: "Old commit", time: Time.now, file: dir.join("loser.bench.txt"), ref: "loser", short_sha: "aaaaa" })
84
+ commits << OpenStruct.new({ desc: "I am the new commit", time: Time.now + 1, file: dir.join("winner.bench.txt"), ref: "winner", short_sha: "bbbbb" })
85
+ stats = DerailedBenchmarks::StatsFromDir.new(commits).call
38
86
  newest = stats.newest
39
87
  oldest = stats.oldest
40
88
 
@@ -55,12 +103,12 @@ class StatsFromDirTest < ActiveSupport::TestCase
55
103
  11.0
56
104
  end
57
105
 
58
- expected = <<~EOM
59
- [winner] "I am the new commit" - (10.5 seconds)
106
+ expected = <<-EOM
107
+ [bbbbb] (10.5000 seconds) "I am the new commit" ref: "winner"
60
108
  FASTER 🚀🚀🚀 by:
61
109
  1.0476x [older/newer]
62
110
  4.5455% [(older - newer) / older * 100]
63
- [loser] "Old commit" - (11.0 seconds)
111
+ [aaaaa] (11.0000 seconds) "Old commit" ref: "loser"
64
112
  EOM
65
113
 
66
114
  actual = StringIO.new
@@ -86,12 +134,12 @@ EOM
86
134
  11.0
87
135
  end
88
136
 
89
- expected = <<~EOM
90
- [loser] "I am the new commit" - (11.0 seconds)
137
+ expected = <<-EOM
138
+ [loser] (11.0000 seconds) "I am the new commit" ref: "loser"
91
139
  SLOWER 🐢🐢🐢 by:
92
140
  0.9545x [older/newer]
93
141
  -4.7619% [(older - newer) / older * 100]
94
- [winner] "Old commit" - (10.5 seconds)
142
+ [winner] (10.5000 seconds) "Old commit" ref: "winner"
95
143
  EOM
96
144
 
97
145
  actual = StringIO.new
@@ -0,0 +1,5 @@
1
+ @retained = String.new("")
2
+ 1_000_000.times.map { @retained << "A" }
3
+
4
+ module AutoLoadChild
5
+ end
@@ -0,0 +1,8 @@
1
+ @retained = String.new("")
2
+ 1_000_000.times.map { @retained << "A" }
3
+
4
+ autoload :AutoLoadChild, File.join(__dir__, 'autoload_child.rb')
5
+
6
+ if AutoLoadChild
7
+ # yay
8
+ end
@@ -1,4 +1,4 @@
1
1
  class ChildOne
2
- @retained = +""
2
+ @retained = String.new("")
3
3
  50_000.times.map { @retained << "A" }
4
4
  end
@@ -1,5 +1,5 @@
1
1
  class ChildTwo
2
- @retained = +""
2
+ @retained = String.new("")
3
3
  200_000.times.map { @retained << "A" }
4
4
  end
5
5
 
@@ -0,0 +1,3 @@
1
+ @retained = String.new("")
2
+ 1_000_000.times.map { @retained << "A" }
3
+
@@ -0,0 +1,5 @@
1
+ @retained = String.new("")
2
+ 1_000_000.times.map { @retained << "A" }
3
+
4
+ load File.join(__dir__, "load_child.rb")
5
+
@@ -1,5 +1,5 @@
1
1
  class ParentOne
2
- @retained = +""
2
+ @retained = String.new("")
3
3
  1_000_000.times.map { @retained << "A" }
4
4
  end
5
5
  require File.expand_path('../child_one.rb', __FILE__)
@@ -13,27 +13,58 @@ class TasksTest < ActiveSupport::TestCase
13
13
  FileUtils.remove_entry_secure(rails_app_path('tmp'))
14
14
  end
15
15
 
16
+ def run!(cmd)
17
+ puts "Running: #{cmd}"
18
+ out = `#{cmd}`
19
+ raise "Could not run #{cmd}, output: #{out}" unless $?.success?
20
+ out
21
+ end
22
+
16
23
  def rake(cmd, options = {})
17
24
  assert_success = options.key?(:assert_success) ? options[:assert_success] : true
18
25
  env = options[:env] || {}
19
26
  env_string = env.map {|key, value| "#{key.shellescape}=#{value.to_s.shellescape}" }.join(" ")
20
27
  cmd = "env #{env_string} bundle exec rake -f perf.rake #{cmd} --trace"
21
28
  puts "Running: #{cmd}"
22
- result = `cd '#{rails_app_path}' && #{cmd}`
23
- if assert_success
24
- assert $?.success?, "Expected '#{cmd}' to return a success status.\nOutput: #{result}"
29
+ result = Bundler.with_original_env { `cd '#{rails_app_path}' && #{cmd} 2>&1` }
30
+ if assert_success && !$?.success?
31
+ puts result
32
+ raise "Expected '#{cmd}' to return a success status.\nOutput: #{result}"
25
33
  end
26
34
 
27
35
  result
28
36
  end
29
37
 
30
- test 'library_branches' do
38
+ test 'non-rails library with branch specified' do
39
+ skip unless ENV['USING_RAILS_WICKED_BRANCH']
40
+
41
+ gem_path = run!("bundle info wicked --path")
42
+ env = { "TEST_COUNT" => 10, "DERAILED_SCRIPT_COUNT" => 2, "DERAILED_PATH_TO_LIBRARY" => gem_path}
43
+ puts rake "perf:library", { env: env }
44
+ end
45
+
46
+ test 'rails perf:library from git' do
47
+ # BUNDLE_GEMFILE="$(pwd)/gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb:<linenumber>
48
+
31
49
  skip unless ENV['USING_RAILS_GIT']
32
50
 
33
- env = { "TEST_COUNT" => 10, "DERAILED_SCRIPT_COUNT" => 2, "SHAS_TO_TEST" => "3054e1d584e7eca110c69a1f8423f2e0866abbf9,80f989aecece1a2b1830e9c953e5887421b52d3c"}
51
+ env = { "TEST_COUNT" => 2, "DERAILED_SCRIPT_COUNT" => 2, "SHAS_TO_TEST" => "3054e1d584e7eca110c69a1f8423f2e0866abbf9,80f989aecece1a2b1830e9c953e5887421b52d3c"}
34
52
  puts rake "perf:library", { env: env }
35
53
  end
36
54
 
55
+ test "rails perf:library with bad script" do
56
+ # BUNDLE_GEMFILE="$(pwd)/gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb:<linenumber>
57
+
58
+ skip unless ENV['USING_RAILS_GIT']
59
+
60
+ error = assert_raises {
61
+ env = { "DERAILED_SCRIPT" => "nopenopenop", "TEST_COUNT" => 2, "DERAILED_SCRIPT_COUNT" => 2, "SHAS_TO_TEST" => "3054e1d584e7eca110c69a1f8423f2e0866abbf9,80f989aecece1a2b1830e9c953e5887421b52d3c"}
62
+ puts rake "perf:library", { env: env }
63
+ }
64
+
65
+ assert error.message =~ /nopenopenop:( command)? not found/, "Expected #{error.message} to include /nopenopenop: (command)? not found/ but it did not"
66
+ end
67
+
37
68
  test 'hitting authenticated devise apps' do
38
69
  env = { "PATH_TO_HIT" => "authenticated", "USE_AUTH" => "true", "TEST_COUNT" => "2" }
39
70
  result = rake 'perf:test', env: env
@@ -55,6 +86,13 @@ class TasksTest < ActiveSupport::TestCase
55
86
  rake "perf:test"
56
87
  end
57
88
 
89
+ test 'app' do
90
+ skip unless ENV['USING_RAILS_GIT']
91
+ run!("cd #{rails_app_path} && git init . && git add . && git commit -m first && git commit --allow-empty -m second")
92
+ env = { "TEST_COUNT" => 10, "DERAILED_SCRIPT_COUNT" => 2 }
93
+ puts rake "perf:app", { env: env }
94
+ end
95
+
58
96
  test 'TEST_COUNT' do
59
97
  result = rake "perf:test", env: { "TEST_COUNT" => 1 }
60
98
  assert_match "1 derailed requests", result
@@ -13,6 +13,8 @@ require 'devise'
13
13
 
14
14
  module Dummy
15
15
  class Application < Rails::Application
16
+ config.load_defaults Rails.version.to_f
17
+
16
18
  config.action_mailer.default_url_options = { host: 'localhost:3000' }
17
19
 
18
20
  # Settings in config/environments/* take precedence over those specified here.
@@ -51,7 +51,6 @@ class ActiveSupport::IntegrationCase
51
51
  end
52
52
  end
53
53
 
54
-
55
54
  def fixtures_dir(name = "")
56
55
  root_path("test/fixtures").join(name)
57
56
  end
@@ -63,3 +62,9 @@ end
63
62
  def rails_app_path(name = "")
64
63
  root_path("test/rails_app").join(name)
65
64
  end
65
+
66
+ def run!(cmd)
67
+ output = `#{cmd}`
68
+ raise "Cmd #{cmd} failed:\n#{output}" unless $?.success?
69
+ output
70
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: derailed_benchmarks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Schneeman
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-17 00:00:00.000000000 Z
11
+ date: 2020-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: heapy
@@ -104,16 +104,22 @@ dependencies:
104
104
  name: thor
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - "~>"
107
+ - - ">="
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0.19'
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '2'
110
113
  type: :runtime
111
114
  prerelease: false
112
115
  version_requirements: !ruby/object:Gem::Requirement
113
116
  requirements:
114
- - - "~>"
117
+ - - ">="
115
118
  - !ruby/object:Gem::Version
116
119
  version: '0.19'
120
+ - - "<"
121
+ - !ruby/object:Gem::Version
122
+ version: '2'
117
123
  - !ruby/object:Gem::Dependency
118
124
  name: ruby-statistics
119
125
  requirement: !ruby/object:Gem::Requirement
@@ -128,6 +134,20 @@ dependencies:
128
134
  - - ">="
129
135
  - !ruby/object:Gem::Version
130
136
  version: '2.1'
137
+ - !ruby/object:Gem::Dependency
138
+ name: mini_histogram
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: 0.2.1
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: 0.2.1
131
151
  - !ruby/object:Gem::Dependency
132
152
  name: capybara
133
153
  requirement: !ruby/object:Gem::Requirement
@@ -165,7 +185,7 @@ dependencies:
165
185
  version: '3'
166
186
  - - "<="
167
187
  - !ruby/object:Gem::Version
168
- version: '6'
188
+ version: '7'
169
189
  type: :development
170
190
  prerelease: false
171
191
  version_requirements: !ruby/object:Gem::Requirement
@@ -175,7 +195,7 @@ dependencies:
175
195
  version: '3'
176
196
  - - "<="
177
197
  - !ruby/object:Gem::Version
178
- version: '6'
198
+ version: '7'
179
199
  - !ruby/object:Gem::Dependency
180
200
  name: devise
181
201
  requirement: !ruby/object:Gem::Requirement
@@ -237,18 +257,27 @@ files:
237
257
  - lib/derailed_benchmarks/auth_helper.rb
238
258
  - lib/derailed_benchmarks/auth_helpers/devise.rb
239
259
  - lib/derailed_benchmarks/core_ext/kernel_require.rb
260
+ - lib/derailed_benchmarks/git/commit.rb
261
+ - lib/derailed_benchmarks/git/in_path.rb
262
+ - lib/derailed_benchmarks/git/switch_project.rb
263
+ - lib/derailed_benchmarks/git_switch_project.rb
240
264
  - lib/derailed_benchmarks/load_tasks.rb
241
265
  - lib/derailed_benchmarks/require_tree.rb
266
+ - lib/derailed_benchmarks/stats_for_file.rb
242
267
  - lib/derailed_benchmarks/stats_from_dir.rb
243
- - lib/derailed_benchmarks/stats_in_file.rb
244
268
  - lib/derailed_benchmarks/tasks.rb
245
269
  - lib/derailed_benchmarks/version.rb
246
270
  - test/derailed_benchmarks/core_ext/kernel_require_test.rb
271
+ - test/derailed_benchmarks/git_switch_project_test.rb
247
272
  - test/derailed_benchmarks/require_tree_test.rb
248
273
  - test/derailed_benchmarks/stats_from_dir_test.rb
249
274
  - test/derailed_test.rb
275
+ - test/fixtures/require/autoload_child.rb
276
+ - test/fixtures/require/autoload_parent.rb
250
277
  - test/fixtures/require/child_one.rb
251
278
  - test/fixtures/require/child_two.rb
279
+ - test/fixtures/require/load_child.rb
280
+ - test/fixtures/require/load_parent.rb
252
281
  - test/fixtures/require/parent_one.rb
253
282
  - test/fixtures/require/raise_child.rb
254
283
  - test/fixtures/require/relative_child.rb
@@ -308,7 +337,7 @@ homepage: https://github.com/schneems/derailed_benchmarks
308
337
  licenses:
309
338
  - MIT
310
339
  metadata: {}
311
- post_install_message:
340
+ post_install_message:
312
341
  rdoc_options: []
313
342
  require_paths:
314
343
  - lib
@@ -316,24 +345,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
316
345
  requirements:
317
346
  - - ">="
318
347
  - !ruby/object:Gem::Version
319
- version: 2.1.0
348
+ version: 2.2.0
320
349
  required_rubygems_version: !ruby/object:Gem::Requirement
321
350
  requirements:
322
351
  - - ">="
323
352
  - !ruby/object:Gem::Version
324
353
  version: '0'
325
354
  requirements: []
326
- rubygems_version: 3.0.3
327
- signing_key:
355
+ rubygems_version: 3.1.2
356
+ signing_key:
328
357
  specification_version: 4
329
358
  summary: Benchmarks designed to performance test your ENTIRE site
330
359
  test_files:
331
360
  - test/derailed_benchmarks/core_ext/kernel_require_test.rb
361
+ - test/derailed_benchmarks/git_switch_project_test.rb
332
362
  - test/derailed_benchmarks/require_tree_test.rb
333
363
  - test/derailed_benchmarks/stats_from_dir_test.rb
334
364
  - test/derailed_test.rb
365
+ - test/fixtures/require/autoload_child.rb
366
+ - test/fixtures/require/autoload_parent.rb
335
367
  - test/fixtures/require/child_one.rb
336
368
  - test/fixtures/require/child_two.rb
369
+ - test/fixtures/require/load_child.rb
370
+ - test/fixtures/require/load_parent.rb
337
371
  - test/fixtures/require/parent_one.rb
338
372
  - test/fixtures/require/raise_child.rb
339
373
  - test/fixtures/require/relative_child.rb