railties 7.0.10 → 7.1.0.beta1
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 +565 -234
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.md +99 -0
- data/README.rdoc +4 -4
- data/lib/minitest/rails_plugin.rb +63 -0
- data/lib/rails/api/task.rb +35 -4
- data/lib/rails/app_updater.rb +1 -1
- data/lib/rails/application/bootstrap.rb +12 -3
- data/lib/rails/application/configuration.rb +179 -67
- data/lib/rails/application/default_middleware_stack.rb +8 -2
- data/lib/rails/application/dummy_config.rb +19 -0
- data/lib/rails/application/finisher.rb +40 -33
- data/lib/rails/application.rb +116 -31
- data/lib/rails/backtrace_cleaner.rb +1 -1
- data/lib/rails/cli.rb +5 -2
- data/lib/rails/command/actions.rb +10 -12
- data/lib/rails/command/base.rb +55 -53
- data/lib/rails/command/environment_argument.rb +32 -16
- data/lib/rails/command/helpers/editor.rb +17 -12
- data/lib/rails/command.rb +84 -33
- data/lib/rails/commands/about/about_command.rb +14 -0
- data/lib/rails/commands/application/application_command.rb +2 -0
- data/lib/rails/commands/console/console_command.rb +14 -14
- data/lib/rails/commands/credentials/USAGE +53 -55
- data/lib/rails/commands/credentials/credentials_command/diffing.rb +5 -3
- data/lib/rails/commands/credentials/credentials_command.rb +64 -70
- data/lib/rails/commands/db/system/change/change_command.rb +2 -1
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +25 -115
- data/lib/rails/commands/destroy/destroy_command.rb +3 -2
- data/lib/rails/commands/dev/dev_command.rb +1 -6
- data/lib/rails/commands/encrypted/USAGE +15 -20
- data/lib/rails/commands/encrypted/encrypted_command.rb +46 -35
- data/lib/rails/commands/gem_help/USAGE +16 -0
- data/lib/rails/commands/gem_help/gem_help_command.rb +13 -0
- data/lib/rails/commands/generate/generate_command.rb +2 -2
- data/lib/rails/commands/help/USAGE +13 -13
- data/lib/rails/commands/help/help_command.rb +21 -2
- data/lib/rails/commands/initializers/initializers_command.rb +1 -4
- data/lib/rails/commands/middleware/middleware_command.rb +17 -0
- data/lib/rails/commands/new/new_command.rb +2 -0
- data/lib/rails/commands/notes/notes_command.rb +2 -1
- data/lib/rails/commands/plugin/plugin_command.rb +2 -0
- data/lib/rails/commands/rake/rake_command.rb +25 -22
- data/lib/rails/commands/restart/restart_command.rb +14 -0
- data/lib/rails/commands/routes/routes_command.rb +13 -1
- data/lib/rails/commands/runner/USAGE +14 -12
- data/lib/rails/commands/runner/runner_command.rb +32 -20
- data/lib/rails/commands/secret/secret_command.rb +13 -0
- data/lib/rails/commands/secrets/USAGE +44 -49
- data/lib/rails/commands/secrets/secrets_command.rb +19 -38
- data/lib/rails/commands/server/server_command.rb +32 -31
- data/lib/rails/commands/test/USAGE +14 -0
- data/lib/rails/commands/test/test_command.rb +56 -14
- data/lib/rails/commands/unused_routes/unused_routes_command.rb +75 -0
- data/lib/rails/commands/version/version_command.rb +1 -0
- data/lib/rails/configuration.rb +5 -5
- data/lib/rails/console/app.rb +1 -4
- data/lib/rails/deprecator.rb +7 -0
- data/lib/rails/engine/configuration.rb +5 -0
- data/lib/rails/engine.rb +36 -16
- data/lib/rails/gem_version.rb +4 -4
- data/lib/rails/generators/actions.rb +6 -15
- data/lib/rails/generators/active_model.rb +14 -28
- data/lib/rails/generators/app_base.rb +353 -82
- data/lib/rails/generators/app_name.rb +3 -14
- data/lib/rails/generators/base.rb +17 -9
- data/lib/rails/generators/database.rb +19 -1
- data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +1 -1
- data/lib/rails/generators/generated_attribute.rb +2 -1
- data/lib/rails/generators/migration.rb +1 -2
- data/lib/rails/generators/model_helpers.rb +2 -1
- data/lib/rails/generators/rails/app/USAGE +15 -6
- data/lib/rails/generators/rails/app/app_generator.rb +84 -60
- data/lib/rails/generators/rails/app/templates/Dockerfile.tt +107 -0
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +9 -11
- data/lib/rails/generators/rails/app/templates/app/views/layouts/mailer.html.erb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/bin/setup.tt +10 -1
- data/lib/rails/generators/rails/app/templates/config/application.rb.tt +4 -17
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +0 -2
- data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/databases/trilogy.yml.tt +59 -0
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +10 -2
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +28 -24
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +11 -7
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +2 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.tt +223 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -9
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +11 -13
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +10 -19
- data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +4 -0
- data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +6 -4
- data/lib/rails/generators/rails/app/templates/docker-entrypoint.tt +10 -0
- data/lib/rails/generators/rails/app/templates/dockerignore.tt +43 -0
- data/lib/rails/generators/rails/app/templates/gitignore.tt +1 -9
- data/lib/rails/generators/rails/app/templates/node-version.tt +1 -0
- data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +10 -8
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +9 -7
- data/lib/rails/generators/rails/application_record/application_record_generator.rb +4 -0
- data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +2 -1
- data/lib/rails/generators/rails/controller/USAGE +12 -4
- data/lib/rails/generators/rails/controller/controller_generator.rb +5 -0
- data/lib/rails/generators/rails/controller/templates/controller.rb.tt +1 -1
- data/lib/rails/generators/rails/credentials/credentials_generator.rb +29 -24
- data/lib/rails/generators/rails/credentials/templates/credentials.yml.tt +8 -0
- data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -2
- data/lib/rails/generators/rails/migration/USAGE +21 -11
- data/lib/rails/generators/rails/model/model_generator.rb +4 -0
- data/lib/rails/generators/rails/plugin/USAGE +17 -6
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +5 -15
- data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +2 -2
- data/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -17
- data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -2
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +4 -4
- data/lib/rails/generators/rails/resource/resource_generator.rb +6 -0
- data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +2 -1
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +1 -1
- data/lib/rails/generators/test_case.rb +2 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +1 -1
- data/lib/rails/generators/testing/{behaviour.rb → behavior.rb} +4 -1
- data/lib/rails/generators.rb +6 -14
- data/lib/rails/health_controller.rb +55 -0
- data/lib/rails/info.rb +1 -1
- data/lib/rails/info_controller.rb +31 -11
- data/lib/rails/mailers_controller.rb +15 -5
- data/lib/rails/rack/logger.rb +15 -12
- data/lib/rails/rackup/server.rb +15 -0
- data/lib/rails/railtie/configuration.rb +14 -1
- data/lib/rails/railtie.rb +18 -18
- data/lib/rails/ruby_version_check.rb +2 -0
- data/lib/rails/source_annotation_extractor.rb +67 -18
- data/lib/rails/tasks/engine.rake +8 -8
- data/lib/rails/tasks/framework.rake +4 -10
- data/lib/rails/tasks/log.rake +1 -1
- data/lib/rails/tasks/misc.rake +3 -14
- data/lib/rails/tasks/statistics.rake +5 -4
- data/lib/rails/tasks/tmp.rake +5 -5
- data/lib/rails/tasks/zeitwerk.rake +1 -1
- data/lib/rails/tasks.rb +0 -2
- data/lib/rails/templates/rails/mailers/email.html.erb +25 -0
- data/lib/rails/templates/rails/mailers/index.html.erb +14 -7
- data/lib/rails/templates/rails/mailers/mailer.html.erb +11 -5
- data/lib/rails/templates/rails/welcome/index.html.erb +1 -0
- data/lib/rails/test_help.rb +7 -7
- data/lib/rails/test_unit/line_filtering.rb +1 -1
- data/lib/rails/test_unit/reporter.rb +6 -2
- data/lib/rails/test_unit/runner.rb +36 -18
- data/lib/rails/test_unit/test_parser.rb +88 -0
- data/lib/rails/test_unit/testing.rake +13 -33
- data/lib/rails/version.rb +1 -1
- data/lib/rails.rb +15 -15
- metadata +69 -31
- data/RDOC_MAIN.rdoc +0 -97
- data/lib/rails/application/dummy_erb_compiler.rb +0 -18
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +0 -143
- data/lib/rails/generators/rails/model/USAGE +0 -113
- data/lib/rails/tasks/middleware.rake +0 -9
- data/lib/rails/tasks/restart.rake +0 -9
data/lib/rails/test_help.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# :enddoc:
|
|
4
|
+
|
|
3
5
|
# Make double-sure the RAILS_ENV is not set to production,
|
|
4
6
|
# so fixtures aren't loaded into that environment
|
|
5
7
|
abort("Abort testing: Your Rails environment is running in production mode!") if Rails.env.production?
|
|
@@ -24,12 +26,12 @@ if defined?(ActiveRecord::Base)
|
|
|
24
26
|
include ActiveRecord::TestDatabases
|
|
25
27
|
include ActiveRecord::TestFixtures
|
|
26
28
|
|
|
27
|
-
self.
|
|
28
|
-
self.file_fixture_path =
|
|
29
|
+
self.fixture_paths << "#{Rails.root}/test/fixtures/"
|
|
30
|
+
self.file_fixture_path = "#{Rails.root}/test/fixtures/files"
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
ActiveSupport.on_load(:action_dispatch_integration_test) do
|
|
32
|
-
self.
|
|
34
|
+
self.fixture_paths += ActiveSupport::TestCase.fixture_paths
|
|
33
35
|
end
|
|
34
36
|
else
|
|
35
37
|
ActiveSupport.on_load(:active_support_test_case) do
|
|
@@ -37,17 +39,15 @@ else
|
|
|
37
39
|
end
|
|
38
40
|
end
|
|
39
41
|
|
|
40
|
-
# :enddoc:
|
|
41
|
-
|
|
42
42
|
ActiveSupport.on_load(:action_controller_test_case) do
|
|
43
|
-
def before_setup
|
|
43
|
+
def before_setup
|
|
44
44
|
@routes = Rails.application.routes
|
|
45
45
|
super
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
ActiveSupport.on_load(:action_dispatch_integration_test) do
|
|
50
|
-
def before_setup
|
|
50
|
+
def before_setup
|
|
51
51
|
@routes = Rails.application.routes
|
|
52
52
|
super
|
|
53
53
|
end
|
|
@@ -5,7 +5,7 @@ require "rails/test_unit/runner"
|
|
|
5
5
|
module Rails
|
|
6
6
|
module LineFiltering # :nodoc:
|
|
7
7
|
def run(reporter, options = {})
|
|
8
|
-
options
|
|
8
|
+
options = options.merge(filter: Rails::TestUnit::Runner.compose_filter(self, options[:filter]))
|
|
9
9
|
|
|
10
10
|
super
|
|
11
11
|
end
|
|
@@ -6,7 +6,7 @@ require "minitest"
|
|
|
6
6
|
module Rails
|
|
7
7
|
class TestUnitReporter < Minitest::StatisticsReporter
|
|
8
8
|
class_attribute :app_root
|
|
9
|
-
class_attribute :executable, default: "rails test"
|
|
9
|
+
class_attribute :executable, default: "bin/rails test"
|
|
10
10
|
|
|
11
11
|
def record(result)
|
|
12
12
|
super
|
|
@@ -52,7 +52,11 @@ module Rails
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def relative_path_for(file)
|
|
55
|
-
|
|
55
|
+
if app_root
|
|
56
|
+
file.sub(/^#{app_root}\/?/, "")
|
|
57
|
+
else
|
|
58
|
+
file
|
|
59
|
+
end
|
|
56
60
|
end
|
|
57
61
|
|
|
58
62
|
private
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "shellwords"
|
|
4
|
-
require "method_source"
|
|
5
4
|
require "rake/file_list"
|
|
6
5
|
require "active_support"
|
|
7
6
|
require "active_support/core_ext/module/attribute_accessors"
|
|
7
|
+
require "active_support/core_ext/range"
|
|
8
|
+
require "rails/test_unit/test_parser"
|
|
8
9
|
|
|
9
10
|
module Rails
|
|
10
11
|
module TestUnit
|
|
11
12
|
class Runner
|
|
13
|
+
TEST_FOLDERS = [:models, :helpers, :channels, :controllers, :mailers, :integration, :jobs, :mailboxes]
|
|
14
|
+
PATH_ARGUMENT_PATTERN = %r"^(?!/.+/$)[.\w]*[/\\]"
|
|
12
15
|
mattr_reader :filters, default: []
|
|
13
16
|
|
|
14
17
|
class << self
|
|
@@ -30,9 +33,9 @@ module Rails
|
|
|
30
33
|
$VERBOSE = argv.delete_at(w_index) if w_index
|
|
31
34
|
end
|
|
32
35
|
|
|
33
|
-
def
|
|
36
|
+
def run_from_rake(test_command, argv = [])
|
|
34
37
|
# Ensure the tests run during the Rake Task action, not when the process exits
|
|
35
|
-
success = system("rails",
|
|
38
|
+
success = system("rails", test_command, *argv, *Shellwords.split(ENV["TESTOPTS"] || ""))
|
|
36
39
|
success || exit(false)
|
|
37
40
|
end
|
|
38
41
|
|
|
@@ -43,11 +46,14 @@ module Rails
|
|
|
43
46
|
end
|
|
44
47
|
|
|
45
48
|
def load_tests(argv)
|
|
46
|
-
|
|
49
|
+
patterns = extract_filters(argv)
|
|
50
|
+
tests = list_tests(patterns)
|
|
47
51
|
tests.to_a.each { |path| require File.expand_path(path) }
|
|
48
52
|
end
|
|
49
53
|
|
|
50
54
|
def compose_filter(runnable, filter)
|
|
55
|
+
filter = normalize_declarative_test_filter(filter)
|
|
56
|
+
|
|
51
57
|
if filters.any? { |_, lines| lines.any? }
|
|
52
58
|
CompositeFilter.new(runnable, filter, filters)
|
|
53
59
|
else
|
|
@@ -59,11 +65,11 @@ module Rails
|
|
|
59
65
|
def extract_filters(argv)
|
|
60
66
|
# Extract absolute and relative paths but skip -n /.*/ regexp filters.
|
|
61
67
|
argv.filter_map do |path|
|
|
62
|
-
next unless path_argument?(path)
|
|
68
|
+
next unless path_argument?(path)
|
|
63
69
|
|
|
64
70
|
path = path.tr("\\", "/")
|
|
65
71
|
case
|
|
66
|
-
when /(:\d+)+$/.match?(path)
|
|
72
|
+
when /(:\d+(-\d+)?)+$/.match?(path)
|
|
67
73
|
file, *lines = path.split(":")
|
|
68
74
|
filters << [ file, lines ]
|
|
69
75
|
file
|
|
@@ -89,16 +95,27 @@ module Rails
|
|
|
89
95
|
end
|
|
90
96
|
|
|
91
97
|
def path_argument?(arg)
|
|
92
|
-
|
|
98
|
+
PATH_ARGUMENT_PATTERN.match?(arg)
|
|
93
99
|
end
|
|
94
100
|
|
|
95
|
-
def list_tests(
|
|
96
|
-
patterns = extract_filters(argv)
|
|
97
|
-
|
|
101
|
+
def list_tests(patterns)
|
|
98
102
|
tests = Rake::FileList[patterns.any? ? patterns : default_test_glob]
|
|
99
103
|
tests.exclude(default_test_exclude_glob) if patterns.empty?
|
|
100
104
|
tests
|
|
101
105
|
end
|
|
106
|
+
|
|
107
|
+
def normalize_declarative_test_filter(filter)
|
|
108
|
+
if filter.is_a?(String)
|
|
109
|
+
if regexp_filter?(filter)
|
|
110
|
+
# Minitest::Spec::DSL#it does not replace whitespace in method
|
|
111
|
+
# names, so match unmodified method names as well.
|
|
112
|
+
filter = filter.gsub(/\s+/, "_").delete_suffix("/") + "|" + filter.delete_prefix("/")
|
|
113
|
+
elsif !filter.start_with?("test_")
|
|
114
|
+
filter = "test_#{filter.gsub(/\s+/, "_")}"
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
filter
|
|
118
|
+
end
|
|
102
119
|
end
|
|
103
120
|
end
|
|
104
121
|
|
|
@@ -139,17 +156,21 @@ module Rails
|
|
|
139
156
|
end
|
|
140
157
|
|
|
141
158
|
class Filter # :nodoc:
|
|
142
|
-
def initialize(runnable, file,
|
|
159
|
+
def initialize(runnable, file, line_or_range)
|
|
143
160
|
@runnable, @file = runnable, File.expand_path(file)
|
|
144
|
-
|
|
161
|
+
if line_or_range
|
|
162
|
+
first, last = line_or_range.split("-").map(&:to_i)
|
|
163
|
+
last ||= first
|
|
164
|
+
@line_range = Range.new(first, last)
|
|
165
|
+
end
|
|
145
166
|
end
|
|
146
167
|
|
|
147
168
|
def ===(method)
|
|
148
169
|
return unless @runnable.method_defined?(method)
|
|
149
170
|
|
|
150
|
-
if @
|
|
171
|
+
if @line_range
|
|
151
172
|
test_file, test_range = definition_for(@runnable.instance_method(method))
|
|
152
|
-
test_file == @file &&
|
|
173
|
+
test_file == @file && @line_range.overlaps?(test_range)
|
|
153
174
|
else
|
|
154
175
|
@runnable.instance_method(method).source_location.first == @file
|
|
155
176
|
end
|
|
@@ -157,10 +178,7 @@ module Rails
|
|
|
157
178
|
|
|
158
179
|
private
|
|
159
180
|
def definition_for(method)
|
|
160
|
-
|
|
161
|
-
end_line = method.source.count("\n") + start_line - 1
|
|
162
|
-
|
|
163
|
-
return file, start_line..end_line
|
|
181
|
+
TestParser.definition_for(method)
|
|
164
182
|
end
|
|
165
183
|
end
|
|
166
184
|
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "ripper"
|
|
4
|
+
|
|
5
|
+
module Rails
|
|
6
|
+
module TestUnit
|
|
7
|
+
# Parse a test file to extract the line ranges of all tests in both
|
|
8
|
+
# method-style (def test_foo) and declarative-style (test "foo" do)
|
|
9
|
+
class TestParser < Ripper # :nodoc:
|
|
10
|
+
# Helper to translate a method object into the path and line range where
|
|
11
|
+
# the method was defined.
|
|
12
|
+
def self.definition_for(method_obj)
|
|
13
|
+
path, begin_line = method_obj.source_location
|
|
14
|
+
begins_to_ends = new(File.read(path), path).parse
|
|
15
|
+
return unless end_line = begins_to_ends[begin_line]
|
|
16
|
+
[path, (begin_line..end_line)]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def initialize(*)
|
|
20
|
+
# A hash mapping the 1-indexed line numbers that tests start on to where they end.
|
|
21
|
+
@begins_to_ends = {}
|
|
22
|
+
super
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def parse
|
|
26
|
+
super
|
|
27
|
+
@begins_to_ends
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# method test e.g. `def test_some_description`
|
|
31
|
+
# This event's first argument gets the `ident` node containing the method
|
|
32
|
+
# name, which we have overridden to return the line number of the ident
|
|
33
|
+
# instead.
|
|
34
|
+
def on_def(begin_line, *)
|
|
35
|
+
@begins_to_ends[begin_line] = lineno
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Everything past this point is to support declarative tests, which
|
|
39
|
+
# require more work to get right because of the many different ways
|
|
40
|
+
# methods can be invoked in ruby, all of which are parsed differently.
|
|
41
|
+
#
|
|
42
|
+
# The approach is just to store the current line number when the
|
|
43
|
+
# "test" method is called and pass it up the tree so it's available at
|
|
44
|
+
# the point when we also know the line where the associated block ends.
|
|
45
|
+
|
|
46
|
+
def on_method_add_block(begin_line, end_line)
|
|
47
|
+
if begin_line && end_line
|
|
48
|
+
@begins_to_ends[begin_line] = end_line
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def on_command_call(*, begin_lineno, _args)
|
|
53
|
+
begin_lineno
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def first_arg(arg, *)
|
|
57
|
+
arg
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def just_lineno(*)
|
|
61
|
+
lineno
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
alias on_method_add_arg first_arg
|
|
65
|
+
alias on_command first_arg
|
|
66
|
+
alias on_stmts_add first_arg
|
|
67
|
+
alias on_arg_paren first_arg
|
|
68
|
+
alias on_bodystmt first_arg
|
|
69
|
+
|
|
70
|
+
alias on_ident just_lineno
|
|
71
|
+
alias on_do_block just_lineno
|
|
72
|
+
alias on_stmts_new just_lineno
|
|
73
|
+
alias on_brace_block just_lineno
|
|
74
|
+
|
|
75
|
+
def on_args_new
|
|
76
|
+
[]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def on_args_add(parts, part)
|
|
80
|
+
parts << part
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def on_args_add_block(args, *rest)
|
|
84
|
+
args.first
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
gem "minitest"
|
|
4
3
|
require "minitest"
|
|
5
4
|
require "rails/test_unit/runner"
|
|
6
5
|
|
|
7
6
|
task default: :test
|
|
8
7
|
|
|
9
|
-
desc "
|
|
8
|
+
desc "Run all tests in test folder except system ones"
|
|
10
9
|
task :test do
|
|
11
|
-
|
|
12
|
-
Rails::TestUnit::Runner.rake_run([ENV["TEST"]])
|
|
13
|
-
else
|
|
14
|
-
Rails::TestUnit::Runner.rake_run
|
|
15
|
-
end
|
|
10
|
+
Rails::TestUnit::Runner.run_from_rake("test", Array(ENV["TEST"]))
|
|
16
11
|
end
|
|
17
12
|
|
|
18
13
|
namespace :test do
|
|
@@ -23,37 +18,22 @@ namespace :test do
|
|
|
23
18
|
|
|
24
19
|
task run: %w[test]
|
|
25
20
|
|
|
26
|
-
desc "
|
|
21
|
+
desc "Reset the database and run `bin/rails test`"
|
|
27
22
|
task :db do
|
|
28
23
|
success = system({ "RAILS_ENV" => ENV.fetch("RAILS_ENV", "test") }, "rake", "db:test:prepare", "test")
|
|
29
24
|
success || exit(false)
|
|
30
25
|
end
|
|
31
26
|
|
|
32
|
-
[
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
[
|
|
28
|
+
*Rails::TestUnit::Runner::TEST_FOLDERS,
|
|
29
|
+
:all,
|
|
30
|
+
:generators,
|
|
31
|
+
:units,
|
|
32
|
+
:functionals,
|
|
33
|
+
:system,
|
|
34
|
+
].each do |name|
|
|
35
|
+
task name do
|
|
36
|
+
Rails::TestUnit::Runner.run_from_rake("test:#{name}")
|
|
35
37
|
end
|
|
36
38
|
end
|
|
37
|
-
|
|
38
|
-
desc "Runs all tests, including system tests"
|
|
39
|
-
task all: "test:prepare" do
|
|
40
|
-
Rails::TestUnit::Runner.rake_run(["test/**/*_test.rb"])
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
task generators: "test:prepare" do
|
|
44
|
-
Rails::TestUnit::Runner.rake_run(["test/lib/generators"])
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
task units: "test:prepare" do
|
|
48
|
-
Rails::TestUnit::Runner.rake_run(["test/models", "test/helpers", "test/unit"])
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
task functionals: "test:prepare" do
|
|
52
|
-
Rails::TestUnit::Runner.rake_run(["test/controllers", "test/mailers", "test/functional"])
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
desc "Run system tests only"
|
|
56
|
-
task system: "test:prepare" do
|
|
57
|
-
Rails::TestUnit::Runner.rake_run(["test/system"])
|
|
58
|
-
end
|
|
59
39
|
end
|
data/lib/rails/version.rb
CHANGED
data/lib/rails.rb
CHANGED
|
@@ -10,8 +10,10 @@ require "active_support/core_ext/module/delegation"
|
|
|
10
10
|
require "active_support/core_ext/array/extract_options"
|
|
11
11
|
require "active_support/core_ext/object/blank"
|
|
12
12
|
|
|
13
|
-
require "rails/application"
|
|
14
13
|
require "rails/version"
|
|
14
|
+
require "rails/deprecator"
|
|
15
|
+
require "rails/application"
|
|
16
|
+
require "rails/backtrace_cleaner"
|
|
15
17
|
|
|
16
18
|
require "active_support/railtie"
|
|
17
19
|
require "action_dispatch/railtie"
|
|
@@ -22,10 +24,12 @@ silence_warnings do
|
|
|
22
24
|
Encoding.default_internal = Encoding::UTF_8
|
|
23
25
|
end
|
|
24
26
|
|
|
27
|
+
# :include: railties/README.rdoc
|
|
25
28
|
module Rails
|
|
26
29
|
extend ActiveSupport::Autoload
|
|
27
30
|
extend ActiveSupport::Benchmarkable
|
|
28
31
|
|
|
32
|
+
autoload :HealthController
|
|
29
33
|
autoload :Info
|
|
30
34
|
autoload :InfoController
|
|
31
35
|
autoload :MailersController
|
|
@@ -42,20 +46,16 @@ module Rails
|
|
|
42
46
|
|
|
43
47
|
delegate :initialize!, :initialized?, to: :application
|
|
44
48
|
|
|
45
|
-
# The Configuration instance used to configure the Rails environment
|
|
49
|
+
# The Configuration instance used to configure the \Rails environment
|
|
46
50
|
def configuration
|
|
47
51
|
application.config
|
|
48
52
|
end
|
|
49
53
|
|
|
50
54
|
def backtrace_cleaner
|
|
51
|
-
@backtrace_cleaner ||=
|
|
52
|
-
# Relies on Active Support, so we have to lazy load to postpone definition until Active Support has been loaded
|
|
53
|
-
require "rails/backtrace_cleaner"
|
|
54
|
-
Rails::BacktraceCleaner.new
|
|
55
|
-
end
|
|
55
|
+
@backtrace_cleaner ||= Rails::BacktraceCleaner.new
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
# Returns a Pathname object of the current Rails project,
|
|
58
|
+
# Returns a Pathname object of the current \Rails project,
|
|
59
59
|
# otherwise it returns +nil+ if there is no project:
|
|
60
60
|
#
|
|
61
61
|
# Rails.root
|
|
@@ -64,7 +64,7 @@ module Rails
|
|
|
64
64
|
application && application.config.root
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
# Returns the current Rails environment.
|
|
67
|
+
# Returns the current \Rails environment.
|
|
68
68
|
#
|
|
69
69
|
# Rails.env # => "development"
|
|
70
70
|
# Rails.env.development? # => true
|
|
@@ -73,14 +73,14 @@ module Rails
|
|
|
73
73
|
@_env ||= ActiveSupport::EnvironmentInquirer.new(ENV["RAILS_ENV"].presence || ENV["RACK_ENV"].presence || "development")
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
# Sets the Rails environment.
|
|
76
|
+
# Sets the \Rails environment.
|
|
77
77
|
#
|
|
78
78
|
# Rails.env = "staging" # => "staging"
|
|
79
79
|
def env=(environment)
|
|
80
80
|
@_env = ActiveSupport::EnvironmentInquirer.new(environment)
|
|
81
81
|
end
|
|
82
82
|
|
|
83
|
-
# Returns the ActiveSupport::ErrorReporter of the current Rails project,
|
|
83
|
+
# Returns the ActiveSupport::ErrorReporter of the current \Rails project,
|
|
84
84
|
# otherwise it returns +nil+ if there is no project.
|
|
85
85
|
#
|
|
86
86
|
# Rails.error.handle(IOError) do
|
|
@@ -88,12 +88,12 @@ module Rails
|
|
|
88
88
|
# end
|
|
89
89
|
# Rails.error.report(error)
|
|
90
90
|
def error
|
|
91
|
-
|
|
91
|
+
ActiveSupport.error_reporter
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
# Returns all Rails groups for loading based on:
|
|
94
|
+
# Returns all \Rails groups for loading based on:
|
|
95
95
|
#
|
|
96
|
-
# * The Rails environment;
|
|
96
|
+
# * The \Rails environment;
|
|
97
97
|
# * The environment variable RAILS_GROUPS;
|
|
98
98
|
# * The optional envs given as argument and the hash with group dependencies;
|
|
99
99
|
#
|
|
@@ -112,7 +112,7 @@ module Rails
|
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
# Returns a Pathname object of the public folder of the current
|
|
115
|
-
# Rails project, otherwise it returns +nil+ if there is no project:
|
|
115
|
+
# \Rails project, otherwise it returns +nil+ if there is no project:
|
|
116
116
|
#
|
|
117
117
|
# Rails.public_path
|
|
118
118
|
# # => #<Pathname:/Users/someuser/some/path/project/public>
|