-
-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathfeed.xml
1149 lines (916 loc) · 63.6 KB
/
feed.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>RSpec</title>
<subtitle>The Official RSpec Blog</subtitle>
<id>http://rspec.info/blog</id>
<link href="http://rspec.info/blog"/>
<link href="http://rspec.info/blog/feed.xml" rel="self"/>
<updated>2020-06-22T00:00:00Z</updated>
<author>
<name>The RSpec Core Team</name>
</author>
<entry>
<title>RSpec Branching Strategy</title>
<link rel="alternate" href="http://rspec.info/blog/2020/06/rspec-branching-strategy/"/>
<id>http://rspec.info/blog/2020/06/rspec-branching-strategy/</id>
<published>2020-06-22T00:00:00Z</published>
<updated>2020-06-22T10:15:31+01:00</updated>
<author>
<name>Jon Rowe</name>
</author>
<content type="html"><h1 id="the-short-version">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 id="the-long-version">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 id="implications">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 id="steps-we-intend-to-take">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>
</content>
</entry>
<entry>
<title>RSpec Rails 4.0 has been released!</title>
<link rel="alternate" href="http://rspec.info/blog/2020/05/rspec-rails-4-0-has-been-released/"/>
<id>http://rspec.info/blog/2020/05/rspec-rails-4-0-has-been-released/</id>
<published>2020-05-27T00:00:00Z</published>
<updated>2020-05-27T16:04:15+01:00</updated>
<author>
<name>Benoit Tigeot, Jon Rowe and Phil Pirozhkov</name>
</author>
<content type="html"><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 id="notable-changes">Notable Changes</h2>
<p>Support for Rails 6, including support for testing ActionCable, ActiveMailbox.</p>
<h3 id="breaking-changes">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 id="removed-version-lock-with-rspec-gems">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 id="improved-jruby-support">Improved JRuby support</h3>
<p>We have improved JRuby support and RSpec Rails 4 fully supports JRuby on Rails 5 and 6.</p>
<h3 id="support-for-action-cable">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 id="support-for-action-mailbox">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">"[email protected]"</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 id="improvements-to-generators">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 id="allow-configuring-active-job-queueadapter-in-system-specs">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 id="silence-log-output-with-puma">Silence log output with Puma</h3>
<p>By default, Puma will no longer print logs when running system specs.</p>
<h3 id="ability-to-manually-turn-off-active-record-support">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 id="stats">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 id="docs">Docs</h2>
<h3 id="api-docs">API Docs</h3>
<ul>
<li><a href="/documentation/4.0/rspec-rails/">rspec-rails</a></li>
</ul>
<h3 id="cucumber-features">Cucumber Features</h3>
<ul>
<li><a href="https://relishapp.com/rspec/rspec-rails/v/4-0/">rspec-rails</a></li>
</ul>
<h2 id="release-notes">Release Notes</h2>
<h3 id="section">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>&lt;Class&gt;.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 id="section-1">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>
</content>
</entry>
<entry>
<title>RSpec 3.9 has been released, and RSpec team changes.</title>
<link rel="alternate" href="http://rspec.info/blog/2019/10/rspec-3-9-has-been-released/"/>
<id>http://rspec.info/blog/2019/10/rspec-3-9-has-been-released/</id>
<published>2019-10-16T00:00:00Z</published>
<updated>2019-10-17T10:11:44+01:00</updated>
<author>
<name>Jon Rowe</name>
</author>
<content type="html"><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 id="notable-changes">Notable Changes</h2>
<h3 id="core-improved-error-handling">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 id="core-command-line-interface-improvement---example-matches">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 id="core-new-formatter">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 id="expectations-respondtonew">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 id="expectations-empty-diff-warning">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 id="mocks-improved-thread-safety">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 id="rails-railshelperrb-improvements">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 id="rails-new-email-matchers">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 id="rails-new-generators">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 id="stats">Stats:</h2>
<h3 id="combined">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 id="rspec-core">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 id="rspec-expectations">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 id="rspec-mocks">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 id="rspec-rails">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 id="rspec-support">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 id="docs">Docs</h2>
<h3 id="api-docs">API Docs</h3>
<ul>
<li><a href="/documentation/3.9/rspec-core/">rspec-core</a></li>
<li><a href="/documentation/3.9/rspec-expectations/">rspec-expectations</a></li>
<li><a href="/documentation/3.9/rspec-mocks/">rspec-mocks</a></li>
<li><a href="/documentation/3.9/rspec-rails/">rspec-rails</a></li>
</ul>
<h3 id="cucumber-features">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 id="release-notes">Release Notes</h2>
<h3 id="rspec-core-390">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 id="rspec-expectations-390">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 id="rspec-mocks-390">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 id="rspec-rails-390">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_not have_enqueued_job.
(Emric Istanful, #2069)</li>
</ul>
</content>
</entry>
<entry>
<title>Jon Rowe and Sam Phippen are RSpec's new leads</title>
<link rel="alternate" href="http://rspec.info/blog/2018/09/jon-rowe-and-sam-phippen-are-rspecs-new-leads/"/>
<id>http://rspec.info/blog/2018/09/jon-rowe-and-sam-phippen-are-rspecs-new-leads/</id>
<published>2018-09-23T00:00:00Z</published>
<updated>2019-10-17T10:11:44+01:00</updated>
<author>
<name>Myron Marston</name>
</author>
<content type="html"><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="/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="/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>
</content>
</entry>
<entry>
<title>RSpec 3.8 has been released!</title>
<link rel="alternate" href="http://rspec.info/blog/2018/08/rspec-3-8-has-been-released/"/>
<id>http://rspec.info/blog/2018/08/rspec-3-8-has-been-released/</id>
<published>2018-08-04T00:00:00Z</published>
<updated>2019-10-17T10:11:44+01:00</updated>
<author>
<name>Myron Marston and Jon Rowe</name>
</author>
<content type="html"><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 id="notable-changes">Notable Changes</h2>
<h3 id="core-performance-of---bisect-has-been-significantly-improved">Core: Performance of –bisect has been significantly improved</h3>
<p>RSpec has supported a <code>--bisect</code> feature since
<a href="/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 id="core-support-the-xdg-base-directory-spec-for-configuration">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 id="expectations-formatted-output-length-is-now-configurable">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 id="rails--havehttpstatus-matcher-upgraded-to-support-rails-52">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 id="rails-view-specs-stubtemplate-performance-improved">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 id="rails-railshelperrb-improvements">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 id="stats">Stats:</h2>
<h3 id="combined">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 id="rspec-core">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 id="rspec-expectations">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 id="rspec-mocks">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 id="rspec-rails">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 id="rspec-support">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 id="docs">Docs</h2>
<h3 id="api-docs">API Docs</h3>
<ul>
<li><a href="/documentation/3.8/rspec-core/">rspec-core</a></li>
<li><a href="/documentation/3.8/rspec-expectations/">rspec-expectations</a></li>
<li><a href="/documentation/3.8/rspec-mocks/">rspec-mocks</a></li>
<li><a href="/documentation/3.8/rspec-rails/">rspec-rails</a></li>
</ul>
<h3 id="cucumber-features">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 id="release-notes">Release Notes</h2>
<h3 id="rspec-core-380">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 id="rspec-expectations-380">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 id="rspec-mocks-380">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 id="rspec-rails-380">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/&lt;thing&gt;).
(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 id="rspec-support-380">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>
</content>
</entry>
<entry>
<title>RSpec 3.7 has been released!</title>
<link rel="alternate" href="http://rspec.info/blog/2017/10/rspec-3-7-has-been-released/"/>
<id>http://rspec.info/blog/2017/10/rspec-3-7-has-been-released/</id>
<published>2017-10-17T00:00:00Z</published>
<updated>2019-10-17T10:11:44+01:00</updated>
<author>
<name>Sam Phippen</name>
</author>
<content type="html"><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 id="notable-changes">Notable Changes</h2>
<h3 id="rails-actiondispatchsystemtest-integration-system-specs">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 id="stats">Stats:</h2>
<h3 id="combined">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_rusty_nail</li>
</ul>
<h3 id="rspec-core">rspec-core:</h3>