rspec-rerun 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/.travis.yml +5 -1
- data/CHANGELOG.md +8 -0
- data/Gemfile +10 -0
- data/README.md +10 -3
- data/lib/rspec-rerun.rb +1 -2
- data/lib/rspec-rerun/formatters/failures_formatter.rb +16 -0
- data/lib/rspec-rerun/rspec.rb +8 -0
- data/lib/rspec-rerun/version.rb +1 -1
- data/lib/tasks/rspec.rake +66 -23
- data/rspec-rerun.gemspec +2 -1
- data/spec/rspec-rerun/tasks/rspec_task_spec.rb +30 -0
- data/spec/spec_helper.rb +8 -0
- metadata +6 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d388b330116565e3727f28033b49af020d54bf5
|
4
|
+
data.tar.gz: 0459c3704ff72c816994e5b033fcd759c039d43b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b82514b1a26c9c18d10e7012a75b9f21c9b00c10110b19b9b9d18c3c22f38f79e4096bb6c4a683f33c8823b1d722369ceee24785014258448e60e8b3a6bc2e9
|
7
|
+
data.tar.gz: 6e22e346348305c388dd4b886c9afaed3c1f7874ee5199a2a2910d40781bb4c2f86f6e57bf34ed1f1fbd1c895e27567c31ae700f5d6c0724cf3ee117399b2ae6
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
0.3.0 (3/10/2015)
|
2
|
+
-----------------
|
3
|
+
|
4
|
+
* [#22](https://github.com/dblock/rspec-rerun/pull/22): Added support for RSpec 3 - [@nightscape](https://github.com/nightscape), [@dblock](https://github.com/dblock).
|
5
|
+
* [#23](https://github.com/dblock/rspec-rerun/issues/23): Fixed dual formatter error - [@KurtPreston](https://github.com/KurtPreston).
|
6
|
+
* [#26](https://github.com/dblock/rspec-rerun/pull/26): Allow disabling RSpec verbose output - [@KurtPreston](https://github.com/KurtPreston).
|
7
|
+
* [#26](https://github.com/dblock/rspec-rerun/pull/26): Added support for running on a specific tag - [@KurtPreston](https://github.com/KurtPreston).
|
8
|
+
|
1
9
|
0.2.0
|
2
10
|
-----
|
3
11
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|

|
2
2
|
|
3
|
-
[](http://badge.fury.io/rb/rspec-rerun)
|
4
|
+
[](https://travis-ci.org/dblock/rspec-rerun)
|
5
|
+
[](https://gemnasium.com/dblock/rspec-rerun)
|
6
|
+
[](https://codeclimate.com/github/dblock/rspec-rerun)
|
4
7
|
|
5
8
|
The **rspec-rerun** gem is a drop-in solution to retry (rerun) failed RSpec examples. It may be useful, for example, with finicky Capybara tests. The strategy to rerun failed specs is to output a file called `rspec.failures` that contains a list of failed examples and to feed that file back to RSpec via `-e`.
|
6
9
|
|
@@ -8,10 +11,12 @@ Usage
|
|
8
11
|
-----
|
9
12
|
|
10
13
|
Add `rspec-rerun` to `Gemfile` in the `:development` and `:test` groups.
|
14
|
+
If you're using RSpec 3, also add `rspec-legacy_formatters`.
|
11
15
|
|
12
16
|
``` ruby
|
13
17
|
group :development, :test do
|
14
|
-
gem
|
18
|
+
gem 'rspec-rerun'
|
19
|
+
gem 'rspec-legacy_formatters'
|
15
20
|
end
|
16
21
|
```
|
17
22
|
|
@@ -19,7 +24,7 @@ Require `rspec-rerun` and change the default task in `Rakefile`.
|
|
19
24
|
|
20
25
|
``` ruby
|
21
26
|
require 'rspec-rerun'
|
22
|
-
task :default =>
|
27
|
+
task :default => 'rspec-rerun:spec'
|
23
28
|
```
|
24
29
|
|
25
30
|
Run `rake` or `rake rspec-rerun:spec`. Failed examples will be rerun automatically.
|
@@ -35,6 +40,8 @@ You can set the following global environment variables:
|
|
35
40
|
|
36
41
|
* `RSPEC_RERUN_RETRY_COUNT`: number of retries, defaults to the value of `retry_count` or 1
|
37
42
|
* `RSPEC_RERUN_PATTERN`: spec file pattern, defaults to the value defined by `RSpec::Core::RakeTask`
|
43
|
+
* `RSPEC_RERUN_TAG`: only execute the tag specified
|
44
|
+
* `RSPEC_RERUN_VERBOSE`: if 'false', don't show the rspec command invoked by Rake
|
38
45
|
|
39
46
|
Git Ignore
|
40
47
|
----------
|
data/lib/rspec-rerun.rb
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
require 'rspec/core'
|
2
|
+
require 'rspec-rerun/rspec'
|
3
|
+
|
4
|
+
if RSpec::Rerun.rspec3?
|
5
|
+
begin
|
6
|
+
require 'rspec/legacy_formatters'
|
7
|
+
rescue LoadError => e
|
8
|
+
STDERR.puts '*' * 80
|
9
|
+
STDERR.puts e.message
|
10
|
+
STDERR.puts 'Please add rspec-legacy_formatters to your Gemfile.'
|
11
|
+
STDERR.puts 'See https://github.com/dblock/rspec-rerun/pull/22 for details.'
|
12
|
+
STDERR.puts '*' * 80
|
13
|
+
raise
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
1
17
|
require 'rspec/core/formatters/base_formatter'
|
2
18
|
|
3
19
|
module RSpec
|
data/lib/rspec-rerun/version.rb
CHANGED
data/lib/tasks/rspec.rake
CHANGED
@@ -1,47 +1,38 @@
|
|
1
1
|
require 'rspec/core/rake_task'
|
2
2
|
|
3
3
|
desc "Run RSpec examples."
|
4
|
-
RSpec::Core::RakeTask.new("rspec-rerun:run") do |t|
|
5
|
-
|
6
|
-
dot_rspec = (dot_rspec ? File.read(dot_rspec).split(/\n+/).map { |l| l.shellsplit } : [])
|
7
|
-
dot_rspec.concat ["--format", "progress"] unless dot_rspec.include?("--format")
|
8
|
-
|
9
|
-
t.pattern = ENV['RSPEC_RERUN_PATTERN'] if ENV['RSPEC_RERUN_PATTERN']
|
4
|
+
RSpec::Core::RakeTask.new("rspec-rerun:run") do |t, args|
|
5
|
+
t.pattern = args[:pattern] if args[:pattern]
|
10
6
|
t.fail_on_error = false
|
11
|
-
t.
|
12
|
-
|
13
|
-
"--format", "RSpec::Rerun::Formatters::FailuresFormatter",
|
14
|
-
*dot_rspec
|
15
|
-
].flatten
|
7
|
+
t.verbose = false if args[:verbose] == false
|
8
|
+
t.rspec_opts = rspec_opts(args)
|
16
9
|
end
|
17
10
|
|
18
11
|
desc "Re-run failed RSpec examples."
|
19
|
-
RSpec::Core::RakeTask.new("rspec-rerun:rerun") do |t|
|
12
|
+
RSpec::Core::RakeTask.new("rspec-rerun:rerun") do |t, args|
|
20
13
|
failing_specs = File.read(RSpec::Rerun::Formatters::FailuresFormatter::FILENAME).split
|
21
14
|
|
22
|
-
t.pattern =
|
15
|
+
t.pattern = args[:pattern] if args[:pattern]
|
23
16
|
t.fail_on_error = false
|
24
|
-
t.
|
25
|
-
|
26
|
-
"--require", File.join(File.dirname(__FILE__), '../rspec-rerun'),
|
27
|
-
"--format", "RSpec::Rerun::Formatters::FailuresFormatter",
|
28
|
-
File.exist?(".rspec") ? File.read(".rspec").split(/\n+/).map { |l| l.shellsplit } : nil
|
29
|
-
].flatten
|
17
|
+
t.verbose = false if args[:verbose] == false
|
18
|
+
t.rspec_opts = rspec_opts(args, failing_specs.join(' '))
|
30
19
|
end
|
31
20
|
|
32
21
|
desc "Run RSpec code examples."
|
33
|
-
task "rspec-rerun:spec"
|
34
|
-
|
22
|
+
task "rspec-rerun:spec" do |t, args|
|
23
|
+
parsed_args = parse_args(args)
|
24
|
+
retry_count = (parsed_args[:retry_count] || 1).to_i
|
25
|
+
|
35
26
|
fail "retry count must be >= 1" if retry_count <= 0
|
36
27
|
FileUtils.rm_f RSpec::Rerun::Formatters::FailuresFormatter::FILENAME
|
37
|
-
Rake::Task["rspec-rerun:run"].execute
|
28
|
+
Rake::Task["rspec-rerun:run"].execute(parsed_args)
|
38
29
|
while !$?.success? && retry_count > 0
|
39
30
|
retry_count -= 1
|
40
31
|
failed_count = File.read(RSpec::Rerun::Formatters::FailuresFormatter::FILENAME).split(/\n+/).count
|
41
32
|
msg = "[#{Time.now}] Failed, re-running #{failed_count} failure#{failed_count == 1 ? '' : 's'}"
|
42
33
|
msg += ", #{retry_count} #{retry_count == 1 ? 'retry' : 'retries'} left" if retry_count > 0
|
43
34
|
$stderr.puts "#{msg} ..."
|
44
|
-
Rake::Task["rspec-rerun:rerun"].execute
|
35
|
+
Rake::Task["rspec-rerun:rerun"].execute(parsed_args)
|
45
36
|
end
|
46
37
|
if !$?.success?
|
47
38
|
failed_count = File.read(RSpec::Rerun::Formatters::FailuresFormatter::FILENAME).split(/\n+/).count
|
@@ -49,3 +40,55 @@ task "rspec-rerun:spec", :retry_count do |t, args|
|
|
49
40
|
fail "#{failed_count} failure#{failed_count == 1 ? '' : 's'}"
|
50
41
|
end
|
51
42
|
end
|
43
|
+
|
44
|
+
def dot_rspec_params
|
45
|
+
dot_rspec_file = [".rspec", File.expand_path("~/.rspec")].detect { |f| File.exist?(f) }
|
46
|
+
dot_rspec = if dot_rspec_file
|
47
|
+
file_contents = File.read(dot_rspec_file)
|
48
|
+
file_contents.split(/\n+/).map { |l| l.shellsplit }.flatten
|
49
|
+
else
|
50
|
+
[]
|
51
|
+
end
|
52
|
+
dot_rspec.concat ["--format", "progress"] unless dot_rspec.include?("--format")
|
53
|
+
dot_rspec
|
54
|
+
end
|
55
|
+
|
56
|
+
def rspec_opts(args, spec_files = nil)
|
57
|
+
opts = [
|
58
|
+
spec_files,
|
59
|
+
"--require", File.join(File.dirname(__FILE__), '../rspec-rerun'),
|
60
|
+
"--format", "RSpec::Rerun::Formatters::FailuresFormatter",
|
61
|
+
*dot_rspec_params
|
62
|
+
].compact.flatten
|
63
|
+
if args[:tag]
|
64
|
+
opts << "--tag"
|
65
|
+
opts << args[:tag]
|
66
|
+
end
|
67
|
+
opts
|
68
|
+
end
|
69
|
+
|
70
|
+
def parse_args(args)
|
71
|
+
opts = args.extras
|
72
|
+
|
73
|
+
# Error on multiple arguments
|
74
|
+
if opts.size > 1
|
75
|
+
raise ArgumentError "rspec-rerun can take an integer (retry_count) or options hash"
|
76
|
+
else
|
77
|
+
opts = opts[0]
|
78
|
+
end
|
79
|
+
|
80
|
+
# Handle if opts is just a retry_count integer
|
81
|
+
opts = if opts.is_a? Hash
|
82
|
+
opts
|
83
|
+
else
|
84
|
+
{retry_count: opts}
|
85
|
+
end
|
86
|
+
|
87
|
+
# Parse environment variables
|
88
|
+
opts[:pattern] ||= ENV['RSPEC_RERUN_PATTERN'] if ENV['RSPEC_RERUN_PATTERN']
|
89
|
+
opts[:tag] ||= ENV['RSPEC_RERUN_TAG'] if ENV['RSPEC_RERUN_PATTERN']
|
90
|
+
opts[:retry_count] ||= ENV['RSPEC_RERUN_RETRY_COUNT'] if ENV['RSPEC_RERUN_RETRY_COUNT']
|
91
|
+
opts[:verbose] = (ENV['RSPEC_RERUN_VERBOSE'] != 'false') if opts[:verbose].nil?
|
92
|
+
|
93
|
+
opts
|
94
|
+
end
|
data/rspec-rerun.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require './lib/rspec-rerun/version'
|
2
|
+
require './lib/rspec-rerun/rspec'
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
5
|
s.name = 'rspec-rerun'
|
@@ -11,7 +12,7 @@ Gem::Specification.new do |s|
|
|
11
12
|
s.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
12
13
|
s.test_files = s.files.grep(/^(spec)\//)
|
13
14
|
|
14
|
-
s.add_runtime_dependency 'rspec'
|
15
|
+
s.add_runtime_dependency 'rspec'
|
15
16
|
|
16
17
|
s.add_development_dependency 'rake'
|
17
18
|
s.add_development_dependency 'bundler'
|
@@ -53,6 +53,30 @@ describe 'RakeTask' do
|
|
53
53
|
end.to raise_error RuntimeError, /failed with exit code 1/
|
54
54
|
end
|
55
55
|
|
56
|
+
context 'verbose output' do
|
57
|
+
it 'displays the rspec command by default' do
|
58
|
+
`cd #{root} && RSPEC_RERUN_MARKER=#{@filename} RSPEC_RERUN_PATTERN=spec-runs/succeeds_spec.rb rake rspec-rerun:spec`.should include('rspec')
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'when the RSPEC_RERUN_VERBOSE flag is set to false' do
|
62
|
+
it "doesn't display the rspec command" do
|
63
|
+
`cd #{root} && RSPEC_RERUN_VERBOSE=false RSPEC_RERUN_MARKER=#{@filename} RSPEC_RERUN_PATTERN=spec-runs/succeeds_spec.rb rake rspec-rerun:spec`.should_not include('rspec')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'tag execution' do
|
69
|
+
it 'does not scope by tag by default' do
|
70
|
+
`cd #{root} && RSPEC_RERUN_MARKER=#{@filename} RSPEC_RERUN_PATTERN=spec-runs/succeeds_spec.rb rake rspec-rerun:spec`.should_not include('--tag')
|
71
|
+
end
|
72
|
+
|
73
|
+
context 'when the RSPEC_RERUN_TAG flag is set' do
|
74
|
+
it 'scopes rspec to the tag' do
|
75
|
+
`cd #{root} && RSPEC_RERUN_TAG=test RSPEC_RERUN_MARKER=#{@filename} RSPEC_RERUN_PATTERN=spec-runs/succeeds_spec.rb rake rspec-rerun:spec`.should include('--tag test')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
56
80
|
context 'preserving .rspec' do
|
57
81
|
let(:dot_rspec) { "#{root}/.rspec" }
|
58
82
|
let(:home_rspec) { File.expand_path('~/.rspec') }
|
@@ -77,6 +101,12 @@ describe 'RakeTask' do
|
|
77
101
|
run.should include '--format progress'
|
78
102
|
end
|
79
103
|
|
104
|
+
it 'only uses the formatter specified by the .rspec file' do
|
105
|
+
File.write(dot_rspec, '--format documentation')
|
106
|
+
run.should include '--format documentation'
|
107
|
+
run.should_not include '--format progress'
|
108
|
+
end
|
109
|
+
|
80
110
|
it 'also uses given formatter' do
|
81
111
|
File.write(dot_rspec, "--color\n--format documentation")
|
82
112
|
run.should include '--format documentation'
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-rerun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Doubrovkine
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
- - <
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '3'
|
19
|
+
version: '0'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
- - <
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '3'
|
26
|
+
version: '0'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: rake
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,6 +83,7 @@ files:
|
|
89
83
|
- Rakefile
|
90
84
|
- lib/rspec-rerun.rb
|
91
85
|
- lib/rspec-rerun/formatters/failures_formatter.rb
|
86
|
+
- lib/rspec-rerun/rspec.rb
|
92
87
|
- lib/rspec-rerun/version.rb
|
93
88
|
- lib/tasks/rspec.rake
|
94
89
|
- rspec-rerun.gemspec
|
@@ -122,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
117
|
version: '0'
|
123
118
|
requirements: []
|
124
119
|
rubyforge_project:
|
125
|
-
rubygems_version: 2.
|
120
|
+
rubygems_version: 2.4.5
|
126
121
|
signing_key:
|
127
122
|
specification_version: 4
|
128
123
|
summary: Re-run failed RSpec tests.
|