respec 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -5
- data/CHANGELOG +7 -0
- data/Gemfile +11 -0
- data/README.markdown +2 -2
- data/bin/respec +2 -0
- data/lib/respec/app.rb +11 -12
- data/lib/respec/formatter.rb +37 -19
- data/lib/respec/version.rb +1 -1
- data/respec.gemspec +1 -3
- data/spec/integration_spec.rb +1 -1
- data/spec/respec/app_spec.rb +42 -32
- data/spec/respec/formatter_spec.rb +49 -21
- data/spec/spec_helper.rb +4 -4
- metadata +5 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfad27bdd03eab8d26196cec1c56ab386f313fb1
|
4
|
+
data.tar.gz: 6e6a4223f0caa56a7233fcc97816f720d0710268
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e139c64ecb48d92d2d44bd37be6c13d25cdf3a5e4bcac1f664a0b7e1c5e78990c2539883807a972a4ebe437545b86a054d7e7a3c40473d17f7175e05bbf84f7
|
7
|
+
data.tar.gz: fdf8cd1a0ad2d9713a15a6020a296956e822b5c9750f1f024aaa73178848a57ed3bdd1945fae847177f476e266aa8927b89a203c758eda9087429e9514f7a4f5
|
data/.travis.yml
CHANGED
@@ -2,8 +2,12 @@ language: ruby
|
|
2
2
|
bundler_args: --without dev
|
3
3
|
script: bundle exec rake ci
|
4
4
|
rvm:
|
5
|
-
-
|
6
|
-
- 1.
|
7
|
-
-
|
8
|
-
- jruby-
|
9
|
-
- rbx-
|
5
|
+
- 2.0.0
|
6
|
+
- 2.1.5
|
7
|
+
- 2.2.0
|
8
|
+
- jruby-1.7.9
|
9
|
+
- rbx-2.4.1
|
10
|
+
env:
|
11
|
+
- RESPEC_RSPEC_VERSION='~> 2.11.0'
|
12
|
+
- RESPEC_RSPEC_VERSION='~> 2.14.0'
|
13
|
+
- RESPEC_RSPEC_VERSION='~> 3'
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
== 0.8.0 2015-02-02
|
2
|
+
|
3
|
+
* Support RSpec 3.
|
4
|
+
* Record failing example names, not locations. Requires rspec 2.11 or above.
|
5
|
+
* Wait until end of test suite before updating failure file.
|
6
|
+
* Use rspec binstub if present.
|
7
|
+
|
1
8
|
== 0.7.0 2014-04-16
|
2
9
|
|
3
10
|
* Allow setting failure file via argument. Useful under CI with parallel_tests.
|
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
## Respec
|
1
|
+
## Respec [![Build Status](https://travis-ci.org/oggy/respec.png)](https://travis-ci.org/oggy/respec) [![Gem Version](https://badge.fury.io/rb/respec.svg)](http://badge.fury.io/rb/respec)
|
2
2
|
|
3
3
|
Provides a command, `respec`, which wraps `rspec`, and records your
|
4
4
|
failing examples for easy rerunning.
|
@@ -48,7 +48,7 @@ command line:
|
|
48
48
|
If the argument doesn't name an existing file, it's assumed to be an
|
49
49
|
example name.
|
50
50
|
|
51
|
-
It'll even `bundle exec` for you automatically.
|
51
|
+
It'll even `bundle exec` for you automatically, or use a binstub if present.
|
52
52
|
|
53
53
|
There are a few other shortcuts. `respec --help` to see them all.
|
54
54
|
|
data/bin/respec
CHANGED
data/lib/respec/app.rb
CHANGED
@@ -11,7 +11,6 @@ module Respec
|
|
11
11
|
@raw_args = []
|
12
12
|
end
|
13
13
|
@failures_path = self.class.default_failures_path
|
14
|
-
@selected_failures = false
|
15
14
|
@update_failures = true
|
16
15
|
process_args
|
17
16
|
end
|
@@ -19,14 +18,16 @@ module Respec
|
|
19
18
|
attr_accessor :failures_path
|
20
19
|
|
21
20
|
def command
|
22
|
-
@command ||=
|
21
|
+
@command ||= program_args + generated_args + raw_args + formatter_args
|
23
22
|
end
|
24
23
|
|
25
|
-
def
|
26
|
-
if File.exist?(
|
27
|
-
['
|
24
|
+
def program_args
|
25
|
+
if File.exist?('bin/rspec')
|
26
|
+
['bin/rspec']
|
27
|
+
elsif File.exist?(ENV['BUNDLE_GEMFILE'] || 'Gemfile')
|
28
|
+
['bundle', 'exec', 'rspec']
|
28
29
|
else
|
29
|
-
[]
|
30
|
+
['rspec']
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
@@ -100,8 +101,7 @@ module Respec
|
|
100
101
|
STDERR.puts "No specs failed!"
|
101
102
|
[]
|
102
103
|
else
|
103
|
-
|
104
|
-
failures
|
104
|
+
failures.flat_map { |f| ['-e', f] }
|
105
105
|
end
|
106
106
|
else
|
107
107
|
warn "no fail file - ignoring 'f' argument"
|
@@ -111,14 +111,13 @@ module Respec
|
|
111
111
|
elsif arg =~ /\A\d+\z/
|
112
112
|
i = Integer(arg)
|
113
113
|
if (failure = failures[i - 1])
|
114
|
-
args << failure
|
115
|
-
@selected_failures = true
|
114
|
+
args << '-e' << failure
|
116
115
|
@update_failures = false
|
117
116
|
else
|
118
117
|
warn "invalid failure: #{i} for (1..#{failures.size})"
|
119
118
|
end
|
120
119
|
else
|
121
|
-
args << '
|
120
|
+
args << '-e' << arg.gsub(/[$]/, '\\\\\\0')
|
122
121
|
end
|
123
122
|
end
|
124
123
|
|
@@ -138,7 +137,7 @@ module Respec
|
|
138
137
|
# If we selected individual failures to rerun, don't give the files to
|
139
138
|
# rspec, as those files will be run in their entirety.
|
140
139
|
@generated_args = expanded
|
141
|
-
@generated_args.concat(files)
|
140
|
+
@generated_args.concat(files)
|
142
141
|
end
|
143
142
|
|
144
143
|
def failures
|
data/lib/respec/formatter.rb
CHANGED
@@ -1,32 +1,50 @@
|
|
1
1
|
require 'rspec/core/formatters/base_formatter'
|
2
|
+
require 'rspec/core/version'
|
2
3
|
|
3
4
|
module Respec
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
def self.failures_path
|
6
|
+
ENV['RESPEC_FAILURES'] || File.expand_path(".respec_failures")
|
7
|
+
end
|
8
|
+
|
9
|
+
if (RSpec::Core::Version::STRING.scan(/\d+/).map { |s| s.to_i } <=> [3]) < 0
|
10
|
+
|
11
|
+
class Formatter < RSpec::Core::Formatters::BaseFormatter
|
12
|
+
def initialize(output=nil)
|
13
|
+
super(output)
|
8
14
|
end
|
9
|
-
end
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
warn "no spec file found for #{root_metadata[:location]}"
|
17
|
-
return root_metadata[:location]
|
16
|
+
def start_dump
|
17
|
+
open(Respec.failures_path, 'w') do |file|
|
18
|
+
@failed_examples.each do |example|
|
19
|
+
file.puts example.metadata[:full_description]
|
20
|
+
end
|
18
21
|
end
|
19
22
|
end
|
20
|
-
metadata[:location]
|
21
23
|
end
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
else
|
26
|
+
|
27
|
+
class Formatter < RSpec::Core::Formatters::BaseFormatter
|
28
|
+
def initialize(output=nil)
|
29
|
+
@respec_failures = []
|
30
|
+
super(output)
|
31
|
+
end
|
32
|
+
|
33
|
+
def example_failed(notification)
|
34
|
+
@respec_failures << notification.example.full_description
|
35
|
+
end
|
36
|
+
|
37
|
+
def start_dump(notification)
|
38
|
+
open(Respec.failures_path, 'w') do |file|
|
39
|
+
@respec_failures.each do |failure|
|
40
|
+
file.puts failure
|
41
|
+
end
|
42
|
+
end
|
27
43
|
end
|
28
|
-
|
44
|
+
|
45
|
+
RSpec::Core::Formatters.register self, :example_failed, :start_dump
|
29
46
|
end
|
47
|
+
|
30
48
|
end
|
31
49
|
end
|
32
50
|
|
@@ -35,5 +53,5 @@ end
|
|
35
53
|
# option.
|
36
54
|
RSpec.configure do |config|
|
37
55
|
config.add_formatter 'progress' if config.formatters.empty?
|
38
|
-
config.add_formatter Respec::Formatter
|
56
|
+
config.add_formatter Respec::Formatter
|
39
57
|
end
|
data/lib/respec/version.rb
CHANGED
data/respec.gemspec
CHANGED
@@ -14,7 +14,5 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.files = `git ls-files`.split("\n")
|
15
15
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
16
16
|
|
17
|
-
gem.add_runtime_dependency 'rspec', '>= 2.
|
18
|
-
gem.add_development_dependency 'ritual', '~> 0.4'
|
19
|
-
gem.add_development_dependency 'temporaries', '~> 0.4'
|
17
|
+
gem.add_runtime_dependency 'rspec', '>= 2.11'
|
20
18
|
end
|
data/spec/integration_spec.rb
CHANGED
data/spec/respec/app_spec.rb
CHANGED
@@ -9,10 +9,6 @@ describe Respec::App do
|
|
9
9
|
|
10
10
|
Respec::App.default_failures_path = FAIL_PATH
|
11
11
|
|
12
|
-
def write_file(path, content)
|
13
|
-
open(path, 'w') { |f| f.print content }
|
14
|
-
end
|
15
|
-
|
16
12
|
def make_failures_file(*examples)
|
17
13
|
options = examples.last.is_a?(Hash) ? examples.pop : {}
|
18
14
|
path = options[:path] || Respec::App.default_failures_path
|
@@ -35,12 +31,21 @@ describe Respec::App do
|
|
35
31
|
end
|
36
32
|
end
|
37
33
|
|
38
|
-
describe "#
|
39
|
-
it "should run through
|
34
|
+
describe "#program_args" do
|
35
|
+
it "should run through a binstub if present" do
|
36
|
+
FileUtils.mkdir "#{tmp}/bin"
|
37
|
+
FileUtils.touch "#{tmp}/bin/rspec"
|
38
|
+
Dir.chdir tmp do
|
39
|
+
app = Respec::App.new
|
40
|
+
expect(app.program_args).to eq ['bin/rspec']
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should otherwise run through bundler if a Gemfile is present" do
|
40
45
|
FileUtils.touch "#{tmp}/Gemfile"
|
41
46
|
Dir.chdir tmp do
|
42
47
|
app = Respec::App.new
|
43
|
-
expect(app.
|
48
|
+
expect(app.program_args).to eq ['bundle', 'exec', 'rspec']
|
44
49
|
end
|
45
50
|
end
|
46
51
|
|
@@ -49,7 +54,7 @@ describe Respec::App do
|
|
49
54
|
FileUtils.touch "#{tmp}/custom_gemfile"
|
50
55
|
Dir.chdir tmp do
|
51
56
|
app = Respec::App.new
|
52
|
-
expect(app.
|
57
|
+
expect(app.program_args).to eq ['bundle', 'exec', 'rspec']
|
53
58
|
end
|
54
59
|
end
|
55
60
|
end
|
@@ -58,7 +63,7 @@ describe Respec::App do
|
|
58
63
|
with_hash_value ENV, 'BUNDLE_GEMFILE', nil do
|
59
64
|
Dir.chdir tmp do
|
60
65
|
app = Respec::App.new
|
61
|
-
expect(app.
|
66
|
+
expect(app.program_args).to eq ['rspec']
|
62
67
|
end
|
63
68
|
end
|
64
69
|
end
|
@@ -71,13 +76,13 @@ describe Respec::App do
|
|
71
76
|
end
|
72
77
|
|
73
78
|
it "should update the stored failures if 'f' is used" do
|
74
|
-
make_failures_file 'a
|
79
|
+
make_failures_file 'a'
|
75
80
|
app = Respec::App.new('f')
|
76
81
|
expect(app.formatter_args).to eq [FORMATTER_PATH]
|
77
82
|
end
|
78
83
|
|
79
84
|
it "should not update the stored failures if a numeric argument is given" do
|
80
|
-
make_failures_file 'a
|
85
|
+
make_failures_file 'a'
|
81
86
|
app = Respec::App.new('1')
|
82
87
|
expect(app.formatter_args).to eq []
|
83
88
|
end
|
@@ -96,21 +101,27 @@ describe Respec::App do
|
|
96
101
|
end
|
97
102
|
|
98
103
|
it "should run all failures if 'f' is given" do
|
99
|
-
make_failures_file 'a
|
104
|
+
make_failures_file 'a', 'b'
|
100
105
|
app = Respec::App.new('f')
|
101
|
-
expect(app.generated_args).to eq ['a
|
106
|
+
expect(app.generated_args).to eq ['-e', 'a', '-e', 'b', 'spec']
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should pass failures with spaces in them as a single argument" do
|
110
|
+
make_failures_file 'a a'
|
111
|
+
app = Respec::App.new('f')
|
112
|
+
expect(app.generated_args).to eq ['-e', 'a a', 'spec']
|
102
113
|
end
|
103
114
|
|
104
115
|
it "should find the right failures if the failures file is overridden after the 'f'" do
|
105
|
-
make_failures_file 'a
|
116
|
+
make_failures_file 'a', 'b', path: "#{FAIL_PATH}-overridden"
|
106
117
|
app = Respec::App.new('f', "FAILURES=#{FAIL_PATH}-overridden")
|
107
|
-
expect(app.generated_args).to eq ['a
|
118
|
+
expect(app.generated_args).to eq ['-e', 'a', '-e', 'b', 'spec']
|
108
119
|
end
|
109
120
|
|
110
121
|
it "should run the n-th failure if a numeric argument 'n' is given" do
|
111
|
-
make_failures_file 'a
|
122
|
+
make_failures_file 'a', 'b'
|
112
123
|
app = Respec::App.new('2')
|
113
|
-
expect(app.generated_args).to eq ['b
|
124
|
+
expect(app.generated_args).to eq ['-e', 'b', 'spec']
|
114
125
|
end
|
115
126
|
|
116
127
|
it "should interpret existing file names as file name arguments" do
|
@@ -126,23 +137,22 @@ describe Respec::App do
|
|
126
137
|
end
|
127
138
|
|
128
139
|
it "should treat other arguments as example names" do
|
129
|
-
|
130
|
-
app
|
131
|
-
expect(app.generated_args).to eq ["#{tmp}/FILE"]
|
140
|
+
app = Respec::App.new('a', 'b')
|
141
|
+
expect(app.generated_args).to eq ['-e', 'a', '-e', 'b', 'spec']
|
132
142
|
end
|
133
143
|
|
134
|
-
it "should
|
144
|
+
it "should include named files when a numeric argument is given" do
|
135
145
|
FileUtils.touch "#{tmp}/FILE"
|
136
|
-
make_failures_file 'a
|
146
|
+
make_failures_file 'a'
|
137
147
|
app = Respec::App.new("#{tmp}/FILE", '1')
|
138
|
-
expect(app.generated_args).to eq ['a
|
148
|
+
expect(app.generated_args).to eq ['-e', 'a', "#{tmp}/FILE"]
|
139
149
|
end
|
140
150
|
|
141
|
-
it "should
|
151
|
+
it "should include named files when an 'f' argument is given" do
|
142
152
|
FileUtils.touch "#{tmp}/FILE"
|
143
|
-
make_failures_file 'a
|
153
|
+
make_failures_file 'a'
|
144
154
|
app = Respec::App.new("#{tmp}/FILE", 'f')
|
145
|
-
expect(app.generated_args).to eq ['a
|
155
|
+
expect(app.generated_args).to eq ['-e', 'a', "#{tmp}/FILE"]
|
146
156
|
end
|
147
157
|
|
148
158
|
it "should explicitly add the spec directory if no files are given or errors to rerun" do
|
@@ -156,16 +166,16 @@ describe Respec::App do
|
|
156
166
|
expect(app.generated_args).to eq ["#{tmp}/FILE"]
|
157
167
|
end
|
158
168
|
|
159
|
-
it "should
|
160
|
-
make_failures_file 'a
|
169
|
+
it "should add the spec directory if a numeric argument is given without explicit files" do
|
170
|
+
make_failures_file 'a'
|
161
171
|
app = Respec::App.new('1')
|
162
|
-
expect(app.generated_args).to eq [
|
172
|
+
expect(app.generated_args).to eq ['-e', 'a', 'spec']
|
163
173
|
end
|
164
174
|
|
165
|
-
it "should
|
166
|
-
make_failures_file 'a
|
175
|
+
it "should add the spec directory when an 'f' argument is given without explicit files" do
|
176
|
+
make_failures_file 'a'
|
167
177
|
app = Respec::App.new('f')
|
168
|
-
expect(app.generated_args).to eq [
|
178
|
+
expect(app.generated_args).to eq ['-e', 'a', 'spec']
|
169
179
|
end
|
170
180
|
end
|
171
181
|
|
@@ -1,29 +1,57 @@
|
|
1
|
-
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
require 'rspec/version'
|
2
3
|
|
3
4
|
describe Respec::Formatter do
|
4
|
-
|
5
|
-
|
5
|
+
use_temporary_directory TMP
|
6
|
+
let(:formatter) { Respec::Formatter.new }
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
to eq './spec/models/user_spec.rb:47'
|
11
|
-
end
|
8
|
+
def failures
|
9
|
+
File.read("#{TMP}/failures.txt")
|
10
|
+
end
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
describe Respec::Formatter do
|
13
|
+
if (RSpec::Core::Version::STRING.scan(/\d+/).map { |s| s.to_i } <=> [3]) < 0
|
14
|
+
|
15
|
+
before { Respec.stub(failures_path: "#{TMP}/failures.txt") }
|
16
|
+
|
17
|
+
def make_failing_example(description)
|
18
|
+
metadata = {full_description: description}
|
19
|
+
mock(RSpec::Core::Example.allocate, metadata: metadata)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "records failed example names and dumps them at the end" do
|
23
|
+
failed_examples = [make_failing_example('example 1'), make_failing_example('example 2')]
|
24
|
+
formatter.instance_variable_set(:@failed_examples, failed_examples)
|
25
|
+
formatter.start_dump
|
26
|
+
expect(failures).to eq "example 1\nexample 2\n"
|
27
|
+
end
|
28
|
+
|
29
|
+
it "empties the failure file if no examples failed" do
|
30
|
+
formatter.start_dump
|
31
|
+
expect(failures).to eq ''
|
32
|
+
end
|
33
|
+
|
34
|
+
else
|
35
|
+
|
36
|
+
before { allow(Respec).to receive(:failures_path).and_return("#{TMP}/failures.txt") }
|
37
|
+
|
38
|
+
def make_failure_notification(description)
|
39
|
+
example = double(RSpec::Core::Example.allocate, full_description: description)
|
40
|
+
RSpec::Core::Notifications::FailedExampleNotification.new(example)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "records failed example names and dumps them at the end" do
|
44
|
+
formatter.example_failed(make_failure_notification('example 1'))
|
45
|
+
formatter.example_failed(make_failure_notification('example 2'))
|
46
|
+
formatter.start_dump(RSpec::Core::Notifications::NullNotification)
|
47
|
+
expect(failures).to eq "example 1\nexample 2\n"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "empties the failure file if no examples failed" do
|
51
|
+
formatter.start_dump(RSpec::Core::Notifications::NullNotification)
|
52
|
+
expect(failures).to eq ''
|
53
|
+
end
|
21
54
|
|
22
|
-
it "should warn when no spec file is found, and return the root location" do
|
23
|
-
Respec::Formatter.should_receive(:warn)
|
24
|
-
metadata = {:location => './spec/models/user.rb:47'}
|
25
|
-
expect(described_class.extract_spec_location(metadata)).
|
26
|
-
to eq './spec/models/user.rb:47'
|
27
55
|
end
|
28
56
|
end
|
29
57
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: respec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- George Ogata
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,42 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
19
|
+
version: '2.11'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: ritual
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0.4'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0.4'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: temporaries
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.4'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.4'
|
26
|
+
version: '2.11'
|
55
27
|
description:
|
56
28
|
email:
|
57
29
|
- george.ogata@gmail.com
|
@@ -97,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
69
|
version: '0'
|
98
70
|
requirements: []
|
99
71
|
rubyforge_project:
|
100
|
-
rubygems_version: 2.
|
72
|
+
rubygems_version: 2.4.5
|
101
73
|
signing_key:
|
102
74
|
specification_version: 4
|
103
75
|
summary: Rerun failing RSpec examples easily.
|