RSpecThe Official RSpec Bloghttp://rspec.info/blog2020-06-22T01:00:00+01:00The RSpec Core TeamRSpec Branching Strategyhttp://rspec.info/blog/2020/06/rspec-branching-strategy/2020-06-22T01:00:00+01:002022-05-10T10:51:57+01:00Jon Rowe<h1>The short version</h1>
<p>RSpec repositories will deprecate the use of <code>master</code> for the default branch
name. We will wait for a consensus on the new name for the default branch,
in particular what new default is chosen by Github.</p>
<p>If no other consensus is arrived at by 1st of August, <code>master</code> will be
renamed <code>main</code>. At that point all development effort will be based off
the new branch name, and use of <code>master</code> will illicit a warning on install
/ usage. All open PRs will be rebased.</p>
<h1>The long version</h1>
<p>RSpec’s source code is hosted on Github. By default git, and thus Github has
historically used <code>master</code> as the name of the default, or main branch. This
term has sat uneasily on the minds of the team and with the recent community
led moves to eliminate this terminology from our technology stacks, we are going
to follow suit and rename this branch.</p>
<p>We currently favour <code>main</code> as the new name (it has shared muscle memory with
the old) but we also recognise that having community consensus around a
default name is important as it reduces the amount of surprise encountered by
developers. So we will wait for the community to settle on a new default name,
in particular for Github to change their default, but if none has been
announced by 1st August we will use <code>main</code>.</p>
<p>We already have other branches in use for stable versions (e.g.
<code>3-9-maintenance</code>) and they will be unaffected.</p>
<p>Some people will believe this is an inconvience because <code>master</code> is used for
lots of things, but the term has its origins in the dominance of one person
over another, in particular in slavery and this change is about being
inclusive to all people.</p>
<h2>Implications</h2>
<p>We have always encouraged the use of our main branch for getting pre-release
features before we release them as a group of gems, this means there are likely
people using the <code>master</code> branch via their Gemfiles. We will deprecate
<code>master</code> by means of notice in the documentation, and possibly a post install
/ on usage message from RSpec itself warning of the fact the branch will
become stale and not be updated further. Additionally we will look at
using branch protection rules preventing PRs against <code>master</code> from that date.</p>
<h2>Steps we intend to take</h2>
<ol>
<li>Push <code>master</code> to <code>main</code> (or other new branch name).</li>
<li>Rebase all open PRs and update our builds.</li>
<li>Set the default to <code>main</code> (etc) for all RSpec repositories.</li>
<li>Push change deprecating <code>master</code> to <code>master</code>.</li>
<li>In the future (possibly when releasing RSpec 4) remove <code>master</code>.</li>
</ol>
RSpec Rails 4.0 has been released!http://rspec.info/blog/2020/05/rspec-rails-4-0-has-been-released/2020-05-27T01:00:00+01:002022-05-10T10:51:57+01:00Benoit Tigeot, Jon Rowe and Phil Pirozhkov<p>RSpec Rails 4.0 has been released! Given our commitment to
<a href="http://semver.org/">semantic versioning</a>, this is a major release and as such
contains breaking changes. The major change is that we’ve dropped support for
Rails below 5, with only soft support for Rails 4.2.</p>
<p>As usual, if you notice any newly introduced bugs, please let us know,
and we’ll release a fix for it ASAP.</p>
<p>RSpec continues to be a community-driven project with contributors
from all over the world. This release includes 258 commits and 56
merged pull requests from 27 different contributors!</p>
<p>Thank you to everyone who helped make this release happen!</p>
<h2>Notable Changes</h2>
<p>Support for Rails 6, including support for testing ActionCable, ActiveMailbox.</p>
<h3>Breaking changes</h3>
<p>RSpec Rails 4 only supports Rails 5 and 6. This is in line with our
new versioning policy which keeps major versions of RSpec Rails in
lockstep with supported versions of Rails.</p>
<p>This means that we no longer support versions of Ruby below 2.2
in line with the versions of Ruby supported by Rails 5.</p>
<p>We have restricted the version of Rails for this version to 4.2 to
allows a “soft support” for Rails 4.2 during this interim
period but we strongly urge you to upgrade Rails to use 4.0.0.</p>
<h3>Removed version lock with RSpec gems</h3>
<p>The <code>rspec-rails</code> gem is no longer locked with the versioning of the other
RSpec gems, we will now be releasing <code>rspec-rails</code> with each new Rails
release, keeping in lockstep with their supported major versions.</p>
<h3>Improved JRuby support</h3>
<p>We have improved JRuby support and RSpec Rails 4 fully supports JRuby on Rails 5 and 6.</p>
<h3>Support for Action Cable</h3>
<p>We now support <a href="https://relishapp.com/rspec/rspec-rails/v/4-0/docs/channel-specs">channel specs</a> in order to easily test your Action Cable channels.
A <code>channel spec</code> pulls in <code>ActionCable::Channel::TestCase</code>, including all of the
behavior and assertions that it provides, in addition to RSpec’s own behavior and
expectations.</p>
<h3>Support for Action Mailbox</h3>
<p>Rails 6 adds <a href="https://guides.rubyonrails.org/action_mailbox_basics.html">Action Mailbox</a> for dealing with inbound emails.
RSpec Rails 4 adds support for <a href="https://relishapp.com/rspec/rspec-rails/docs/mailbox-specs/action-mailbox-spec">mailbox specs</a> using the Rails
test helpers for mailboxes.</p>
<p>For example using the Rails test helper, <code>process</code> and the <code>have_been_delivered</code> matcher:</p>
<div class="highlight"><pre class="highlight ruby"><code><span class="no">RSpec</span><span class="p">.</span><span class="nf">describe</span> <span class="no">InboxMailbox</span><span class="p">,</span> <span class="ss">type: :mailbox</span> <span class="k">do</span>
<span class="n">it</span> <span class="s2">"marks email as delivered when number tag in subject is valid"</span> <span class="k">do</span>
<span class="n">mail</span> <span class="o">=</span> <span class="no">Mail</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span>
<span class="ss">from: </span><span class="s2">"replies@example.com"</span><span class="p">,</span>
<span class="ss">subject: </span><span class="s2">"[141982763] support ticket"</span>
<span class="p">)</span>
<span class="n">mail_processed</span> <span class="o">=</span> <span class="n">process</span><span class="p">(</span><span class="n">mail</span><span class="p">)</span>
<span class="n">expect</span><span class="p">(</span><span class="n">mail_processed</span><span class="p">).</span><span class="nf">to</span> <span class="n">have_been_delivered</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre></div>
<h3>Improvements to generators</h3>
<p>If you use generators, there are some improvements:
- The default hash syntax is now the Ruby 1.9 style in generated files to match Rails conventions
- Request specs are generated instead of controller specs by default
- New <a href="https://relishapp.com/rspec/rspec-rails/v/4-0/docs/generators">generators</a> available (channel, generator, mailbox…)</p>
<h3>Allow configuring Active Job <code>queue_adapter</code> in system specs</h3>
<p>Some people want to run Active Job with a specific queue adapter. In system
specs you can now choose your desired queue adapter:</p>
<div class="highlight"><pre class="highlight ruby"><code><span class="n">before</span> <span class="k">do</span>
<span class="no">ActiveJob</span><span class="o">::</span><span class="no">Base</span><span class="p">.</span><span class="nf">queue_adapter</span> <span class="o">=</span> <span class="ss">:inline</span>
<span class="k">end</span>
</code></pre></div>
<h3>Silence log output with Puma</h3>
<p>By default, Puma will no longer print logs when running system specs.</p>
<h3>Ability to manually turn off Active Record support</h3>
<p>When using Rails without ActiveRecord or using an alternative ORM
or a database of choice, e.g. Sequel, ROM, Mongoid etc. We can
mistakenly detect ActiveRecord as being used due to other gems
autoloading the constants, we now support manually turning off
Active Record support when not configured with:
<code>config.use_active_record = false</code></p>
<h2>Stats:</h2>
<ul>
<li><strong>Total Commits</strong>: 285</li>
<li><strong>Merged pull requests</strong>: 63</li>
<li><strong>31 contributors</strong>: Andrew White, Anton Rieder, Benoit Tigeot, Jon Rowe,
David Revelo, Giovanni Kock Bonetti, Ignatius Reza, James Dabbs, Joel AZEMAR,
John Hawthorn, Jonathan Rochkind, Kieran O'Grady, Marc-André Lafortune,
Moshe Kamensky, OKURA Masafumi, Olle Jonsson, Pedro Paiva, Penelope Phippen,
Phil Pirozhkov, Piotr W, Seb Jacobs, Tanbir Hasan, Viacheslav Bobrov,
Vladimir Dementyev, Xavier Shay, alpaca-tc, pavel, ta1kt0me, yalab</li>
</ul>
<h2>Docs</h2>
<h3>API Docs</h3>
<ul>
<li><a href="/https/raw.githubusercontent.com/documentation/4.0/rspec-rails/">rspec-rails</a></li>
</ul>
<h3>Cucumber Features</h3>
<ul>
<li><a href="https://relishapp.com/rspec/rspec-rails/v/4-0/">rspec-rails</a></li>
</ul>
<h2>Release Notes</h2>
<h3>4.0.1 / 2020-05-16</h3>
<p><a href="https://github.com/rspec/rspec-rails/compare/v4.0.0...v4.0.1">Full Changelog</a></p>
<p>Bug Fixes:</p>
<ul>
<li>Remove warning when calling <code>driven_by</code> in system specs. (Aubin Lorieux, #2302)</li>
<li>Fix comparison of times for <code>#at</code> in job matchers. (Jon Rowe, Markus Doits, #2304)</li>
<li>Allow <code>have_enqueued_mail</code> to match when a sub class of <code>ActionMailer::DeliveryJob</code>
is set using <code><Class>.delivery_job=</code>. (Atsushi Yoshida #2305)</li>
<li>Restore Ruby 2.2.x compatibility. (Jon Rowe, #2332)</li>
<li>Add <code>required_ruby_version</code> to gem spec. (Marc-André Lafortune, #2319, #2338)</li>
</ul>
<h3>4.0.0 / 2020-03-24</h3>
<p><a href="https://github.com/rspec/rspec-rails/compare/v3.9.1...v4.0.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Adds support for Rails 6. (Penelope Phippen, Benoit Tigeot, Jon Rowe, #2071)</li>
<li>Adds support for JRuby on Rails 5.2 and 6</li>
<li>Add support for parameterised mailers (Ignatius Reza, #2125)</li>
<li>Add ActionMailbox spec helpers and test type (James Dabbs, #2119)</li>
<li>Add ActionCable spec helpers and test type (Vladimir Dementyev, #2113)</li>
<li>Add support for partial args when using <code>have_enqueued_mail</code>
(Ignatius Reza, #2118, #2125)</li>
<li>Add support for time arguments for <code>have_enqueued_job</code> (@alpaca-tc, #2157)</li>
<li>Improve path parsing in view specs render options. (John Hawthorn, #2115)</li>
<li>Add routing spec template as an option for generating controller specs.
(David Revelo, #2134)</li>
<li>Add argument matcher support to <code>have_enqueued_*</code> matchers. (Phil Pirozhkov, #2206)</li>
<li>Switch generated templates to use ruby 1.9 hash keys. (Tanbir Hasan, #2224)</li>
<li>Add <code>have_been_performed</code>/<code>have_performed_job</code>/<code>perform_job</code> ActiveJob
matchers (Isaac Seymour, #1785)</li>
<li>Default to generating request specs rather than controller specs when
generating a controller (Luka Lüdicke, #2222)</li>
<li>Allow <code>ActiveJob</code> matchers <code>#on_queue</code> modifier to take symbolic queue names. (Nils Sommer, #2283)</li>
<li>The scaffold generator now generates request specs in preference to controller specs.
(Luka Lüdicke, #2288)</li>
<li>Add configuration option to disable ActiveRecord. (Jon Rowe, Phil Pirozhkov, Hermann Mayer, #2266)</li>
<li> Set <code>ActionDispatch::SystemTesting::Server.silence_puma = true</code> when running system specs.
(ta1kt0me, Benoit Tigeot, #2289)</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li><code>EmptyTemplateHandler.call</code> now needs to support an additional argument in
Rails 6. (Pavel Rosický, #2089)</li>
<li>Suppress warning from <code>SQLite3Adapter.represent_boolean_as_integer</code> which is
deprecated. (Pavel Rosický, #2092)</li>
<li><code>ActionView::Template#formats</code> has been deprecated and replaced by
<code>ActionView::Template#format</code>(Seb Jacobs, #2100)</li>
<li>Replace <code>before_teardown</code> as well as <code>after_teardown</code> to ensure screenshots
are generated correctly. (Jon Rowe, #2164)</li>
<li><code>ActionView::FixtureResolver#hash</code> has been renamed to <code>ActionView::FixtureResolver#data</code>.
(Penelope Phippen, #2076)</li>
<li>Prevent <code>driven_by(:selenium)</code> being called due to hook precedence.
(Takumi Shotoku, #2188)</li>
<li>Prevent a <code>WrongScopeError</code> being thrown during loading fixtures on Rails
6.1 development version. (Edouard Chin, #2215)</li>
<li>Fix Mocha mocking support with <code>should</code>. (Phil Pirozhkov, #2256)</li>
<li>Restore previous conditional check for setting <code>default_url_options</code> in feature
specs, prevents a <code>NoMethodError</code> in some scenarios. (Eugene Kenny, #2277)</li>
<li>Allow changing <code>ActiveJob::Base.queue_adapter</code> inside a system spec.
(Jonathan Rochkind, #2242)</li>
<li><code>rails generate generator</code> command now creates related spec file (Joel Azemar, #2217)</li>
<li>Relax upper <code>capybara</code> version constraint to allow for Capybara 3.x (Phil Pirozhkov, #2281)</li>
<li>Clear ActionMailer test mailbox after each example (Benoit Tigeot, #2293)</li>
</ul>
<p>Breaking Changes:</p>
<ul>
<li>Drops support for Rails below 5.0</li>
<li>Drops support for Ruby below 2.2</li>
</ul>
RSpec 3.9 has been released, and RSpec team changes.http://rspec.info/blog/2019/10/rspec-3-9-has-been-released/2019-10-16T01:00:00+01:002022-05-10T10:51:57+01:00Jon Rowe<p>RSpec 3.9 has just been released! As the RSpec project follows
<a href="http://semver.org/">semantic versioning</a>, anyone already using RSpec 3
should be able to upgrade to this version seemlessly, but if we have
introduced a regression please let us know, and we’ll get a patch
release out to sort it out as soon as possible.</p>
<p>We’re sad to announce that <a href="https://github.com/samphippen">Penelope Phippen</a> has
retired from the project, leaving myself, <a href="https://github.com/jonrowe">Jon Rowe</a> as
the sole lead maintainer going forward, but its not all bad news, we welcome our
newest core team member <a href="https://github.com/pirj`">Phil Pirozhkov</a>.</p>
<p>Thank you Penelope for all your hard word over the years and welcome Phil!</p>
<p>This is the last release in which the RSpec gems, <code>rspec</code>, <code>rspec-core</code>,
<code>rspec-expectations</code> and <code>rspec-mocks</code> will be in sync with <code>rspec-rails</code>.
We’ll be launched <code>rspec-rails</code> 4 soon which will be classed as an extension
gem and not kept in sync version wise with the core gems, which will allow
us to keep <code>rspec-rails</code> in sync with Rails versions, more on that soon.</p>
<p>RSpec continues to receive contributions from all over the world, we had
369 commits and 98 merged pull requests from 52 different contributors
who helped make this release happen. Thank you all :)</p>
<h2>Notable Changes</h2>
<h3>Core: Improved error handling</h3>
<p>If RSpec encounters an error whilst loading support files, it will now
skip loading specs files removing later confusing errors due to the earlier
error(s). Additionally when available <code>did_you_mean</code> suggestions will be
shown for any <code>LoadError</code>s that are encountered.</p>
<h3>Core: Command Line Interface improvement, <code>--example-matches</code></h3>
<p>With the release of 3.9 you can now use <code>--example-matches</code> to filter your
examples via a regular expression, useful if you only know part of an example
name or have specs with a common theme across a number of different files.</p>
<h3>Core: New Formatter</h3>
<p>In 3.9 you will find a new built in formatter option, the failure list formatter,
which can be used via the command line as <code>--format f</code> or <code>--format failure_list</code>,
or via the <code>RSpec::Configuration#formatter</code> method. This new formatter produces
output in a more minimalist “quick fix” style output.</p>
<h3>Expectations: respond_to(:new)</h3>
<p>The <code>respond_to</code> matcher now special cases <code>:new</code> and checks <code>:initialize</code>
if its a standard class method.</p>
<h3>Expectations: Empty diff warning</h3>
<p>Prior to 3.9 when you had matchers that failed but the items under test
produced the same inspect output you’d get a confusing diff were both
sides look the same, we now detect this scenario and issue a warning.</p>
<h3>Mocks: Improved thread safety</h3>
<p>A bonus for people running parralleised specs, 3.9 brings some improvements
to our threaded behaviour by adding mutexes to avoid deadlocking errors.</p>
<h3>Rails: <code>rails_helper.rb</code> improvements</h3>
<p>A minor tweak in 3.9 brining the generated <code>rails_helper.rb</code> inline
with Ruby semantics and using <code>__dir__</code> rather than <code>__FILE__</code> on
newer Rubies.</p>
<h3>Rails: New email matchers</h3>
<p>Add a new <code>have_enqueued_mail</code> matcher for making it easier to assert
on mailer specific active jobs.</p>
<h3>Rails: New generators</h3>
<p>Version 3.9 brings a couple of new generator scaffolds, you can now
generate system specs on Rails 5.1 and above, generate specs for generators
and add routes when generating controller specs.</p>
<h2>Stats:</h2>
<h3>Combined:</h3>
<ul>
<li><strong>Total Commits</strong>: 322</li>
<li><strong>Merged pull requests</strong>: 59</li>
<li><strong>54 contributors</strong>: Aaron Kromer, Alex Haynes, Alireza Bashiri, Andy Waite,
Benoit Tigeot, Bobby McDonald, Chris, Christophe Bliard, ConSou, David Rodríguez,
Douglas Lovell, Eito Katagiri, Emric, Fred Snyder, Giovanni Kock Bonetti, Grey
Baker, Jack Wink, Jamie English, Joel Lubrano, Jon Rowe, Juanito Fatas, Keiji,
Kevin, Kevin Kuchta, Kieran O'Grady, Kohei Sugi, Laura Paakkinen, Manuel
Schnitzer, Matijs van Zuijlen, Michel Ocon, Myron Marston, Nazar Matus, Nick
LaMuro, OKURA Masafumi, Olle Jonsson, Orien Madgwick, Patrick Boatner, Penelope
Phippen, Pete Johns, Phil Pirozhkov, Philippe Hardardt, Rafe Rosen, Romain Tartière,
Ryan Lue, Sam Joseph, Samuel Williams, Taichi Ishitani, Takumi Kaji,
Thomas Walpole, Tom Grimley, Viktor Fonic, Yoshimi, aymeric-ledorze, 三上大河</li>
</ul>
<h3>rspec-core:</h3>
<ul>
<li><strong>Total Commits</strong>: 92</li>
<li><strong>Merged pull requests</strong>: 13</li>
<li><strong>22 contributors</strong>: Alex Haynes, Andy Waite, Benoit Tigeot, Chris, Christophe
Bliard, David Rodríguez, Jon Rowe, Juanito Fatas, Keiji, Matijs van Zuijlen,
Myron Marston, Nick LaMuro, Olle Jonsson, Orien Madgwick, Pete Johns,
Phil Pirozhkov, Philippe Hardardt, Romain Tartière, Sam Joseph, Samuel Williams,
Viktor Fonic, Yoshimi</li>
</ul>
<h3>rspec-expectations:</h3>
<ul>
<li><strong>Total Commits</strong>: 60</li>
<li><strong>Merged pull requests</strong>: 7</li>
<li><strong>15 contributors</strong>: Benoit Tigeot, Eito Katagiri, Fred Snyder, Jack Wink,
Jamie English, Jon Rowe, Juanito Fatas, Matijs van Zuijlen, Myron Marston,
Nazar Matus, Olle Jonsson, Orien Madgwick, Pete Johns, Phil Pirozhkov,
Taichi Ishitani</li>
</ul>
<h3>rspec-mocks:</h3>
<ul>
<li><strong>Total Commits</strong>: 38</li>
<li><strong>Merged pull requests</strong>: 2</li>
<li><strong>10 contributors</strong>: Alireza Bashiri, Benoit Tigeot, Jon Rowe, Juanito Fatas,
Kevin, Matijs van Zuijlen, Myron Marston, Olle Jonsson, Orien Madgwick,
Patrick Boatner</li>
</ul>
<h3>rspec-rails:</h3>
<ul>
<li><strong>Total Commits</strong>: 103</li>
<li><strong>Merged pull requests</strong>: 17</li>
<li><strong>27 contributors</strong>: Aaron Kromer, Benoit Tigeot, Bobby McDonald, ConSou,
Douglas Lovell, Emric, Giovanni Kock Bonetti, Grey Baker, Joel Lubrano, Jon Rowe,
Kevin Kuchta, Kieran O'Grady, Kohei Sugi, Laura Paakkinen, Manuel Schnitzer,
Michel Ocon, Myron Marston, OKURA Masafumi, Olle Jonsson, Orien Madgwick,
Penelope Phippen, Rafe Rosen, Ryan Lue, Takumi Kaji, Thomas Walpole, Tom Grimley,
aymeric-ledorze</li>
</ul>
<h3>rspec-support:</h3>
<ul>
<li><strong>Total Commits</strong>: 29</li>
<li><strong>Merged pull requests</strong>: 20</li>
<li><strong>4 contributors</strong>: Benoit Tigeot, Jon Rowe, Myron Marston, 三上大河</li>
</ul>
<h2>Docs</h2>
<h3>API Docs</h3>
<ul>
<li><a href="/https/raw.githubusercontent.com/documentation/3.9/rspec-core/">rspec-core</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.9/rspec-expectations/">rspec-expectations</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.9/rspec-mocks/">rspec-mocks</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.9/rspec-rails/">rspec-rails</a></li>
</ul>
<h3>Cucumber Features</h3>
<ul>
<li><a href="http://relishapp.com/rspec/rspec-core">rspec-core</a></li>
<li><a href="http://relishapp.com/rspec/rspec-expectations">rspec-expectations</a></li>
<li><a href="http://relishapp.com/rspec/rspec-mocks">rspec-mocks</a></li>
<li><a href="http://relishapp.com/rspec/rspec-rails">rspec-rails</a></li>
</ul>
<h2>Release Notes</h2>
<h3>rspec-core-3.9.0</h3>
<p><a href="http://github.com/rspec/rspec-core/compare/v3.8.2...v3.9.0">Full Changelog</a></p>
<p>Enhancements:
* Improve the handling of errors during loading support files, if a file
errors before loading specs, RSpec will now skip loading the specs.
(David Rodríguez, #2568)
* Add support for –example-matches to run examples by regular expression.
(Sam Joseph, Matt Rider, @okothkongo1, #2586)
* Add <code>did_you_mean</code> suggestions for file names encountering a <code>LoadError</code>
outside of examples. (@obromios, #2601)
* Add a minimalist quick fix style formatter, only outputs failures as
<code>file:line:message</code>. (Romain Tartière, #2614)
* Convert string number values to integer when used for <code>RSpec::Configuration#fail_fast</code>
(Viktor Fonic, #2634)
* Issue warning when invalid values are used for <code>RSpec::Configuration#fail_fast</code>
(Viktor Fonic, #2634)
* Add support for running the Rake task in a clean environment.
(Jon Rowe, #2632)
* Indent messages by there example group / example in the documentation formatter.
(Samuel Williams, #2649)</p>
<h3>rspec-expectations-3.9.0</h3>
<p><a href="http://github.com/rspec/rspec-expectations/compare/v3.8.5...v3.9.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>The <code>respond_to</code> matcher now uses the signature from <code>initialize</code> to validate checks
for <code>new</code> (unless <code>new</code> is non standard). (Jon Rowe, #1072)</li>
<li>Generated descriptions for matchers now use <code>is expected to</code> rather than <code>should</code> in
line with our preferred DSL. (Pete Johns, #1080, rspec/rspec-core#2572)</li>
<li>Add the ability to re-raise expectation errors when matching
with <code>match_when_negated</code> blocks. (Jon Rowe, #1130)</li>
<li>Add a warning when an empty diff is produce due to identical inspect output.
(Benoit Tigeot, #1126)</li>
</ul>
<h3>rspec-mocks-3.9.0</h3>
<p><a href="http://github.com/rspec/rspec-mocks/compare/v3.8.2...v3.9.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Improve thread safety of message expectations by using Mutex to prevent
deadlocking errors. (Ry Biesemeyer, #1236)</li>
<li>Add the ability to use <code>time</code> as an alias for <code>times</code>. For example:
<code>expect(Class).to receive(:method).exactly(1).time</code>.
(Pistos, Benoit Tigeot, #1271)</li>
</ul>
<h3>rspec-rails-3.9.0</h3>
<p><a href="http://github.com/rspec/rspec-rails/compare/v3.8.2...v3.9.0">Full Changelog</a></p>
<p>Enhancements</p>
<ul>
<li>Use <code>__dir__</code> instead of <code>__FILE__</code> in generated <code>rails_helper.rb</code> where
supported. (OKURA Masafumi, #2048)</li>
<li>Add <code>have_enqueued</code> matcher as a “super” matcher to the <code>ActiveJob</code> matchers
making it easier to match on <code>ActiveJob</code> delivered emails. (Joel Lubrano, #2047)</li>
<li>Add generator for system specs on Rails 5.1 and above. (Andrzej Sliwa, #1933)</li>
<li>Add generator for generator specs. (@ConSou, #2085)</li>
<li>Add option to generate routes when generating controller specs. (David Revelo, #2134)</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Make the <code>ActiveJob</code> matchers fail when multiple jobs are queued for negated
matches. e.g. `expect { job; job; }.to<em>not have</em>enqueued_job.
(Emric Istanful, #2069)</li>
</ul>
Jon Rowe and Sam Phippen are RSpec's new leadshttp://rspec.info/blog/2018/09/jon-rowe-and-sam-phippen-are-rspecs-new-leads/2018-09-23T01:00:00+01:002022-05-10T10:51:57+01:00Myron Marston<p>My <a href="https://github.com/rspec/rspec-core/commit/cbd5a8a26885106e0483d189e9d39d80d58f7f77">first contribution to
RSpec</a>
happened over 8 years ago, and I’ve <a href="http://blog.davidchelimsky.net/blog/2012/11/28/myron-marston-and-andy-lindeman-are-rspecs-new-project-leads/">lead the project for nearly 6
years</a>.
In that time, a lot has been accomplished:</p>
<ul>
<li>We shipped a dozen major or minor feature releases (plus
<a href="https://rubygems.org/gems/rspec-core/versions">many</a>,
<a href="https://rubygems.org/gems/rspec-expectations/versions">many</a>
<a href="https://rubygems.org/gems/rspec-mocks/versions">patch</a>
<a href="https://rubygems.org/gems/rspec-rails/versions">releases</a>)</li>
<li>We added some of RSpec’s most popular features (like <a href="/https/raw.githubusercontent.com/blog/2014/01/new-in-rspec-3-composable-matchers/">composable
matchers</a>,
<a href="https://rhnh.net/2013/12/10/new-in-rspec-3-verifying-doubles/">verifying doubles</a>, and
<a href="/https/raw.githubusercontent.com/blog/2015/06/rspec-3-3-has-been-released/#core-bisect"><code>--bisect</code></a>)</li>
<li>I co-authored <a href="https://pragprog.com/book/rspec3/effective-testing-with-rspec-3">a book about using RSpec
effectively</a></li>
<li>RSpec became <a href="https://rubygems.org/stats">the most popular Ruby gem</a> with over 300 million downloads</li>
</ul>
<p>During that time, my life has also changed significantly:</p>
<ul>
<li>I changed employers from <a href="https://moz.com/">Moz</a> to <a href="https://squareup.com/">Square</a> last year</li>
<li>I stopped using Ruby as my primary language about 3 years ago (at Moz we switched to
<a href="https://elixir-lang.org/">Elixir</a> and my team at Square is using Java)</li>
<li>I have 3 kids now (when I started working on RSpec I didn’t have any!)</li>
<li>I no longer have the kind of time I used to to work on open source</li>
</ul>
<p>As much as I have enjoyed working on RSpec for the better part of a decade, I
rarely have the time anymore, and when I do have the time, I often don’t enjoy it.
I’m also no longer a regular user of RSpec.</p>
<p>In short, the time has come for me to take a step back from the project.
Effective immediately, Jon Rowe and Sam Phippen are the new co-leads of
RSpec. Both of them have been contributing to RSpec for years and I have
every confidence they will lead the project well.</p>
<p>Please join me in thanking Jon and Sam for stepping forward to lead the
project!</p>
RSpec 3.8 has been released!http://rspec.info/blog/2018/08/rspec-3-8-has-been-released/2018-08-04T01:00:00+01:002022-05-10T10:51:57+01:00Myron Marston and Jon Rowe<p>RSpec 3.8 has just been released! Given our commitment to
<a href="http://semver.org/">semantic versioning</a>, this should be an easy
upgrade for anyone already using RSpec 3, but if we did introduce
any regressions, please let us know, and we’ll get a patch release
out with a fix ASAP.</p>
<p>We’re also happy to announce that <a href="https://github.com/benoittgt">Benoit Tigeot</a>
has joined the RSpec team since the last release. Welcome to the team, Benoit!
We know you’ll do great things :).</p>
<p>RSpec continues to be a community-driven project with contributors
from all over the world. This release includes 369 commits and 98
merged pull requests from 52 different contributors!</p>
<p>Thank you to everyone who helped make this release happen!</p>
<h2>Notable Changes</h2>
<h3>Core: Performance of –bisect has been significantly improved</h3>
<p>RSpec has supported a <code>--bisect</code> feature since
<a href="/https/raw.githubusercontent.com/blog/2015/06/rspec-3-3-has-been-released/#core-bisect">RSpec 3.3</a>.
This feature is useful when your test suite has an ordering
dependency–that is, the suite only fails when the tests are run
in a specific order. <code>--bisect</code> will repeatedly run smaller and
smaller subsets of your suite in order to narrow it down to the
minimal set of specs needed to reproduce the failures.</p>
<p>Since 3.3, this feature has been implemented by shelling out to
the <code>rspec</code> command to run each subset. While simple and effective,
we realized this approach was also quite inefficient. Each time the
<code>rspec</code> command runs, it must boot RSpec and your application
environment (which may include Rails and many other gems) from scratch.
The cost of this can vary considerably from a couple hundred milliseconds
to 30+ seconds on a large Rails app. In extreme cases, the runtime of
<code>--bisect</code> can be dominated by the time it takes to boot your application
environment over and over and over.</p>
<p>In RSpec 3.8, we’ve improved bisect’s performance by using forking
on platforms that support it rather than shelling out. That way, we
can boot your application environment <em>once</em>, and then fork a subprocess
in which to run each subset of the test suite, avoiding the need to boot
your application many times.</p>
<p>The actual improvement you’ll see in practice will vary widely, but
in our <a href="https://github.com/rspec/rspec-core/pull/2511">limited testing</a>
it improved the runtime of <code>--bisect</code> by 33% in one case and an
order-of-magnitude (108.9 seconds down to 11.7 seconds) in another.</p>
<p>If you’re looking to maximize the benefit of this change, you may
want to pass some additional <code>--require</code> options when running a
bisection in order to pre-load as much of your application environment
as possible.</p>
<h3>Core: Support the XDG base directory spec for configuration</h3>
<p>RSpec, like many command line tools, supports the use of options
files, which can live at <code>.rspec</code> (for team project options)
<code>~/.rspec</code> (for global personal options) or at <code>.rspec-local</code>
(for personal project options – this file should not be under
source control). In RSpec 3.8, we’ve expanded this feature to
support the <a href="https://specifications.freedesktop.org/basedir-spec/latest/">XDG Base Directory
Specification</a>,
which defines a standard way for tools to locate the global personal
options file. This gives users complete control over where this
file is located rather than forcing it to live in their home directory.</p>
<p>To use this feature, simply set the <code>$XDG_CONFIG_HOME</code> environment
variable and put your RSpec options at <code>$XDG_CONFIG_HOME/rspec/options</code>.</p>
<p>For more info, <a href="https://specifications.freedesktop.org/basedir-spec/latest/">read the spec</a>
or <a href="https://github.com/rspec/rspec-core/pull/2538">check out the pull
request</a>.</p>
<p>Thanks to Magnus Bergmark for implementing this feature!</p>
<h3>Expectations: Formatted output length is now configurable</h3>
<p>When setting expectations on large objects their string representations can become
rather unwieldy and can clutter the console output. In RSpec 3.6, we started
truncating these objects to address this issue, but did not make it easily configurable.</p>
<p>In RSpec 3.8, you can now configure it:</p>
<div class="highlight"><pre class="highlight ruby"><code><span class="no">RSpec</span><span class="p">.</span><span class="nf">configure</span> <span class="k">do</span> <span class="o">|</span><span class="n">config</span><span class="o">|</span>
<span class="n">config</span><span class="p">.</span><span class="nf">expect_with</span> <span class="ss">:rspec</span> <span class="k">do</span> <span class="o">|</span><span class="n">expectations</span><span class="o">|</span>
<span class="n">expectations</span><span class="p">.</span><span class="nf">max_formatted_output_length</span> <span class="o">=</span> <span class="mi">200</span>
<span class="k">end</span>
<span class="k">end</span>
</code></pre></div>
<p>You can also disable the truncation entirely by setting the config option to <code>nil</code>.</p>
<h3>Rails: <code>have_http_status</code> matcher upgraded to support Rails 5.2</h3>
<p>A change in Rails 5.2 caused RSpec’s <code>have_http_status</code> matcher to issue deprecation
warnings. In RSpec 3.8, these warnings have been removed.</p>
<h3>Rails: View specs <code>stub_template</code> performance improved.</h3>
<p>Thanks to Simon Coffey for implementing caching for <code>stub_template</code>
that prevents unnecessary recreation of templates. This improves performance
by reducing the amount of allocation and setup performed.</p>
<h3>Rails: <code>rails_helper.rb</code> improvements</h3>
<p>Thank you to Koichi ITO and Alessandro Rodi for improving our generated
<code>rails_helper.rb</code> with improved messages when migrations are pending,
and bringing us in line with Rails standards.</p>
<h2>Stats:</h2>
<h3>Combined:</h3>
<ul>
<li><strong>Total Commits</strong>: 369</li>
<li><strong>Merged pull requests</strong>: 98</li>
<li><strong>52 contributors</strong>: Ace Dimasuhid, Alessandro Rodi, Alexander
Panasyuk, Alyssa Ross, Andrew, Andrew Vit, Benoit Tigeot, Brad Charna,
Brian Kephart, Christophe Bliard, Craig J. Bass, Daniel Colson, Douglas
Lovell, Eric Hayes, Garett Arrowood, Gary Bernhardt, Gustav Munkby,
James Crisp, Joel Taylor, Jon Rowe, Kenichi Kamiya, Koichi ITO, Lairan,
Laura Paakkinen, Laurent Cobos, Magnus Bergmark, Matt Brictson, Maxim
Krizhanovsky, Myron Marston, Nikola Đuza, Oleg Pudeyev, Olivier Lacan,
Olle Jonsson, Pablo Brasero, Paul McMahon, Regan Chan, Sam Phippen,
Sergiy Yarinovskiy, Shane Cavanaugh, Shia, Simon Coffey, Sorah Fukumori,
Systho, Szijjártó-Nagy Misu, Tom Chen, Xavier Shay, Yuji Nakayama,
arjan0307, joker1007, lsarni, n.epifanov, pavel</li>
</ul>
<h3>rspec-core:</h3>
<ul>
<li><strong>Total Commits</strong>: 94</li>
<li><strong>Merged pull requests</strong>: 24</li>
<li><strong>17 contributors</strong>: Alyssa Ross, Andrew Vit, Benoit Tigeot, Garett
Arrowood, Gary Bernhardt, Jon Rowe, Kenichi Kamiya, Koichi ITO, Magnus
Bergmark, Myron Marston, Oleg Pudeyev, Olle Jonsson, Sam Phippen, Sorah
Fukumori, Systho, Xavier Shay, arjan0307</li>
</ul>
<h3>rspec-expectations:</h3>
<ul>
<li><strong>Total Commits</strong>: 52</li>
<li><strong>Merged pull requests</strong>: 15</li>
<li><strong>13 contributors</strong>: Ace Dimasuhid, Alyssa Ross, Benoit Tigeot, James
Crisp, Jon Rowe, Kenichi Kamiya, Myron Marston, Pablo Brasero, Sam
Phippen, Xavier Shay, Yuji Nakayama, joker1007, n.epifanov</li>
</ul>
<h3>rspec-mocks:</h3>
<ul>
<li><strong>Total Commits</strong>: 47</li>
<li><strong>Merged pull requests</strong>: 16</li>
<li><strong>13 contributors</strong>: Alexander Panasyuk, Alyssa Ross, Andrew, Benoit
Tigeot, James Crisp, Jon Rowe, Kenichi Kamiya, Maxim Krizhanovsky, Myron
Marston, Olle Jonsson, Sam Phippen, Sergiy Yarinovskiy, Xavier Shay</li>
</ul>
<h3>rspec-rails:</h3>
<ul>
<li><strong>Total Commits</strong>: 132</li>
<li><strong>Merged pull requests</strong>: 27</li>
<li><strong>29 contributors</strong>: Alessandro Rodi, Benoit Tigeot, Brad Charna,
Brian Kephart, Christophe Bliard, Daniel Colson, Douglas Lovell, Eric
Hayes, Joel Taylor, Jon Rowe, Kenichi Kamiya, Koichi ITO, Lairan, Laura
Paakkinen, Laurent Cobos, Matt Brictson, Myron Marston, Nikola Đuza,
Olivier Lacan, Paul McMahon, Regan Chan, Sam Phippen, Shane Cavanaugh,
Shia, Simon Coffey, Szijjártó-Nagy Misu, Tom Chen, lsarni, pavel</li>
</ul>
<h3>rspec-support:</h3>
<ul>
<li><strong>Total Commits</strong>: 44</li>
<li><strong>Merged pull requests</strong>: 16</li>
<li><strong>10 contributors</strong>: Alyssa Ross, Benoit Tigeot, Craig J. Bass, Gustav
Munkby, James Crisp, Jon Rowe, Kenichi Kamiya, Myron Marston, Sam
Phippen, Xavier Shay</li>
</ul>
<h2>Docs</h2>
<h3>API Docs</h3>
<ul>
<li><a href="/https/raw.githubusercontent.com/documentation/3.8/rspec-core/">rspec-core</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.8/rspec-expectations/">rspec-expectations</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.8/rspec-mocks/">rspec-mocks</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.8/rspec-rails/">rspec-rails</a></li>
</ul>
<h3>Cucumber Features</h3>
<ul>
<li><a href="http://relishapp.com/rspec/rspec-core">rspec-core</a></li>
<li><a href="http://relishapp.com/rspec/rspec-expectations">rspec-expectations</a></li>
<li><a href="http://relishapp.com/rspec/rspec-mocks">rspec-mocks</a></li>
<li><a href="http://relishapp.com/rspec/rspec-rails">rspec-rails</a></li>
</ul>
<h2>Release Notes</h2>
<h3>rspec-core-3.8.0</h3>
<p><a href="http://github.com/rspec/rspec-core/compare/v3.7.1...v3.8.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Improve shell escaping used by <code>RSpec::Core::RakeTask</code> and <code>--bisect</code> so
that it works on <code>Pathname</code> objects. (Andrew Vit, #2479)</li>
<li>Nicely format errors encountered while loading files specified
by <code>--require</code> option. (Myron Marston, #2504)</li>
<li>Significantly improve the performance of <code>--bisect</code> on platforms that
support forking by replacing the shell-based runner with one that uses
forking so that RSpec and the application environment can be booted only
once, instead of once per spec run. (Myron Marston, #2511)</li>
<li>Provide a configuration API to pick which bisect runner is used for
<code>--bisect</code>. Pick a runner via <code>config.bisect_runner = :shell</code> or
<code>config.bisect_runner = :fork</code> in a file loaded by a <code>--require</code>
option passed at the command line or set in <code>.rspec</code>. (Myron Marston, #2511)</li>
<li>Support the <a href="https://specifications.freedesktop.org/basedir-spec/latest/">XDG Base Directory
Specification</a>
for the global options file. <code>~/.rspec</code> is still supported when no
options file is found in <code>$XDG_CONFIG_HOME/rspec/options</code> (Magnus Bergmark, #2538)</li>
<li>Extract <code>RSpec.world.prepare_example_filtering</code> that sets up the
example filtering for custom RSpec runners. (Oleg Pudeyev, #2552)</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Prevent an <code>ArgumentError</code> when truncating backtraces with two identical
backtraces. (Systho, #2515, Benoit Tigeot, #2539)</li>
</ul>
<h3>rspec-expectations-3.8.0</h3>
<p><a href="http://github.com/rspec/rspec-expectations/compare/v3.7.0...v3.8.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Improve failure message of <code>change(receiver, :message)</code> by including the
receiver as <code>SomeClass#some_message</code>. (Tomohiro Hashidate, #1005)</li>
<li>Improve <code>change</code> matcher so that it can correctly detect changes in
deeply nested mutable objects (such as arrays-of-hashes-of-arrays).
The improved logic uses the before/after <code>hash</code> value to see if the
object has been mutated, rather than shallow duping the object.
(Myron Marston, #1034)</li>
<li>Improve <code>include</code> matcher so that pseudo-hash objects (e.g. objects
that decorate a hash using a <code>SimpleDelegator</code> or similar) are treated
as a hash, as long as they implement <code>to_hash</code>. (Pablo Brasero, #1012)</li>
<li>Add <code>max_formatted_output_length=</code> to configuration, allowing changing
the length at which we truncate large output strings.
(Sam Phippen #951, Benoit Tigeot #1056)</li>
<li>Improve error message when passing a matcher that doesn’t support block
expectations to a block based <code>expect</code>. (@nicktime, #1066)</li>
</ul>
<h3>rspec-mocks-3.8.0</h3>
<p><a href="http://github.com/rspec/rspec-mocks/compare/v3.7.0...v3.8.0">Full Changelog</a></p>
<p>Bug Fixes:</p>
<ul>
<li>Issue error when encountering invalid “counted” negative message expectations.
(Sergiy Yarinovskiy, #1212)</li>
<li>Ensure <code>allow_any_instance_of</code> and <code>expect_any_instance_of</code> can be temporarily
supressed. (Jon Rowe, #1228)</li>
<li>Ensure <code>expect_any_instance_of(double).to_not have_received(:some_method)</code>
fails gracefully (as its not supported) rather than issuing a <code>NoMethodError</code>.
(Maxim Krizhanovsky, #1231)</li>
</ul>
<h3>rspec-rails-3.8.0</h3>
<p><a href="http://github.com/rspec/rspec-rails/compare/v3.7.2...v3.8.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Improved message when migrations are pending in the default <code>rails_helper.rb</code>
(Koichi ITO, #1924)</li>
<li><code>have_http_status</code> matcher now supports Rails 5.2 style response symbols
(Douglas Lovell, #1951)</li>
<li>Change generated Rails helper to match Rails standards for Rails.root
(Alessandro Rodi, #1960)</li>
<li>At support for asserting enqueued jobs have no wait period attached.
(Brad Charna, #1977)</li>
<li>Cache instances of <code>ActionView::Template</code> used in <code>stub_template</code> resulting
in increased performance due to less allocations and setup. (Simon Coffey, #1979)</li>
<li>Rails scaffold generator now respects longer namespaces (e.g. api/v1/<thing>).
(Laura Paakkinen, #1958)</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Escape quotation characters when producing method names for system spec
screenshots. (Shane Cavanaugh, #1955)</li>
<li>Use relative path for resolving fixtures when <code>fixture_path</code> is not set.
(Laurent Cobos, #1943)</li>
<li>Allow custom template resolvers in view specs. (@ahorek, #1941)</li>
</ul>
<h3>rspec-support-3.8.0</h3>
<p><a href="http://github.com/rspec/rspec-support/compare/v3.7.1...v3.8.0">Full Changelog</a></p>
<p>Bug Fixes:</p>
<ul>
<li>Order hash keys before diffing to improve diff accuracy when using mocked calls.
(James Crisp, #334)</li>
</ul>
RSpec 3.7 has been released!http://rspec.info/blog/2017/10/rspec-3-7-has-been-released/2017-10-17T01:00:00+01:002022-05-10T10:51:57+01:00Sam Phippen<p>RSpec 3.7 has just been released! Given our commitment to
<a href="http://semver.org/">semantic versioning</a>, this should be an easy
upgrade for anyone already using RSpec 3, but if we did introduce
any regressions, please let us know, and we’ll get a patch release
out with a fix ASAP.</p>
<p>RSpec continues to be a community-driven project with contributors
from all over the world. This release includes over 127 commits and 31
merged pull requests from 27 different contributors!</p>
<p>It’s worth noting: this is a smaller release than usual, as we wanted to get our
Rails System Testing integration to you as quickly as possible.</p>
<p>Thank you to everyone who helped make this release happen!</p>
<h2>Notable Changes</h2>
<h3>Rails: <code>ActionDispatch::SystemTest</code> integration (System specs)</h3>
<p>In Rails 5.1, a new kind of test was added, called system test. These tests wrap
capybara and Rails to allow for a full stack testing experience from frontend
javascript all the way down to your database.</p>
<p>For a long time, RSpec has had <a href="https://relishapp.com/rspec/rspec-rails/docs/feature-specs/feature-spec">Feature Specs</a>
which provide a smiliar integration. There are a few important differences
between feature specs and system specs that are worth enumerating:</p>
<ol>
<li>If you use a javascript enabled driver (like selenium or poltergeist) with
feature specs your tests run in a different <strong>process</strong> than your Rails app.
This means that your tests and your code under test cannot share a database
transaction, and so you cannot use RSpec’s built in mechanism to roll back
database changes, instead requiring a gem like <a href="https://github.com/DatabaseCleaner/database_cleaner">database
cleaner</a>. With system
tests, the Rails team has done the hard work to ensure that this is not the
case, and so you can safely use RSpec’s mechanism, without needing an extra
gem.</li>
<li>RSpec’s feature specs defaults to using the <code>Rack::Test</code> capybara driver. If
you want to use a javascript enabled test browser, it is on you to manage the
capybara configuration. For a long time this has proven to be something that
is tricky to get correct with more advanced integrations like selenium.
System specs default to using selenium. The difficulty of the configuration
is hidden by rails, which manipulates capybara and webdriver with chrome on
your behalf.</li>
</ol>
<p>As such, we are recommending that users on Rails 5.1 prefer writing system specs
over feature specs for full application integration testing. We’d like to give a
special thanks to <a href="https://twitter.com/eileencodes">Eileen Uchitelle</a> who lead
the implementation of this feature in Rails.</p>
<h2>Stats:</h2>
<h3>Combined:</h3>
<ul>
<li><strong>Total Commits</strong>: 127</li>
<li><strong>Merged pull requests</strong>: 31</li>
<li><strong>27 contributors</strong>: Aaron Rosenberg, Alex Shi, Alyssa Ross, Britni Alexander, Dave Woodall, Devon Estes, Hisashi Kamezawa, Ian Ker-Seymer, James Adam, Jim Kingdon, Jon Rowe, Levi Robertson, Myron Marston, Pat Allan, RustyNail, Ryan Lue, Sam Phippen, Samuel Cochran, Sergei Trofimovich, Takeshi Arabiki, Thomas Hart, Tobias Pfeiffer, Wojciech Wnętrzak, Xavier Shay, Yuji Nakayama, Zhong Zheng, oh<em>rusty</em>nail</li>
</ul>
<h3>rspec-core:</h3>
<ul>
<li><strong>Total Commits</strong>: 40</li>
<li><strong>Merged pull requests</strong>: 10</li>
<li><strong>11 contributors</strong>: Devon Estes, Ian Ker-Seymer, Jon Rowe, Levi Robertson, Myron Marston, Pat Allan, Sam Phippen, Takeshi Arabiki, Thomas Hart, Tobias Pfeiffer, Yuji Nakayama</li>
</ul>
<h3>rspec-expectations:</h3>
<ul>
<li><strong>Total Commits</strong>: 13</li>
<li><strong>Merged pull requests</strong>: 2</li>
<li><strong>5 contributors</strong>: Jim Kingdon, Myron Marston, Pat Allan, Sam Phippen, Yuji Nakayama</li>
</ul>
<h3>rspec-mocks:</h3>
<ul>
<li><strong>Total Commits</strong>: 14</li>
<li><strong>Merged pull requests</strong>: 2</li>
<li><strong>6 contributors</strong>: Aaron Rosenberg, Myron Marston, Pat Allan, Sam Phippen, Yuji Nakayama, Zhong Zheng</li>
</ul>
<h3>rspec-rails:</h3>
<ul>
<li><strong>Total Commits</strong>: 38</li>
<li><strong>Merged pull requests</strong>: 9</li>
<li><strong>16 contributors</strong>: Alex Shi, Alyssa Ross, Britni Alexander, Dave Woodall, Hisashi Kamezawa, James Adam, Jon Rowe, Myron Marston, RustyNail, Ryan Lue, Sam Phippen, Samuel Cochran, Wojciech Wnętrzak, Xavier Shay, Yuji Nakayama, oh<em>rusty</em>nail</li>
</ul>
<h3>rspec-support:</h3>
<ul>
<li><strong>Total Commits</strong>: 22</li>
<li><strong>Merged pull requests</strong>: 8</li>
<li><strong>6 contributors</strong>: Jon Rowe, Myron Marston, Pat Allan, Sam Phippen, Sergei Trofimovich, Yuji Nakayama</li>
</ul>
<h2>Docs</h2>
<h3>API Docs</h3>
<ul>
<li><a href="/https/raw.githubusercontent.com/documentation/3.7/rspec-core/">rspec-core</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.7/rspec-expectations/">rspec-expectations</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.7/rspec-mocks/">rspec-mocks</a></li>
<li><a href="/https/raw.githubusercontent.com/documentation/3.7/rspec-rails/">rspec-rails</a></li>
</ul>
<h3>Cucumber Features</h3>
<ul>
<li><a href="http://relishapp.com/rspec/rspec-core">rspec-core</a></li>
<li><a href="http://relishapp.com/rspec/rspec-expectations">rspec-expectations</a></li>
<li><a href="http://relishapp.com/rspec/rspec-mocks">rspec-mocks</a></li>
<li><a href="http://relishapp.com/rspec/rspec-rails">rspec-rails</a></li>
</ul>
<h2>Release notes:</h2>
<h3>RSpec Core</h3>
<p><a href="http://github.com/rspec/rspec-core/compare/v3.6.0...v3.7.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Add <code>-n</code> alias for <code>--next-failure</code>. (Ian Ker-Seymer, #2434)</li>
<li>Improve compatibility with <code>--enable-frozen-string-literal</code> option
on Ruby 2.3+. (Pat Allan, #2425, #2427, #2437)</li>
<li>Do not run <code>:context</code> hooks for example groups that have been skipped.
(Devon Estes, #2442)</li>
<li>Add <code>errors_outside_of_examples_count</code> to the JSON formatter.
(Takeshi Arabiki, #2448)</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Improve compatibility with frozen string literal flag. (#2425, Pat Allan)</li>
</ul>
<h3>RSpec Expectations</h3>
<p><a href="http://github.com/rspec/rspec-expectations/compare/v3.6.0...v3.7.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Improve compatibility with <code>--enable-frozen-string-literal</code> option
on Ruby 2.3+. (Pat Allan, #997)</li>
</ul>
<h2>RSpec Mocks</h2>
<p><a href="http://github.com/rspec/rspec-mocks/compare/v3.6.0...v3.7.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Improve compatibility with <code>--enable-frozen-string-literal</code> option
on Ruby 2.3+. (Pat Allan, #1165)</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Fix <code>hash_including</code> and <code>hash_excluding</code> so that they work against
subclasses of <code>Hash</code>. (Aaron Rosenberg, #1167)</li>
</ul>
<h2>RSpec Rails</h2>
<p><a href="http://github.com/rspec/rspec-rails/compare/v3.6.0...v3.7.0">Full Changelog</a></p>
<p>Bug Fixes:</p>
<ul>
<li>Prevent “template not rendered” log message from erroring in threaded
environments. (Samuel Cochran, #1831)</li>
<li>Correctly generate job name in error message. (Wojciech Wnętrzak, #1814)</li>
</ul>
<p>Enhancements:</p>
<ul>
<li>Allow <code>be_a_new(...).with(...)</code> matcher to accept matchers for
attribute values. (Britni Alexander, #1811)</li>
<li>Only configure RSpec Mocks if it is fully loaded. (James Adam, #1856)</li>
<li>Integrate with <code>ActionDispatch::SystemTestCase</code>. (Sam Phippen, #1813)</li>
</ul>
<h2>RSpec Support</h2>
<p><a href="http://github.com/rspec/rspec-support/compare/v3.6.0...v3.7.0">Full Changelog</a></p>
<p>Enhancements:</p>
<ul>
<li>Improve compatibility with <code>--enable-frozen-string-literal</code> option
on Ruby 2.3+. (Pat Allan, #320)</li>
<li>Add <code>Support.class_of</code> for extracting class of any object.
(Yuji Nakayama, #325)</li>
</ul>
<p>Bug Fixes:</p>
<ul>
<li>Fix recursive const support to not blow up when given buggy classes
that raise odd errors from <code>#to_str</code>. (Myron Marston, #317)</li>
</ul>