rspec-instafail 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,25 +3,7 @@ require 'spec/runner/formatter/progress_bar_formatter'
3
3
  module RSpec
4
4
  class Instafail < Spec::Runner::Formatter::ProgressBarFormatter
5
5
  def example_failed(example, counter, failure)
6
- short_padding = ' '
7
- padding = ' '
8
-
9
- output.puts
10
- output.puts red("#{short_padding}#{counter}) #{example_group.description} #{example.description}")
11
- output.puts "#{padding}#{red(failure.exception)}"
12
-
13
- [*format_backtrace(failure.exception.backtrace)].each do |backtrace_info|
14
- output.puts insta_gray("#{padding}# #{backtrace_info.strip}")
15
- end
16
-
17
- output.flush
18
- end
19
-
20
- private
21
-
22
- # there is a gray() that returns nil, so we use our own...
23
- def insta_gray(text)
24
- colour(text, "\e[90m")
6
+ dump_failure(counter, failure)
25
7
  end
26
8
  end
27
9
  end
@@ -3,26 +3,13 @@ require 'rspec/core/formatters/progress_formatter'
3
3
  module RSpec
4
4
  class Instafail < RSpec::Core::Formatters::ProgressFormatter
5
5
  def example_failed(example)
6
- @counter ||= 0
7
- @counter += 1
6
+ # do what BaseFormatter#example_failed would do
7
+ @failed_examples << example
8
8
 
9
- result = example.metadata[:execution_result]
10
-
11
- exception = result[:exception_encountered] || result[:exception] # rspec 2.0 || rspec 2.2
12
- short_padding = ' '
13
- padding = ' '
14
- output.puts
15
- output.puts "#{short_padding}#{@counter}) #{example.full_description}"
16
- output.puts "#{padding}#{red("Failure/Error:")} #{red(read_failed_line(exception, example).strip)}"
17
- output.puts "#{padding}#{red(exception)}"
18
- if exception.respond_to?(:original_exception)
19
- output.puts "#{padding}#{red(exception.original_exception)}"
20
- end
21
- format_backtrace(exception.backtrace, example).each do |backtrace_info|
22
- color = defined?(cyan) ? :cyan : :grey # cyan was added in rspec 2.6
23
- output.puts send(color, "#{padding}# #{backtrace_info}")
24
- end
25
- output.flush
9
+ # do what BaseTextFormatter#dump_failures would do
10
+ index = failed_examples.size - 1
11
+ dump_pending_example_fixed(example, index) || dump_failure(example, index)
12
+ dump_backtrace(example)
26
13
  end
27
14
  end
28
15
  end
@@ -1,2 +1,2 @@
1
1
  require 'rspec/instafail'
2
- RSpec::Instafail::VERSION = '0.1.9'
2
+ RSpec::Instafail::VERSION = '0.2.0'
@@ -1,12 +1,14 @@
1
1
  module RSpec
2
- # when installed as plugin in jruby, lib is not in load-path
2
+ # Rails 3: when installed as plugin, lib is not in load-path when running tests
3
3
  # https://github.com/grosser/rspec-instafail/pull/3
4
- lib = File.dirname(File.dirname(__FILE__))
4
+ lib = File.expand_path(File.dirname(File.dirname(__FILE__)))
5
+ $LOAD_PATH << lib unless $LOAD_PATH.include?(lib)
6
+
7
+ require 'rspec/instafail/version'
8
+
5
9
  begin
6
- require "#{lib}/rspec/instafail/rspec_2"
10
+ require "rspec/instafail/rspec_2"
7
11
  rescue LoadError # try rspec 1
8
- require "#{lib}/rspec/instafail/rspec_1"
12
+ require "rspec/instafail/rspec_1"
9
13
  end
10
-
11
- require 'rspec/instafail/version'
12
14
  end
@@ -1,101 +1,45 @@
1
1
  describe 'RSpec::Instafail' do
2
- it "works correctly with RSpec 1.x" do
3
- output = `cd spec/rspec_1 && bundle exec spec a_test.rb --format RSpec::Instafail`
4
- expected_output = <<EXP
5
- 1\\) x a
6
- expected: 2,
7
- got: 1 \\(using ==\\)
8
- # (\\.\\/)?a_test\\.rb:5:(in `block \\(2 levels\\) in <top \\(required\\)>')?
9
- \\.\\.\\*\\.
2
+ context "RSpec 1.x" do
3
+ before :all do
4
+ @rspec_result = `cd spec/rspec_1 && bundle exec spec a_test.rb --format RSpec::Instafail`
5
+ end
10
6
 
11
- Pending:
7
+ before do
8
+ @output = @rspec_result.dup
9
+ end
12
10
 
13
- x d \\(TODO\\)
14
- (\\.\\/)?a_test\\.rb:14(\:in `block in <top \\(required\\)>')?
11
+ it "outputs failures at start of output" do
12
+ @output.should =~ /^\s*1\)\s*'x fails logically'/m
13
+ end
15
14
 
16
- 1\\)
17
- 'x a' FAILED
18
- expected: 2,
19
- got: 1 \\(using ==\\)
20
- (\\./)?a_test\\.rb:5:(in `block \\(2 levels\\) in <top \\(required\\)>')?
21
- EXP
15
+ it 'outputs errors in middle of output' do
16
+ @output.should =~ /\.\.\*\s*2\)\s*RuntimeError in 'x raises a simple error'/m
17
+ end
22
18
 
23
- output.should =~ Regexp.new(expected_output, 'x')
19
+ it 'outputs the the ending block' do
20
+ @output.should =~ /Finished in \d\.\d+ seconds\s*7 examples, 3 failures, 1 pending/
21
+ end
24
22
  end
25
23
 
26
24
  context 'Rspec 2.x' do
27
- before(:all)do
25
+ before :all do
28
26
  @rspec_result = `cd spec/rspec_2 && bundle exec rspec a_test.rb --require ../../lib/rspec/instafail --format RSpec::Instafail --no-color`
29
27
  end
28
+
30
29
  before do
31
30
  @output = @rspec_result.dup
32
31
  end
33
32
 
34
- it "outputs logical failures" do
35
- expected = <<EXP
36
- 1\\) x fails logically
37
- Failure\\/Error: 1\\.should == 2
38
- expected: 2,
39
- got: 1 \\(using ==\\)
40
- EXP
41
- @output.should =~ Regexp.new(expected, 'x')
42
-
43
- @output.should include('/a_test.rb:5')
44
- end
45
-
46
- it 'outputs a simple error' do
47
- expected = <<EXP
48
- \\.\\.\\*
49
- 2\\) x raises a simple error
50
- Failure\\/Error: raise 'shallow failure'
51
- shallow failure
52
- EXP
53
- @output.should =~ Regexp.new(expected, 'x')
54
- end
55
-
56
- it 'outputs an error which responds to original_exception' do
57
- expected = <<EXP
58
- 3\\) x raises a hidden error
59
- Failure\\/Error: raise error
60
- There is an error in this error\\.
61
- There is no error in this error\\.
62
- EXP
63
- @output.should =~ Regexp.new(expected, 'x')
33
+ it "outputs failures at start of output" do
34
+ @output.should =~ /^\s+1\) x fails logically/m
64
35
  end
65
- it 'outputs the remaining passing specs and the ending block' do
66
- expected = <<EXP
67
- \\.
68
-
69
- Pending:
70
- x pends
71
- # No reason given
72
- # \\./a_test\\.rb:14
73
36
 
74
- Finished in \\d\\.\\d+ seconds
75
- 7 examples, 3 failures, 1 pending
76
- EXP
77
- @output.should =~ Regexp.new(expected, 'x')
37
+ it 'outputs errors in middle of output' do
38
+ @output.should =~ /\.\.\*\s*2\) x raises a simple error/m
78
39
  end
79
40
 
80
- it "works correctly with RSpec 2.x" do
81
- pending 'the backtrace for the error is always absolute on my machine'
82
- expected_output = <<EXP
83
- 1\\) x a
84
- Failure\\/Error: 1\\.should == 2
85
- expected: 2,
86
- got: 1 \\(using ==\\)
87
- # \\./a_test\\.rb:5
88
- \\.\\.\\*\\.
89
-
90
- Pending:
91
- x d
92
- # No reason given
93
- # \\./a_test\\.rb:14
94
-
95
- Finished in \\d\\.\\d+ seconds
96
- 7 examples, 3 failures, 1 pending
97
- EXP
98
- @output.should =~ Regexp.new(expected_output, 'x')
41
+ it 'outputs the the ending block' do
42
+ @output.should =~ /Finished in \d\.\d+ seconds\s*7 examples, 3 failures, 1 pending/
99
43
  end
100
44
  end
101
45
  end
@@ -1,7 +1,7 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'rspec', 'instafail'))
2
2
 
3
3
  describe 'x' do
4
- it 'a' do
4
+ it 'fails logically' do
5
5
  1.should == 2
6
6
  end
7
7
 
@@ -11,11 +11,25 @@ describe 'x' do
11
11
  it 'c' do
12
12
  end
13
13
 
14
- it 'd' do
14
+ it 'pends' do
15
15
  pending
16
16
  raise
17
17
  end
18
18
 
19
+ it 'raises a simple error' do
20
+ raise 'shallow failure'
21
+ end
22
+
23
+ it 'raises a hidden error' do
24
+ error = ExceptionWrappingException.new('There is an error in this error.')
25
+ error.original_exception = RuntimeError.new('There is no error in this error.')
26
+ raise error
27
+ end
28
+
19
29
  it 'e' do
20
30
  end
21
- end
31
+ end
32
+
33
+ class ExceptionWrappingException < RuntimeError
34
+ attr_accessor :original_exception
35
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-instafail
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 9
10
- version: 0.1.9
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Grosser
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-27 00:00:00 -07:00
18
+ date: 2011-11-21 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies: []
21
21