railties 5.0.4 → 5.0.5.rc1

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
2
  SHA1:
3
- metadata.gz: 1647a6c62aa3376c81b7f8a8b9e2dc97f7176f2e
4
- data.tar.gz: 8edab02a2158673b708e90b575e1059d345005ba
3
+ metadata.gz: 5fc8513181d9478eb66b82425938d379d271dd94
4
+ data.tar.gz: 171241e22916d1cf85d07944acb4476242934531
5
5
  SHA512:
6
- metadata.gz: 9351e785858fcc8db84f3541533112088fa634ca4e9478b088f90f65f62295f08008b3bfa5de49c2e92042882d003eafd7db85fd674a555eec3fa0ea0c2cd605
7
- data.tar.gz: f0a0f5a8a264dc257f7f74a62ac64e925872cd3e9c705a08f189a157572184760afb238d173113533b5c11099011dfe829dc205a3bb662f1fcee1497b36ef3dd
6
+ metadata.gz: 5ff37e2fb736b9cb9161b091588058a781ba4dbc5465daf11303e6a8a9da222a8df4d4d8e8c1623510f45e1d82226c77fbaa76047414e177259aae3e844cb767
7
+ data.tar.gz: 4c8b35c7219c6de06e16ced2ca82b972b975152fd0dc42be6a7aa5a17876c4b5dfcbef5dbf6a51991a965b9772e065c013c698c9352a947fc38592f06f29716e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## Rails 5.0.5.rc1 (July 19, 2017) ##
2
+
3
+ * Make Rails' test runner work better with minitest plugins.
4
+
5
+ By demoting the Rails test runner to just another minitest plugin —
6
+ and thereby not eager loading it — we can co-exist much better with
7
+ other minitest plugins such as pride and minitest-focus.
8
+
9
+ *Kasper Timm Hansen*
10
+
1
11
  ## Rails 5.0.4 (June 19, 2017) ##
2
12
 
3
13
  * No changes.
@@ -0,0 +1,49 @@
1
+ require "active_support/core_ext/module/attribute_accessors"
2
+ require "rails/test_unit/reporter"
3
+
4
+ module Minitest
5
+ class SuppressedSummaryReporter < SummaryReporter
6
+ # Disable extra failure output after a run if output is inline.
7
+ def aggregated_results(*)
8
+ super unless options[:output_inline]
9
+ end
10
+ end
11
+
12
+ def self.plugin_rails_options(opts, options)
13
+ opts.on("-b", "--backtrace", "Show the complete backtrace") do
14
+ options[:full_backtrace] = true
15
+ end
16
+
17
+ opts.on("-d", "--defer-output", "Output test failures and errors after the test run") do
18
+ options[:output_inline] = false
19
+ end
20
+
21
+ opts.on("-f", "--fail-fast", "Abort test run on first failure or error") do
22
+ options[:fail_fast] = true
23
+ end
24
+
25
+ opts.on("-c", "--[no-]color", "Enable color in the output") do |value|
26
+ options[:color] = value
27
+ end
28
+
29
+ options[:color] = true
30
+ options[:output_inline] = true
31
+ end
32
+
33
+ # Owes great inspiration to test runner trailblazers like RSpec,
34
+ # minitest-reporters, maxitest and others.
35
+ def self.plugin_rails_init(options)
36
+ unless options[:full_backtrace] || ENV["BACKTRACE"]
37
+ # Plugin can run without Rails loaded, check before filtering.
38
+ Minitest.backtrace_filter = ::Rails.backtrace_cleaner if ::Rails.respond_to?(:backtrace_cleaner)
39
+ end
40
+
41
+ # Replace progress reporter for colors.
42
+ reporter.reporters.delete_if { |reporter| reporter.kind_of?(SummaryReporter) || reporter.kind_of?(ProgressReporter) }
43
+ reporter << SuppressedSummaryReporter.new(options[:io], options)
44
+ reporter << ::Rails::TestUnitReporter.new(options[:io], options)
45
+ end
46
+
47
+ # Backwardscompatibility with Rails 5.0 generated plugin test scripts
48
+ mattr_reader(:run_via) { Hash.new }
49
+ end
Binary file
Binary file
Binary file
@@ -1,4 +1,4 @@
1
- require "rails/test_unit/minitest_plugin"
1
+ require "rails/test_unit/runner"
2
2
 
3
3
  if defined?(ENGINE_ROOT)
4
4
  $LOAD_PATH << File.expand_path("test", ENGINE_ROOT)
@@ -6,6 +6,5 @@ else
6
6
  $LOAD_PATH << File.expand_path("../../test", APP_PATH)
7
7
  end
8
8
 
9
- Minitest.run_via = :rails
10
-
11
- require "active_support/testing/autorun"
9
+ Rails::TestUnit::Runner.parse_options(ARGV)
10
+ Rails::TestUnit::Runner.run(ARGV)
Binary file
@@ -7,8 +7,8 @@ module Rails
7
7
  module VERSION
8
8
  MAJOR = 5
9
9
  MINOR = 0
10
- TINY = 4
11
- PRE = nil
10
+ TINY = 5
11
+ PRE = "rc1"
12
12
 
13
13
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
14
14
  end
@@ -8,7 +8,7 @@
8
8
  <%- end -%>
9
9
  # Read the Guide for Upgrading Ruby on Rails for more info on each option.
10
10
 
11
- Rails.application.config.raise_on_unfiltered_parameters = true
11
+ Rails.application.config.action_controller.raise_on_unfiltered_parameters = true
12
12
  <%- unless options[:api] -%>
13
13
 
14
14
  # Enable per-form CSRF tokens. Previous versions had false.
@@ -1,10 +1,10 @@
1
1
  $: << File.expand_path(File.expand_path('../../test', __FILE__))
2
2
 
3
3
  require 'bundler/setup'
4
- require 'rails/test_unit/minitest_plugin'
4
+ require 'rails/test_unit/runner'
5
+ require 'rails/test_unit/reporter'
5
6
 
6
7
  Rails::TestUnitReporter.executable = 'bin/test'
7
8
 
8
- Minitest.run_via = :rails
9
-
10
- require "active_support/testing/autorun"
9
+ Rails::TestUnit::Runner.parse_options(ARGV)
10
+ Rails::TestUnit::Runner.run(ARGV)
@@ -2,7 +2,6 @@
2
2
  # so fixtures aren't loaded into that environment
3
3
  abort("Abort testing: Your Rails environment is running in production mode!") if Rails.env.production?
4
4
 
5
- require "rails/test_unit/minitest_plugin"
6
5
  require 'active_support/test_case'
7
6
  require 'action_controller'
8
7
  require 'action_controller/test_case'
@@ -1,78 +1,12 @@
1
1
  require 'method_source'
2
+ require "rails/test_unit/runner"
2
3
 
3
4
  module Rails
4
5
  module LineFiltering # :nodoc:
5
6
  def run(reporter, options = {})
6
- if options[:patterns] && options[:patterns].any? { |p| p =~ /:\d+/ }
7
- options[:filter] = \
8
- CompositeFilter.new(self, options[:filter], options[:patterns])
9
- end
7
+ options[:filter] = Rails::TestUnit::Runner.compose_filter(self, options[:filter])
10
8
 
11
9
  super
12
10
  end
13
11
  end
14
-
15
- class CompositeFilter # :nodoc:
16
- attr_reader :named_filter
17
-
18
- def initialize(runnable, filter, patterns)
19
- @runnable = runnable
20
- @named_filter = derive_named_filter(filter)
21
- @filters = [ @named_filter, *derive_line_filters(patterns) ].compact
22
- end
23
-
24
- # Minitest uses === to find matching filters.
25
- def ===(method)
26
- @filters.any? { |filter| filter === method }
27
- end
28
-
29
- private
30
- def derive_named_filter(filter)
31
- if filter.respond_to?(:named_filter)
32
- filter.named_filter
33
- elsif filter =~ %r%/(.*)/% # Regexp filtering copied from Minitest.
34
- Regexp.new $1
35
- elsif filter.is_a?(String)
36
- filter
37
- end
38
- end
39
-
40
- def derive_line_filters(patterns)
41
- patterns.flat_map do |file_and_line|
42
- file, *lines = file_and_line.split(':')
43
-
44
- if lines.empty?
45
- Filter.new(@runnable, file, nil) if file
46
- else
47
- lines.map { |line| Filter.new(@runnable, file, line) }
48
- end
49
- end
50
- end
51
- end
52
-
53
- class Filter # :nodoc:
54
- def initialize(runnable, file, line)
55
- @runnable, @file = runnable, File.expand_path(file)
56
- @line = line.to_i if line
57
- end
58
-
59
- def ===(method)
60
- return unless @runnable.method_defined?(method)
61
-
62
- if @line
63
- test_file, test_range = definition_for(@runnable.instance_method(method))
64
- test_file == @file && test_range.include?(@line)
65
- else
66
- @runnable.instance_method(method).source_location.first == @file
67
- end
68
- end
69
-
70
- private
71
- def definition_for(method)
72
- file, start_line = method.source_location
73
- end_line = method.source.count("\n") + start_line - 1
74
-
75
- return file, start_line..end_line
76
- end
77
- end
78
12
  end
@@ -72,7 +72,12 @@ module Rails
72
72
  end
73
73
 
74
74
  def app_root
75
- @app_root ||= defined?(ENGINE_ROOT) ? ENGINE_ROOT : Rails.root
75
+ @app_root ||=
76
+ if defined?(ENGINE_ROOT)
77
+ ENGINE_ROOT
78
+ elsif Rails.respond_to?(:root)
79
+ Rails.root
80
+ end
76
81
  end
77
82
 
78
83
  def colored_output?
@@ -0,0 +1,138 @@
1
+ require "shellwords"
2
+ require "method_source"
3
+ require "rake/file_list"
4
+ require "active_support/core_ext/module/attribute_accessors"
5
+
6
+ module Rails
7
+ module TestUnit
8
+ class Runner
9
+ mattr_reader(:filters) { [] }
10
+
11
+ class << self
12
+ def options(opts)
13
+ opts.on("--warnings", "-w", "Run with Ruby warnings enabled") {}
14
+ opts.on("--environment", "-e", "Run tests in the ENV environment") {}
15
+ end
16
+
17
+ def parse_options(argv)
18
+ # Perform manual parsing and cleanup since option parser raises on unknown options.
19
+ env_index = argv.index("--environment") || argv.index("-e")
20
+ if env_index
21
+ argv.delete_at(env_index)
22
+ environment = argv.delete_at(env_index).strip
23
+ end
24
+ ENV["RAILS_ENV"] = environment || "test"
25
+
26
+ w_index = argv.index("--warnings") || argv.index("-w")
27
+ $VERBOSE = argv.delete_at(w_index) if w_index
28
+ end
29
+
30
+ def rake_run(argv = [])
31
+ ARGV.replace Shellwords.split(ENV["TESTOPTS"] || "")
32
+
33
+ run(argv)
34
+ end
35
+
36
+ def run(argv = [])
37
+ load_tests(argv)
38
+
39
+ require "active_support/testing/autorun"
40
+ end
41
+
42
+ def load_tests(argv)
43
+ patterns = extract_filters(argv)
44
+
45
+ tests = Rake::FileList[patterns.any? ? patterns : "test/**/*_test.rb"]
46
+ tests.to_a.each { |path| require File.expand_path(path) }
47
+ end
48
+
49
+ def compose_filter(runnable, filter)
50
+ if filters.any? { |_, lines| lines.any? }
51
+ CompositeFilter.new(runnable, filter, filters)
52
+ else
53
+ filter
54
+ end
55
+ end
56
+
57
+ private
58
+ def extract_filters(argv)
59
+ argv.select { |arg| arg =~ /^\w+\// }.map do |path|
60
+ case
61
+ when path =~ /(:\d+)+$/
62
+ file, *lines = path.split(":")
63
+ filters << [ file, lines ]
64
+ file
65
+ when Dir.exist?(path)
66
+ "#{path}/**/*_test.rb"
67
+ else
68
+ filters << [ path, [] ]
69
+ path
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ class CompositeFilter # :nodoc:
77
+ attr_reader :named_filter
78
+
79
+ def initialize(runnable, filter, patterns)
80
+ @runnable = runnable
81
+ @named_filter = derive_named_filter(filter)
82
+ @filters = [ @named_filter, *derive_line_filters(patterns) ].compact
83
+ end
84
+
85
+ # Minitest uses === to find matching filters.
86
+ def ===(method)
87
+ @filters.any? { |filter| filter === method }
88
+ end
89
+
90
+ private
91
+ def derive_named_filter(filter)
92
+ if filter.respond_to?(:named_filter)
93
+ filter.named_filter
94
+ elsif filter =~ %r%/(.*)/% # Regexp filtering copied from Minitest.
95
+ Regexp.new $1
96
+ elsif filter.is_a?(String)
97
+ filter
98
+ end
99
+ end
100
+
101
+ def derive_line_filters(patterns)
102
+ patterns.flat_map do |file, lines|
103
+ if lines.empty?
104
+ Filter.new(@runnable, file, nil) if file
105
+ else
106
+ lines.map { |line| Filter.new(@runnable, file, line) }
107
+ end
108
+ end
109
+ end
110
+ end
111
+
112
+ class Filter # :nodoc:
113
+ def initialize(runnable, file, line)
114
+ @runnable, @file = runnable, File.expand_path(file)
115
+ @line = line.to_i if line
116
+ end
117
+
118
+ def ===(method)
119
+ return unless @runnable.method_defined?(method)
120
+
121
+ if @line
122
+ test_file, test_range = definition_for(@runnable.instance_method(method))
123
+ test_file == @file && test_range.include?(@line)
124
+ else
125
+ @runnable.instance_method(method).source_location.first == @file
126
+ end
127
+ end
128
+
129
+ private
130
+ def definition_for(method)
131
+ file, start_line = method.source_location
132
+ end_line = method.source.count("\n") + start_line - 1
133
+
134
+ return file, start_line..end_line
135
+ end
136
+ end
137
+ end
138
+ end
@@ -1,18 +1,18 @@
1
- gem 'minitest'
2
- require 'minitest'
3
- require 'rails/test_unit/minitest_plugin'
1
+ gem "minitest"
2
+ require "minitest"
3
+ require_relative "runner"
4
4
 
5
5
  task default: :test
6
6
 
7
7
  desc "Runs all tests in test folder"
8
8
  task :test do
9
9
  $: << "test"
10
- pattern = if ENV.key?('TEST')
11
- ENV['TEST']
12
- else
13
- "test"
14
- end
15
- Minitest.rake_run([pattern])
10
+
11
+ if ENV.key?("TEST")
12
+ Rails::TestUnit::Runner.rake_run([ENV["TEST"]])
13
+ else
14
+ Rails::TestUnit::Runner.rake_run
15
+ end
16
16
  end
17
17
 
18
18
  namespace :test do
@@ -29,22 +29,22 @@ namespace :test do
29
29
  ["models", "helpers", "controllers", "mailers", "integration", "jobs"].each do |name|
30
30
  task name => "test:prepare" do
31
31
  $: << "test"
32
- Minitest.rake_run(["test/#{name}"])
32
+ Rails::TestUnit::Runner.rake_run(["test/#{name}"])
33
33
  end
34
34
  end
35
35
 
36
36
  task :generators => "test:prepare" do
37
37
  $: << "test"
38
- Minitest.rake_run(["test/lib/generators"])
38
+ Rails::TestUnit::Runner.rake_run(["test/lib/generators"])
39
39
  end
40
40
 
41
41
  task :units => "test:prepare" do
42
42
  $: << "test"
43
- Minitest.rake_run(["test/models", "test/helpers", "test/unit"])
43
+ Rails::TestUnit::Runner.rake_run(["test/models", "test/helpers", "test/unit"])
44
44
  end
45
45
 
46
46
  task :functionals => "test:prepare" do
47
47
  $: << "test"
48
- Minitest.rake_run(["test/controllers", "test/mailers", "test/functional"])
48
+ Rails::TestUnit::Runner.rake_run(["test/controllers", "test/mailers", "test/functional"])
49
49
  end
50
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railties
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.4
4
+ version: 5.0.5.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-19 00:00:00.000000000 Z
11
+ date: 2017-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 5.0.4
19
+ version: 5.0.5.rc1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 5.0.4
26
+ version: 5.0.5.rc1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: actionpack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 5.0.4
33
+ version: 5.0.5.rc1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 5.0.4
40
+ version: 5.0.5.rc1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -92,14 +92,14 @@ dependencies:
92
92
  requirements:
93
93
  - - '='
94
94
  - !ruby/object:Gem::Version
95
- version: 5.0.4
95
+ version: 5.0.5.rc1
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 5.0.4
102
+ version: 5.0.5.rc1
103
103
  description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
104
104
  email: david@loudthinking.com
105
105
  executables:
@@ -112,7 +112,9 @@ files:
112
112
  - RDOC_MAIN.rdoc
113
113
  - README.rdoc
114
114
  - exe/rails
115
+ - lib/minitest/rails_plugin.rb
115
116
  - lib/rails.rb
117
+ - lib/rails/.DS_Store
116
118
  - lib/rails/all.rb
117
119
  - lib/rails/api/task.rb
118
120
  - lib/rails/app_loader.rb
@@ -127,7 +129,9 @@ files:
127
129
  - lib/rails/cli.rb
128
130
  - lib/rails/code_statistics.rb
129
131
  - lib/rails/code_statistics_calculator.rb
132
+ - lib/rails/command/.DS_Store
130
133
  - lib/rails/commands.rb
134
+ - lib/rails/commands/.DS_Store
131
135
  - lib/rails/commands/application.rb
132
136
  - lib/rails/commands/commands_tasks.rb
133
137
  - lib/rails/commands/console.rb
@@ -135,6 +139,7 @@ files:
135
139
  - lib/rails/commands/dbconsole.rb
136
140
  - lib/rails/commands/destroy.rb
137
141
  - lib/rails/commands/generate.rb
142
+ - lib/rails/commands/generate/.DS_Store
138
143
  - lib/rails/commands/plugin.rb
139
144
  - lib/rails/commands/rake_proxy.rb
140
145
  - lib/rails/commands/runner.rb
@@ -145,6 +150,7 @@ files:
145
150
  - lib/rails/console/helpers.rb
146
151
  - lib/rails/dev_caching.rb
147
152
  - lib/rails/engine.rb
153
+ - lib/rails/engine/.DS_Store
148
154
  - lib/rails/engine/commands.rb
149
155
  - lib/rails/engine/commands_tasks.rb
150
156
  - lib/rails/engine/configuration.rb
@@ -375,10 +381,9 @@ files:
375
381
  - lib/rails/templates/rails/welcome/index.html.erb
376
382
  - lib/rails/test_help.rb
377
383
  - lib/rails/test_unit/line_filtering.rb
378
- - lib/rails/test_unit/minitest_plugin.rb
379
384
  - lib/rails/test_unit/railtie.rb
380
385
  - lib/rails/test_unit/reporter.rb
381
- - lib/rails/test_unit/test_requirer.rb
386
+ - lib/rails/test_unit/runner.rb
382
387
  - lib/rails/test_unit/testing.rake
383
388
  - lib/rails/version.rb
384
389
  - lib/rails/welcome_controller.rb
@@ -399,9 +404,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
399
404
  version: 2.2.2
400
405
  required_rubygems_version: !ruby/object:Gem::Requirement
401
406
  requirements:
402
- - - ">="
407
+ - - ">"
403
408
  - !ruby/object:Gem::Version
404
- version: '0'
409
+ version: 1.3.1
405
410
  requirements: []
406
411
  rubyforge_project:
407
412
  rubygems_version: 2.6.12
@@ -1,134 +0,0 @@
1
- require "active_support/core_ext/module/attribute_accessors"
2
- require "rails/test_unit/reporter"
3
- require "rails/test_unit/test_requirer"
4
- require 'shellwords'
5
-
6
- module Minitest
7
- class SuppressedSummaryReporter < SummaryReporter
8
- # Disable extra failure output after a run if output is inline.
9
- def aggregated_results(*)
10
- super unless options[:output_inline]
11
- end
12
- end
13
-
14
- def self.plugin_rails_options(opts, options)
15
- executable = ::Rails::TestUnitReporter.executable
16
- opts.separator ""
17
- opts.separator "Usage: #{executable} [options] [files or directories]"
18
- opts.separator "You can run a single test by appending a line number to a filename:"
19
- opts.separator ""
20
- opts.separator " #{executable} test/models/user_test.rb:27"
21
- opts.separator ""
22
- opts.separator "You can run multiple files and directories at the same time:"
23
- opts.separator ""
24
- opts.separator " #{executable} test/controllers test/integration/login_test.rb"
25
- opts.separator ""
26
- opts.separator "By default test failures and errors are reported inline during a run."
27
- opts.separator ""
28
-
29
- opts.separator "Rails options:"
30
- opts.on("-e", "--environment ENV",
31
- "Run tests in the ENV environment") do |env|
32
- options[:environment] = env.strip
33
- end
34
-
35
- opts.on("-b", "--backtrace",
36
- "Show the complete backtrace") do
37
- options[:full_backtrace] = true
38
- end
39
-
40
- opts.on("-d", "--defer-output",
41
- "Output test failures and errors after the test run") do
42
- options[:output_inline] = false
43
- end
44
-
45
- opts.on("-f", "--fail-fast",
46
- "Abort test run on first failure or error") do
47
- options[:fail_fast] = true
48
- end
49
-
50
- opts.on("-c", "--[no-]color",
51
- "Enable color in the output") do |value|
52
- options[:color] = value
53
- end
54
-
55
- options[:color] = true
56
- options[:output_inline] = true
57
- options[:patterns] = opts.order! unless run_via.rake?
58
- end
59
-
60
- def self.rake_run(patterns) # :nodoc:
61
- self.run_via = :rake unless run_via.set?
62
- ::Rails::TestRequirer.require_files(patterns)
63
- autorun
64
- end
65
-
66
- module RunRespectingRakeTestopts
67
- def run(args = [])
68
- if run_via.rake?
69
- args = Shellwords.split(ENV["TESTOPTS"] || "")
70
- end
71
-
72
- super
73
- end
74
- end
75
-
76
- singleton_class.prepend RunRespectingRakeTestopts
77
-
78
- # Owes great inspiration to test runner trailblazers like RSpec,
79
- # minitest-reporters, maxitest and others.
80
- def self.plugin_rails_init(options)
81
- ENV["RAILS_ENV"] = options[:environment] || "test"
82
-
83
- # If run via `ruby` we've been passed the files to run directly, or if run
84
- # via `rake` then they have already been eagerly required.
85
- unless run_via.ruby? || run_via.rake?
86
- ::Rails::TestRequirer.require_files(options[:patterns])
87
- end
88
-
89
- unless options[:full_backtrace] || ENV["BACKTRACE"]
90
- # Plugin can run without Rails loaded, check before filtering.
91
- Minitest.backtrace_filter = ::Rails.backtrace_cleaner if ::Rails.respond_to?(:backtrace_cleaner)
92
- end
93
-
94
- # Replace progress reporter for colors.
95
- reporter.reporters.delete_if { |reporter| reporter.kind_of?(SummaryReporter) || reporter.kind_of?(ProgressReporter) }
96
- reporter << SuppressedSummaryReporter.new(options[:io], options)
97
- reporter << ::Rails::TestUnitReporter.new(options[:io], options)
98
- end
99
-
100
- def self.run_via=(runner)
101
- if run_via.set?
102
- raise ArgumentError, "run_via already assigned"
103
- else
104
- run_via.runner = runner
105
- end
106
- end
107
-
108
- class RunVia
109
- attr_accessor :runner
110
- alias set? runner
111
-
112
- # Backwardscompatibility with Rails 5.0 generated plugin test scripts.
113
- def []=(runner, *)
114
- @runner = runner
115
- end
116
-
117
- def ruby?
118
- runner == :ruby
119
- end
120
-
121
- def rake?
122
- runner == :rake
123
- end
124
- end
125
-
126
- mattr_reader(:run_via) { RunVia.new }
127
- end
128
-
129
- # Put Rails as the first plugin minitest initializes so other plugins
130
- # can override or replace our default reporter setup.
131
- # Since minitest only loads plugins if its extensions are empty we have
132
- # to call `load_plugins` first.
133
- Minitest.load_plugins
134
- Minitest.extensions.unshift 'rails'
@@ -1,28 +0,0 @@
1
- require 'active_support/core_ext/object/blank'
2
- require 'rake/file_list'
3
-
4
- module Rails
5
- class TestRequirer # :nodoc:
6
- class << self
7
- def require_files(patterns)
8
- patterns = expand_patterns(patterns)
9
-
10
- Rake::FileList[patterns.compact.presence || 'test/**/*_test.rb'].to_a.each do |file|
11
- require File.expand_path(file)
12
- end
13
- end
14
-
15
- private
16
- def expand_patterns(patterns)
17
- patterns.map do |arg|
18
- arg = arg.gsub(/(:\d+)+?$/, '')
19
- if Dir.exist?(arg)
20
- "#{arg}/**/*_test.rb"
21
- else
22
- arg
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end