derailed_benchmarks 1.6.0 → 2.0.1
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/.circleci/config.yml +75 -0
- data/.github/workflows/check_changelog.yml +11 -8
- data/CHANGELOG.md +25 -1
- data/README.md +32 -9
- data/derailed_benchmarks.gemspec +6 -3
- data/gemfiles/rails_5_1.gemfile +3 -1
- data/gemfiles/rails_5_2.gemfile +3 -3
- data/gemfiles/rails_6_1.gemfile +13 -0
- data/gemfiles/rails_git.gemfile +2 -2
- data/lib/derailed_benchmarks.rb +4 -2
- data/lib/derailed_benchmarks/core_ext/kernel_require.rb +29 -24
- data/lib/derailed_benchmarks/git/commit.rb +36 -0
- data/lib/derailed_benchmarks/git/in_path.rb +59 -0
- data/lib/derailed_benchmarks/git/switch_project.rb +128 -0
- data/lib/derailed_benchmarks/git_switch_project.rb +1 -0
- data/lib/derailed_benchmarks/load_tasks.rb +11 -4
- data/lib/derailed_benchmarks/require_tree.rb +11 -1
- data/lib/derailed_benchmarks/{stats_in_file.rb → stats_for_file.rb} +8 -2
- data/lib/derailed_benchmarks/stats_from_dir.rb +53 -9
- data/lib/derailed_benchmarks/tasks.rb +26 -63
- data/lib/derailed_benchmarks/version.rb +1 -1
- data/test/derailed_benchmarks/core_ext/kernel_require_test.rb +70 -11
- data/test/derailed_benchmarks/git_switch_project_test.rb +83 -0
- data/test/derailed_benchmarks/require_tree_test.rb +1 -1
- data/test/derailed_benchmarks/stats_from_dir_test.rb +43 -10
- data/test/fixtures/require/autoload_child.rb +5 -0
- data/test/fixtures/require/autoload_parent.rb +8 -0
- data/test/fixtures/require/child_one.rb +1 -1
- data/test/fixtures/require/child_two.rb +1 -1
- data/test/fixtures/require/load_child.rb +3 -0
- data/test/fixtures/require/load_parent.rb +5 -0
- data/test/fixtures/require/parent_one.rb +1 -1
- data/test/integration/tasks_test.rb +31 -5
- data/test/rails_app/config/application.rb +2 -0
- data/test/rails_app/config/storage.yml +0 -0
- data/test/test_helper.rb +6 -1
- metadata +90 -26
- data/.travis.yml +0 -18
- data/Appraisals +0 -26
@@ -3,7 +3,6 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class KernelRequireTest < ActiveSupport::TestCase
|
6
|
-
|
7
6
|
setup do
|
8
7
|
require 'derailed_benchmarks/core_ext/kernel_require'
|
9
8
|
GC.disable
|
@@ -11,23 +10,83 @@ class KernelRequireTest < ActiveSupport::TestCase
|
|
11
10
|
|
12
11
|
teardown do
|
13
12
|
GC.enable
|
13
|
+
DerailedBenchmarks::RequireTree.reset!
|
14
|
+
end
|
15
|
+
|
16
|
+
test "profiles load" do
|
17
|
+
in_fork do
|
18
|
+
require fixtures_dir("require/load_parent.rb")
|
19
|
+
|
20
|
+
parent = assert_node_in_parent("load_parent.rb", TOP_REQUIRE)
|
21
|
+
|
22
|
+
assert_node_in_parent("load_child.rb", parent)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
test "profiles autoload" do
|
27
|
+
skip if RUBY_VERSION.start_with?("2.2") # Fails on CI, I can't install Ruby 2.2 locally to debug https://stackoverflow.com/questions/63926460/install-ruby-2-2-on-mac-osx-catalina-with-ruby-install, https://github.com/postmodern/ruby-install/issues/375
|
28
|
+
|
29
|
+
in_fork do
|
30
|
+
require fixtures_dir("require/autoload_parent.rb")
|
31
|
+
parent = assert_node_in_parent("autoload_parent.rb", TOP_REQUIRE)
|
32
|
+
|
33
|
+
assert_node_in_parent("autoload_child.rb", parent)
|
34
|
+
end
|
14
35
|
end
|
15
36
|
|
37
|
+
test "core extension profiles useage" do
|
38
|
+
in_fork do
|
39
|
+
require fixtures_dir("require/parent_one.rb")
|
40
|
+
parent = assert_node_in_parent("parent_one.rb", TOP_REQUIRE)
|
41
|
+
assert_node_in_parent("child_one.rb", parent)
|
42
|
+
child_two = assert_node_in_parent("child_two.rb", parent)
|
43
|
+
assert_node_in_parent("relative_child", parent)
|
44
|
+
assert_node_in_parent("relative_child_two", parent)
|
45
|
+
assert_node_in_parent("raise_child.rb", child_two)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# Checks to see that the given file name is present in the
|
50
|
+
# parent tree node and that the memory of that file
|
51
|
+
# is less than the parent (since the parent should include itself
|
52
|
+
# plus its children)
|
53
|
+
#
|
54
|
+
# Returns the child node
|
16
55
|
def assert_node_in_parent(file_name, parent)
|
17
56
|
file = fixtures_dir(File.join("require", file_name))
|
18
57
|
node = parent[file]
|
19
|
-
assert node,
|
20
|
-
|
58
|
+
assert node, "Expected: #{parent.name} to include: #{file.to_s} but it did not.\nChildren: #{parent.children.map(&:name).map(&:to_s)}"
|
59
|
+
unless parent == TOP_REQUIRE
|
60
|
+
assert node.cost < parent.cost, "Expected: #{node.name.inspect} (#{node.cost}) to cost less than: #{parent.name.inspect} (#{parent.cost})"
|
61
|
+
end
|
21
62
|
node
|
22
63
|
end
|
23
64
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
65
|
+
# Used to get semi-clean process memory
|
66
|
+
# It would be better to run the requires in a totally different process
|
67
|
+
# but...that would take engineering
|
68
|
+
#
|
69
|
+
# If I was going to do that, I would find a way to serialize RequireTree
|
70
|
+
# into a json structure with file names and costs, run the script
|
71
|
+
# dump the json to a file, then in this process read the file and
|
72
|
+
# run assertions
|
73
|
+
def in_fork
|
74
|
+
Tempfile.create("stdout") do |tmp_file|
|
75
|
+
pid = fork do
|
76
|
+
$stdout.reopen(tmp_file, "w")
|
77
|
+
$stderr.reopen(tmp_file, "w")
|
78
|
+
$stdout.sync = true
|
79
|
+
$stderr.sync = true
|
80
|
+
yield
|
81
|
+
Kernel.exit!(0) # needed for https://github.com/seattlerb/minitest/pull/683
|
82
|
+
end
|
83
|
+
Process.waitpid(pid)
|
84
|
+
|
85
|
+
if $?.success?
|
86
|
+
print File.read(tmp_file)
|
87
|
+
else
|
88
|
+
raise File.read(tmp_file)
|
89
|
+
end
|
90
|
+
end
|
32
91
|
end
|
33
92
|
end
|
@@ -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
|
@@ -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 = {}
|
@@ -29,6 +42,23 @@ class StatsFromDirTest < ActiveSupport::TestCase
|
|
29
42
|
assert_equal "11.3844", format % newest.median
|
30
43
|
end
|
31
44
|
|
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"), short_sha: "5594a2d" }
|
49
|
+
branch_info["winner"] = { desc: "I am the new commit", time: Time.now + 1, file: dir.join("winner.bench.txt"), short_sha: "f1ab117" }
|
50
|
+
stats = DerailedBenchmarks::StatsFromDir.new(branch_info).call
|
51
|
+
|
52
|
+
io = StringIO.new
|
53
|
+
stats.call.banner(io)
|
54
|
+
|
55
|
+
puts io.string
|
56
|
+
|
57
|
+
assert_match(/11\.2 , 11\.28/, io.string)
|
58
|
+
assert_match(/11\.8 , 11\.88/, io.string)
|
59
|
+
end
|
60
|
+
|
61
|
+
|
32
62
|
test "alignment" do
|
33
63
|
dir = fixtures_dir("stats/significant")
|
34
64
|
branch_info = {}
|
@@ -48,10 +78,13 @@ class StatsFromDirTest < ActiveSupport::TestCase
|
|
48
78
|
|
49
79
|
test "banner faster" do
|
50
80
|
dir = fixtures_dir("stats/significant")
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
81
|
+
Branch_info = {}
|
82
|
+
|
83
|
+
require 'ostruct'
|
84
|
+
commits = []
|
85
|
+
commits << OpenStruct.new({ desc: "Old commit", time: Time.now, file: dir.join("loser.bench.txt"), ref: "loser", short_sha: "aaaaa" })
|
86
|
+
commits << OpenStruct.new({ desc: "I am the new commit", time: Time.now + 1, file: dir.join("winner.bench.txt"), ref: "winner", short_sha: "bbbbb" })
|
87
|
+
stats = DerailedBenchmarks::StatsFromDir.new(commits).call
|
55
88
|
newest = stats.newest
|
56
89
|
oldest = stats.oldest
|
57
90
|
|
@@ -72,12 +105,12 @@ class StatsFromDirTest < ActiveSupport::TestCase
|
|
72
105
|
11.0
|
73
106
|
end
|
74
107
|
|
75
|
-
expected =
|
76
|
-
[
|
108
|
+
expected = <<-EOM
|
109
|
+
[bbbbb] (10.5000 seconds) "I am the new commit" ref: "winner"
|
77
110
|
FASTER 🚀🚀🚀 by:
|
78
111
|
1.0476x [older/newer]
|
79
112
|
4.5455% [(older - newer) / older * 100]
|
80
|
-
[
|
113
|
+
[aaaaa] (11.0000 seconds) "Old commit" ref: "loser"
|
81
114
|
EOM
|
82
115
|
|
83
116
|
actual = StringIO.new
|
@@ -103,12 +136,12 @@ EOM
|
|
103
136
|
11.0
|
104
137
|
end
|
105
138
|
|
106
|
-
expected =
|
107
|
-
[loser] "I am the new commit"
|
139
|
+
expected = <<-EOM
|
140
|
+
[loser] (11.0000 seconds) "I am the new commit" ref: "loser"
|
108
141
|
SLOWER 🐢🐢🐢 by:
|
109
142
|
0.9545x [older/newer]
|
110
143
|
-4.7619% [(older - newer) / older * 100]
|
111
|
-
[winner] "Old commit"
|
144
|
+
[winner] (10.5000 seconds) "Old commit" ref: "winner"
|
112
145
|
EOM
|
113
146
|
|
114
147
|
actual = StringIO.new
|
@@ -26,21 +26,47 @@ class TasksTest < ActiveSupport::TestCase
|
|
26
26
|
env_string = env.map {|key, value| "#{key.shellescape}=#{value.to_s.shellescape}" }.join(" ")
|
27
27
|
cmd = "env #{env_string} bundle exec rake -f perf.rake #{cmd} --trace"
|
28
28
|
puts "Running: #{cmd}"
|
29
|
-
result = `cd '#{rails_app_path}' && #{cmd}`
|
30
|
-
if assert_success
|
31
|
-
|
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}"
|
32
33
|
end
|
33
34
|
|
34
35
|
result
|
35
36
|
end
|
36
37
|
|
37
|
-
test '
|
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
|
+
|
38
49
|
skip unless ENV['USING_RAILS_GIT']
|
39
50
|
|
40
|
-
env = { "TEST_COUNT" =>
|
51
|
+
env = { "TEST_COUNT" => 2, "DERAILED_SCRIPT_COUNT" => 2,
|
52
|
+
"SHAS_TO_TEST" => "acb6631cd99cdfe7db356773ef74cad7cbb570ed,12bb9d32f56883914abcd98fd72e3c68c444808d"}
|
41
53
|
puts rake "perf:library", { env: env }
|
42
54
|
end
|
43
55
|
|
56
|
+
test "rails perf:library with bad script" do
|
57
|
+
# BUNDLE_GEMFILE="$(pwd)/gemfiles/rails_git.gemfile" bundle exec m test/integration/tasks_test.rb:<linenumber>
|
58
|
+
|
59
|
+
skip unless ENV['USING_RAILS_GIT']
|
60
|
+
|
61
|
+
error = assert_raises {
|
62
|
+
env = { "DERAILED_SCRIPT" => "nopenopenop", "TEST_COUNT" => 2, "DERAILED_SCRIPT_COUNT" => 2,
|
63
|
+
"SHAS_TO_TEST" => "acb6631cd99cdfe7db356773ef74cad7cbb570ed,12bb9d32f56883914abcd98fd72e3c68c444808d"}
|
64
|
+
puts rake "perf:library", { env: env }
|
65
|
+
}
|
66
|
+
|
67
|
+
assert error.message =~ /nopenopenop:( command)? not found/, "Expected #{error.message} to include /nopenopenop: (command)? not found/ but it did not"
|
68
|
+
end
|
69
|
+
|
44
70
|
test 'hitting authenticated devise apps' do
|
45
71
|
env = { "PATH_TO_HIT" => "authenticated", "USE_AUTH" => "true", "TEST_COUNT" => "2" }
|
46
72
|
result = rake 'perf:test', env: env
|
@@ -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.
|
File without changes
|
data/test/test_helper.rb
CHANGED
@@ -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:
|
4
|
+
version: 2.0.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:
|
11
|
+
date: 2021-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: heapy
|
@@ -28,16 +28,22 @@ dependencies:
|
|
28
28
|
name: memory_profiler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '2'
|
34
37
|
type: :runtime
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
37
40
|
requirements:
|
38
|
-
- - "
|
41
|
+
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '0'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: get_process_mem
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,6 +140,62 @@ dependencies:
|
|
134
140
|
- - ">="
|
135
141
|
- !ruby/object:Gem::Version
|
136
142
|
version: '2.1'
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: mini_histogram
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
147
|
+
- - ">="
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 0.3.0
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: 0.3.0
|
157
|
+
- !ruby/object:Gem::Dependency
|
158
|
+
name: dead_end
|
159
|
+
requirement: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
type: :runtime
|
165
|
+
prerelease: false
|
166
|
+
version_requirements: !ruby/object:Gem::Requirement
|
167
|
+
requirements:
|
168
|
+
- - ">="
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0'
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: rack-test
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
type: :runtime
|
179
|
+
prerelease: false
|
180
|
+
version_requirements: !ruby/object:Gem::Requirement
|
181
|
+
requirements:
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: '0'
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: webrick
|
187
|
+
requirement: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
type: :development
|
193
|
+
prerelease: false
|
194
|
+
version_requirements: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - ">="
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0'
|
137
199
|
- !ruby/object:Gem::Dependency
|
138
200
|
name: capybara
|
139
201
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,20 +264,6 @@ dependencies:
|
|
202
264
|
- - "<"
|
203
265
|
- !ruby/object:Gem::Version
|
204
266
|
version: '6'
|
205
|
-
- !ruby/object:Gem::Dependency
|
206
|
-
name: appraisal
|
207
|
-
requirement: !ruby/object:Gem::Requirement
|
208
|
-
requirements:
|
209
|
-
- - '='
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
version: 2.2.0
|
212
|
-
type: :development
|
213
|
-
prerelease: false
|
214
|
-
version_requirements: !ruby/object:Gem::Requirement
|
215
|
-
requirements:
|
216
|
-
- - '='
|
217
|
-
- !ruby/object:Gem::Version
|
218
|
-
version: 2.2.0
|
219
267
|
description: " Go faster, off the Rails "
|
220
268
|
email:
|
221
269
|
- richard.schneeman+rubygems@gmail.com
|
@@ -224,10 +272,9 @@ executables:
|
|
224
272
|
extensions: []
|
225
273
|
extra_rdoc_files: []
|
226
274
|
files:
|
275
|
+
- ".circleci/config.yml"
|
227
276
|
- ".github/workflows/check_changelog.yml"
|
228
277
|
- ".gitignore"
|
229
|
-
- ".travis.yml"
|
230
|
-
- Appraisals
|
231
278
|
- CHANGELOG.md
|
232
279
|
- Gemfile
|
233
280
|
- README.md
|
@@ -238,23 +285,33 @@ files:
|
|
238
285
|
- gemfiles/rails_5_1.gemfile
|
239
286
|
- gemfiles/rails_5_2.gemfile
|
240
287
|
- gemfiles/rails_6_0.gemfile
|
288
|
+
- gemfiles/rails_6_1.gemfile
|
241
289
|
- gemfiles/rails_git.gemfile
|
242
290
|
- lib/derailed_benchmarks.rb
|
243
291
|
- lib/derailed_benchmarks/auth_helper.rb
|
244
292
|
- lib/derailed_benchmarks/auth_helpers/devise.rb
|
245
293
|
- lib/derailed_benchmarks/core_ext/kernel_require.rb
|
294
|
+
- lib/derailed_benchmarks/git/commit.rb
|
295
|
+
- lib/derailed_benchmarks/git/in_path.rb
|
296
|
+
- lib/derailed_benchmarks/git/switch_project.rb
|
297
|
+
- lib/derailed_benchmarks/git_switch_project.rb
|
246
298
|
- lib/derailed_benchmarks/load_tasks.rb
|
247
299
|
- lib/derailed_benchmarks/require_tree.rb
|
300
|
+
- lib/derailed_benchmarks/stats_for_file.rb
|
248
301
|
- lib/derailed_benchmarks/stats_from_dir.rb
|
249
|
-
- lib/derailed_benchmarks/stats_in_file.rb
|
250
302
|
- lib/derailed_benchmarks/tasks.rb
|
251
303
|
- lib/derailed_benchmarks/version.rb
|
252
304
|
- test/derailed_benchmarks/core_ext/kernel_require_test.rb
|
305
|
+
- test/derailed_benchmarks/git_switch_project_test.rb
|
253
306
|
- test/derailed_benchmarks/require_tree_test.rb
|
254
307
|
- test/derailed_benchmarks/stats_from_dir_test.rb
|
255
308
|
- test/derailed_test.rb
|
309
|
+
- test/fixtures/require/autoload_child.rb
|
310
|
+
- test/fixtures/require/autoload_parent.rb
|
256
311
|
- test/fixtures/require/child_one.rb
|
257
312
|
- test/fixtures/require/child_two.rb
|
313
|
+
- test/fixtures/require/load_child.rb
|
314
|
+
- test/fixtures/require/load_parent.rb
|
258
315
|
- test/fixtures/require/parent_one.rb
|
259
316
|
- test/fixtures/require/raise_child.rb
|
260
317
|
- test/fixtures/require/relative_child.rb
|
@@ -293,6 +350,7 @@ files:
|
|
293
350
|
- test/rails_app/config/locales/en.yml
|
294
351
|
- test/rails_app/config/locales/es.yml
|
295
352
|
- test/rails_app/config/routes.rb
|
353
|
+
- test/rails_app/config/storage.yml
|
296
354
|
- test/rails_app/db/migrate/20141210070547_devise_create_users.rb
|
297
355
|
- test/rails_app/db/schema.rb
|
298
356
|
- test/rails_app/perf.rake
|
@@ -314,7 +372,7 @@ homepage: https://github.com/schneems/derailed_benchmarks
|
|
314
372
|
licenses:
|
315
373
|
- MIT
|
316
374
|
metadata: {}
|
317
|
-
post_install_message:
|
375
|
+
post_install_message:
|
318
376
|
rdoc_options: []
|
319
377
|
require_paths:
|
320
378
|
- lib
|
@@ -322,24 +380,29 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
322
380
|
requirements:
|
323
381
|
- - ">="
|
324
382
|
- !ruby/object:Gem::Version
|
325
|
-
version: 2.
|
383
|
+
version: 2.5.0
|
326
384
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
327
385
|
requirements:
|
328
386
|
- - ">="
|
329
387
|
- !ruby/object:Gem::Version
|
330
388
|
version: '0'
|
331
389
|
requirements: []
|
332
|
-
rubygems_version: 3.
|
333
|
-
signing_key:
|
390
|
+
rubygems_version: 3.2.3
|
391
|
+
signing_key:
|
334
392
|
specification_version: 4
|
335
393
|
summary: Benchmarks designed to performance test your ENTIRE site
|
336
394
|
test_files:
|
337
395
|
- test/derailed_benchmarks/core_ext/kernel_require_test.rb
|
396
|
+
- test/derailed_benchmarks/git_switch_project_test.rb
|
338
397
|
- test/derailed_benchmarks/require_tree_test.rb
|
339
398
|
- test/derailed_benchmarks/stats_from_dir_test.rb
|
340
399
|
- test/derailed_test.rb
|
400
|
+
- test/fixtures/require/autoload_child.rb
|
401
|
+
- test/fixtures/require/autoload_parent.rb
|
341
402
|
- test/fixtures/require/child_one.rb
|
342
403
|
- test/fixtures/require/child_two.rb
|
404
|
+
- test/fixtures/require/load_child.rb
|
405
|
+
- test/fixtures/require/load_parent.rb
|
343
406
|
- test/fixtures/require/parent_one.rb
|
344
407
|
- test/fixtures/require/raise_child.rb
|
345
408
|
- test/fixtures/require/relative_child.rb
|
@@ -378,6 +441,7 @@ test_files:
|
|
378
441
|
- test/rails_app/config/locales/en.yml
|
379
442
|
- test/rails_app/config/locales/es.yml
|
380
443
|
- test/rails_app/config/routes.rb
|
444
|
+
- test/rails_app/config/storage.yml
|
381
445
|
- test/rails_app/db/migrate/20141210070547_devise_create_users.rb
|
382
446
|
- test/rails_app/db/schema.rb
|
383
447
|
- test/rails_app/perf.rake
|