Skip to content

Commit f4dd001

Browse files
committed
Merge branch 'switch-from-test-unit-to-minitest'
2 parents 710fb67 + 68c5204 commit f4dd001

File tree

10 files changed

+52
-24
lines changed

10 files changed

+52
-24
lines changed

Changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ Breaking Changes for 3.0.0:
66
* Extracts `autotest` and `autotest-rails` support to `rspec-autotest` gem.
77
(Andy Lindeman)
88

9+
Enhancements
10+
11+
* Supports Rails 4.1 and Minitest 5. (Patrick Van Stee)
12+
913
Bug fixes
1014

1115
* Fixes "warning: instance variable @orig\_routes not initialized" raised by

features/matchers/relation_match_array.feature

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ Feature: ActiveRecord::Relation match array
1111
1212
describe Widget do
1313
let!(:widgets) { Array.new(3) { Widget.create } }
14-
subject { Widget.scoped }
14+
15+
if ::Rails::VERSION::STRING >= '4'
16+
subject { Widget.all }
17+
else
18+
subject { Widget.scoped }
19+
end
1520
1621
it "returns all widgets in any order" do
1722
expect(subject).to match_array(widgets)

lib/rspec/rails/adapters.rb

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
require 'delegate'
22
require 'active_support/concern'
3-
require 'test/unit/assertions'
43

54
module RSpec
65
module Rails
6+
if ::Rails::VERSION::STRING >= '4.1.0'
7+
gem 'minitest'
8+
require 'minitest/assertions'
9+
Assertions = Minitest::Assertions
10+
else
11+
require 'test/unit/assertions'
12+
Assertions = Test::Unit::Assertions
13+
end
14+
15+
# @api private
716
class AssertionDelegator < Module
817
# @api private
918
def initialize(*assertion_modules)
1019
assertion_class = Class.new(SimpleDelegator) do
11-
include Test::Unit::Assertions
20+
include ::RSpec::Rails::Assertions
1221
include ::RSpec::Rails::MinitestCounters
1322
assertion_modules.each { |mod| include mod }
1423
end
@@ -38,8 +47,10 @@ def #{method}(*args, &block)
3847
end
3948
end
4049

41-
# MiniTest::Unit::LifecycleHooks
42-
module MiniTestLifecycleAdapter
50+
# Adapts example groups for `Minitest::Test::LifecycleHooks`
51+
#
52+
# @api private
53+
module MinitestLifecycleAdapter
4354
extend ActiveSupport::Concern
4455

4556
included do |group|
@@ -79,6 +90,7 @@ def assertions=(assertions)
7990
end
8091
end
8192

93+
# @api private
8294
module SetupAndTeardownAdapter
8395
extend ActiveSupport::Concern
8496

@@ -112,7 +124,8 @@ def method_name
112124
end
113125
end
114126

115-
module TestUnitAssertionAdapter
127+
# @private
128+
module MinitestAssertionAdapter
116129
extend ActiveSupport::Concern
117130

118131
module ClassMethods
@@ -122,7 +135,7 @@ module ClassMethods
122135
# examples without exposing non-assertion methods in Test::Unit or
123136
# Minitest.
124137
def assertion_method_names
125-
Test::Unit::Assertions.public_instance_methods.select{|m| m.to_s =~ /^(assert|flunk)/} +
138+
::RSpec::Rails::Assertions.public_instance_methods.select{|m| m.to_s =~ /^(assert|flunk|refute)/} +
126139
[:build_message]
127140
end
128141

@@ -138,8 +151,9 @@ def #{m}(*args, &block)
138151
end
139152
end
140153

154+
# @api private
141155
class AssertionDelegator
142-
include Test::Unit::Assertions
156+
include ::RSpec::Rails::Assertions
143157
include ::RSpec::Rails::MinitestCounters
144158
end
145159

@@ -152,5 +166,11 @@ def assertion_delegator
152166
define_assertion_delegators
153167
end
154168
end
169+
170+
# Backwards compatibility. It's unlikely that anyone is using this
171+
# constant, but we had forgotten to mark it as `@private` earlier
172+
#
173+
# @api private
174+
TestUnitAssertionAdapter = MinitestAssertionAdapter
155175
end
156176
end

lib/rspec/rails/example/rails_example_group.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ module Rails
77
module RailsExampleGroup
88
extend ActiveSupport::Concern
99
include RSpec::Rails::SetupAndTeardownAdapter
10-
include RSpec::Rails::MiniTestLifecycleAdapter if ::Rails::VERSION::STRING >= '4'
11-
include RSpec::Rails::TestUnitAssertionAdapter
10+
include RSpec::Rails::MinitestLifecycleAdapter if ::Rails::VERSION::STRING >= '4'
11+
include RSpec::Rails::MinitestAssertionAdapter
1212
include RSpec::Rails::Matchers
1313
end
1414
end

lib/rspec/rails/fixture_support.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ module Rails
44
module FixtureSupport
55
extend ActiveSupport::Concern
66
include RSpec::Rails::SetupAndTeardownAdapter
7-
include RSpec::Rails::MiniTestLifecycleAdapter if ::ActiveRecord::VERSION::STRING > '4'
8-
include RSpec::Rails::TestUnitAssertionAdapter
7+
include RSpec::Rails::MinitestLifecycleAdapter if ::ActiveRecord::VERSION::STRING > '4'
8+
include RSpec::Rails::MinitestAssertionAdapter
99
include ActiveRecord::TestFixtures
1010

1111
included do

rspec-rails.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
3333
end
3434

3535
s.add_development_dependency 'rake', '~> 10.0.0'
36-
s.add_development_dependency 'cucumber', '~> 1.1.9'
36+
s.add_development_dependency 'cucumber', '~> 1.3.5'
3737
s.add_development_dependency 'aruba', '~> 0.4.11'
3838
s.add_development_dependency 'ZenTest', '4.9.0'
3939
s.add_development_dependency 'ammeter', '0.2.5'

spec/rspec/rails/assertion_adapter_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
require "spec_helper"
22

3-
describe RSpec::Rails::TestUnitAssertionAdapter do
4-
include RSpec::Rails::TestUnitAssertionAdapter
3+
describe RSpec::Rails::MinitestAssertionAdapter do
4+
include RSpec::Rails::MinitestAssertionAdapter
55

6-
Test::Unit::Assertions.public_instance_methods.select{|m| m.to_s =~ /^(assert|flunk)/}.each do |m|
6+
RSpec::Rails::Assertions.public_instance_methods.select{|m| m.to_s =~ /^(assert|flunk|refute)/}.each do |m|
77
if m.to_s == "assert_equal"
88
it "exposes #{m} to host examples" do
99
assert_equal 3,3
@@ -18,11 +18,11 @@
1818
end
1919
end
2020

21-
it "does not expose internal methods of MiniTest" do
21+
it "does not expose internal methods of Minitest" do
2222
methods.should_not include("_assertions")
2323
end
2424

25-
it "does not expose MiniTest's message method" do
25+
it "does not expose Minitest's message method" do
2626
methods.should_not include("message")
2727
end
2828
end

spec/rspec/rails/assertion_delegator_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
describe RSpec::Rails::AssertionDelegator do
44
it "provides a module that delegates assertion methods to an isolated class" do
55
klass = Class.new {
6-
include RSpec::Rails::AssertionDelegator.new(Test::Unit::Assertions)
6+
include RSpec::Rails::AssertionDelegator.new(RSpec::Rails::Assertions)
77
}
88

99
expect(klass.new).to respond_to(:assert)

spec/rspec/rails/minitest_lifecycle_adapter_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
require "spec_helper"
22

3-
describe RSpec::Rails::MiniTestLifecycleAdapter do
3+
describe RSpec::Rails::MinitestLifecycleAdapter do
44
it "invokes minitest lifecycle hooks at the appropriate times" do
55
invocations = []
6-
example_group = RSpec::Core::ExampleGroup.describe("MiniTestHooks") do
7-
include RSpec::Rails::MiniTestLifecycleAdapter
6+
example_group = RSpec::Core::ExampleGroup.describe("MinitestHooks") do
7+
include RSpec::Rails::MinitestLifecycleAdapter
88

99
define_method(:before_setup) { invocations << :before_setup }
1010
define_method(:after_setup) { invocations << :after_setup }

spec/rspec/rails/mocks/mock_model_spec.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,9 +360,8 @@
360360
end
361361

362362
describe "ActiveModel Lint tests" do
363-
require 'test/unit/assertions'
364363
require 'active_model/lint'
365-
include RSpec::Rails::TestUnitAssertionAdapter
364+
include RSpec::Rails::MinitestAssertionAdapter
366365
include ActiveModel::Lint::Tests
367366

368367
# to_s is to support ruby-1.9

0 commit comments

Comments
 (0)