rspec-rerun 0.1.2 → 0.1.3
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.
- data/LICENSE.md +1 -1
- data/README.md +18 -3
- data/lib/rspec-rerun/version.rb +1 -1
- data/lib/tasks/rspec.rake +20 -9
- metadata +3 -3
data/LICENSE.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2012,
|
3
|
+
Copyright (c) 2012-2013, Artsy Inc., Daniel Doubrovkine and Contributors
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
6
|
a copy of this software and associated documentation files (the
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](http://travis-ci.org/dblock/rspec-rerun)
|
4
4
|
|
5
|
-
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`.
|
5
|
+
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
6
|
|
7
7
|
Usage
|
8
8
|
-----
|
@@ -24,7 +24,22 @@ task :default => "rspec-rerun:spec"
|
|
24
24
|
|
25
25
|
Run `rake` or `rake rspec-rerun:spec`. Failed examples will be rerun automatically.
|
26
26
|
|
27
|
-
|
27
|
+
Parameters
|
28
|
+
----------
|
29
|
+
|
30
|
+
The `rspec-rerun:spec` task accepts the following parameters:
|
31
|
+
|
32
|
+
* `retry_count`: number of retries, defaults to 1, also available by setting
|
33
|
+
|
34
|
+
You can set the following global environment variables:
|
35
|
+
|
36
|
+
* `RSPEC_RERUN_RETRY_COUNT`: number of retries, defaults to the value of `retry_count` or 1
|
37
|
+
* `RSPEC_RERUN_PATTERN`: spec file pattern, defaults to the value defined by `RSpec::Core::RakeTask`
|
38
|
+
|
39
|
+
Git Ignore
|
40
|
+
----------
|
41
|
+
|
42
|
+
A list of failed examples is stored in a file called `rspec.failures`. It might also be a good idea that you add `rspec.failures` to `.gitignore`.
|
28
43
|
|
29
44
|
History
|
30
45
|
-------
|
@@ -41,5 +56,5 @@ Copyright and License
|
|
41
56
|
|
42
57
|
MIT License, see [LICENSE](https://github.com/dblock/rspec-rerun/blob/master/LICENSE.md) for details.
|
43
58
|
|
44
|
-
(c) 2012 [
|
59
|
+
(c) 2012-2013 [Artsy Inc.](http://artsy.github.com), [Daniel Doubrovkine](https://github.com/dblock) and [Contributors](https://github.com/dblock/rspec-rerun/blob/master/CHANGELOG.md)
|
45
60
|
|
data/lib/rspec-rerun/version.rb
CHANGED
data/lib/tasks/rspec.rake
CHANGED
@@ -2,7 +2,8 @@ require 'rspec/core/rake_task'
|
|
2
2
|
|
3
3
|
desc "Run RSpec examples."
|
4
4
|
RSpec::Core::RakeTask.new("rspec-rerun:run") do |t|
|
5
|
-
t.pattern =
|
5
|
+
t.pattern = ENV['RSPEC_RERUN_PATTERN'] if ENV['RSPEC_RERUN_PATTERN']
|
6
|
+
t.fail_on_error = false
|
6
7
|
t.rspec_opts = [
|
7
8
|
"--require", File.join(File.dirname(__FILE__), '../rspec-rerun'),
|
8
9
|
"--format", "RSpec::Rerun::Formatters::FailuresFormatter",
|
@@ -12,23 +13,33 @@ end
|
|
12
13
|
|
13
14
|
desc "Re-run failed RSpec examples."
|
14
15
|
RSpec::Core::RakeTask.new("rspec-rerun:rerun") do |t|
|
15
|
-
t.pattern =
|
16
|
+
t.pattern = ENV['RSPEC_RERUN_PATTERN'] if ENV['RSPEC_RERUN_PATTERN']
|
17
|
+
t.fail_on_error = false
|
16
18
|
t.rspec_opts = [
|
17
19
|
"-O", RSpec::Rerun::Formatters::FailuresFormatter::FILENAME,
|
20
|
+
"--require", File.join(File.dirname(__FILE__), '../rspec-rerun'),
|
21
|
+
"--format", "RSpec::Rerun::Formatters::FailuresFormatter",
|
18
22
|
File.exist?(".rspec") ? File.read(".rspec").split(/\n+/).map { |l| l.shellsplit } : nil
|
19
23
|
].flatten
|
20
24
|
end
|
21
25
|
|
22
26
|
desc "Run RSpec code examples."
|
23
|
-
task "rspec-rerun:spec" do
|
27
|
+
task "rspec-rerun:spec", :retry_count do |t, args|
|
28
|
+
retry_count = (args[:retry_count] || ENV['RSPEC_RERUN_RETRY_COUNT'] || 1).to_i
|
29
|
+
fail "retry count must be >= 1" if retry_count <= 0
|
24
30
|
FileUtils.rm_f RSpec::Rerun::Formatters::FailuresFormatter::FILENAME
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
rescue
|
31
|
+
Rake::Task["rspec-rerun:run"].execute
|
32
|
+
while !$?.success? && retry_count > 0
|
33
|
+
retry_count -= 1
|
29
34
|
failed_count = File.read(RSpec::Rerun::Formatters::FailuresFormatter::FILENAME).split(/\n+/).count
|
30
|
-
|
31
|
-
|
35
|
+
msg = "[#{Time.now}] Failed, re-running #{failed_count} failure#{failed_count == 1 ? '' : 's'}"
|
36
|
+
msg += ", #{retry_count} #{retry_count == 1 ? 'retry' : 'retries'} left" if retry_count > 0
|
37
|
+
$stderr.puts "#{msg} ..."
|
32
38
|
Rake::Task["rspec-rerun:rerun"].execute
|
33
39
|
end
|
40
|
+
if !$?.success?
|
41
|
+
failed_count = File.read(RSpec::Rerun::Formatters::FailuresFormatter::FILENAME).split(/\n+/).count
|
42
|
+
$stderr.puts "[#{Time.now}] #{failed_count} failure#{failed_count == 1 ? '' : 's'}."
|
43
|
+
fail "#{failed_count} failure#{failed_count == 1 ? '' : 's'}"
|
44
|
+
end
|
34
45
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-rerun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -104,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
104
|
version: '0'
|
105
105
|
segments:
|
106
106
|
- 0
|
107
|
-
hash:
|
107
|
+
hash: 1999651866923544881
|
108
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
109
|
none: false
|
110
110
|
requirements:
|