cucumber-instafail 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 259fb3c2fd9134e5e7da9ee7206507bc77f609bd
4
- data.tar.gz: ae4714946c607e3aae1017209b121c67ec546cef
3
+ metadata.gz: 98e51363e22c555ab09983e4548731bbaf0b2b10
4
+ data.tar.gz: 3268735dffbd14780dd901b18fa0b0322a2503af
5
5
  SHA512:
6
- metadata.gz: aa58fb9a902d1d497229f43e2b5ce2a434d47a530410a8fa1379f7cc048167aa2e32d48253943c84f521660dea69de1f1f2a42efbfd9412cad87f3061febeb4e
7
- data.tar.gz: 2b182348c2c55651db716640fe85f6bf0a4036dc3ae41e3fe9006617169a77b79fb373001b173fac8093aa195f393354e416ec41864f0911cb03defa43e49d5d
6
+ metadata.gz: d159f096b3e7565baeb9f02e55795f9fb5af195201cf3e7a969fb4d412f5bb29719c14d0e37e5c5c1acf56937848b975d941974e125737e670ef5472ae72ce32
7
+ data.tar.gz: c5c4ccfcbc4ba16c904807aa66c9c811fc7f88050852fad5557d904d3b700b558233411a2da1a21281e1d150469174504f8207c20d4990e3876d932407f48311
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'cucumber/instafail/version'
4
+ require 'cucumber/instafail'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'cucumber-instafail'
@@ -1,2 +1,17 @@
1
- require 'cucumber/instafail/formatter/progress-instafail'
1
+ require 'cucumber/formatter/progress'
2
2
  require 'cucumber/instafail/version'
3
+
4
+ module Cucumber
5
+ # The formatter used for <tt>--format Cucumber::Instafail</tt>
6
+ class Instafail < Cucumber::Formatter::Progress
7
+ def progress(status)
8
+ char = CHARS[status]
9
+ @io.print(format_string(char, status))
10
+ if status == :failed
11
+ last_failed = runtime.steps(:failed).last
12
+ print_elements(Array(last_failed), status, 'steps')
13
+ end
14
+ @io.flush
15
+ end
16
+ end
17
+ end
@@ -4,7 +4,7 @@ module Cucumber
4
4
  #
5
5
  # @author zedtux
6
6
  #
7
- module Instafail
8
- VERSION = '0.1.0'
7
+ class Instafail < Cucumber::Formatter::Progress
8
+ VERSION = '1.0.0'
9
9
  end
10
10
  end
@@ -0,0 +1,172 @@
1
+ require 'spec_helper'
2
+ require 'cucumber/instafail'
3
+ require 'support/cucumber_spec_helper'
4
+ require 'cucumber/cli/main'
5
+ require 'cucumber/instafail'
6
+
7
+ module Cucumber
8
+ describe Instafail do
9
+ extend SpecHelperDsl
10
+ include SpecHelper
11
+
12
+ before(:each) do
13
+ Cucumber::Term::ANSIColor.coloring = false
14
+ @out = StringIO.new
15
+ @options = Cucumber::Cli::Options.new
16
+ @formatter = Instafail.new(step_mother, @out, @options)
17
+ run_defined_feature
18
+ end
19
+
20
+ context 'with a single passing scenario' do
21
+ define_feature <<-FEATURE
22
+ Feature: Banana party
23
+
24
+ Scenario: Monkey eats banana
25
+ Given there are bananas
26
+ FEATURE
27
+
28
+ define_steps do
29
+ Given(/^there are bananas$/) { }
30
+ end
31
+
32
+ it 'outputs the passed step' do
33
+ expect(@out.string).to include ".\n"
34
+ end
35
+ end
36
+
37
+ context 'with a single failing scenario' do
38
+ define_feature <<-FEATURE
39
+ Feature: Banana party
40
+
41
+ Scenario: Monkey eats banana
42
+ Given there are bananas
43
+ FEATURE
44
+
45
+ define_steps do
46
+ Given(/^there are bananas$/) do
47
+ raise 'Unable to create the bananas'
48
+ end
49
+ end
50
+
51
+ it 'outputs the failed step' do
52
+ expect(@out.string).to include "F(::) failed steps (::)\n"
53
+ end
54
+
55
+ it 'outputs the error "Unable to create the bananas (RuntimeError)"' do
56
+ message = 'Unable to create the bananas (RuntimeError)'
57
+ expect(@out.string).to include message
58
+ end
59
+
60
+ it 'should have 1 scenario and 1 failure' do
61
+ expect(@out.string).to include '1 scenario (1 failed)'
62
+ end
63
+ end
64
+
65
+ context 'with multiple scenarios' do
66
+ context 'and one failure' do
67
+ define_feature <<-FEATURE
68
+ Feature: Banana party
69
+
70
+ Scenario: Monkey eats banana
71
+ Given there are bananas
72
+ When he eats the bananas
73
+ Then the monkey should be happy
74
+
75
+ Scenario: Gorilla eats banana
76
+ Given there are bananas
77
+ When he eats the bananas
78
+ Then the gorilla should be happy
79
+
80
+ Scenario: Lion eats banana
81
+ Given there are bananas
82
+ When he eats the bananas
83
+ Then the lion should be happy
84
+
85
+ FEATURE
86
+
87
+ define_steps do
88
+ Given(/^there are bananas$/) { }
89
+ When(/^he eats the bananas$/) { }
90
+ Then(/^the (?:monkey|lion) should be happy$/) { }
91
+ Then(/^the gorilla should be happy$/) do
92
+ raise 'The Gorilla is unhappy : ('
93
+ end
94
+ end
95
+
96
+ it 'outputs the failed step' do
97
+ expect(@out.string).to include "F(::) failed steps (::)\n"
98
+ end
99
+
100
+ it 'outputs the error "The Gorilla is unhappy : ( (RuntimeError)"' do
101
+ message = 'The Gorilla is unhappy : ( (RuntimeError)'
102
+ expect(@out.string).to include message
103
+ end
104
+
105
+ it 'should have 3 scenarios, 1 failure and 2 passed' do
106
+ expect(@out.string).to include '3 scenarios (1 failed, 2 passed)'
107
+ end
108
+ end
109
+ context 'and multiple failures' do
110
+ define_feature <<-FEATURE
111
+ Feature: Banana party
112
+
113
+ Scenario: Monkey eats banana
114
+ Given there are bananas
115
+ When he eats the bananas
116
+ Then the monkey should be happy
117
+
118
+ Scenario: Gorilla eats banana
119
+ Given there are bananas
120
+ When he eats the bananas
121
+ Then the gorilla should be happy
122
+
123
+ Scenario: Lion eats banana
124
+ Given there are bananas
125
+ When he eats the bananas
126
+ Then the lion should be happy
127
+
128
+ FEATURE
129
+
130
+ define_steps do
131
+ Given(/^there are bananas$/) { }
132
+ When(/^he eats the bananas$/) { }
133
+ Then(/^the monkey should be happy$/) { }
134
+ Then(/^the gorilla should be happy$/) do
135
+ raise 'The Gorilla is unhappy : ('
136
+ end
137
+ Then(/^the lion should be happy$/) do
138
+ raise 'The Lion is unhappy too'
139
+ end
140
+ end
141
+
142
+ it 'outputs the failed step' do
143
+ expect(@out.string).to include "F(::) failed steps (::)\n"
144
+ end
145
+
146
+ it 'outputs the error "The Gorilla is unhappy : ( (RuntimeError)"' do
147
+ message = 'The Gorilla is unhappy : ( (RuntimeError)'
148
+ expect(@out.string).to include message
149
+ end
150
+
151
+ it 'outputs the error "The Lion is unhappy : ( (RuntimeError)"' do
152
+ message = 'The Lion is unhappy too (RuntimeError)'
153
+ expect(@out.string).to include message
154
+ end
155
+
156
+ it 'should have 3 scenarios, 2 failures and 1 passed' do
157
+ expect(@out.string).to include '3 scenarios (2 failed, 1 passed)'
158
+ end
159
+
160
+ it 'should not display duplicates' do
161
+ header = "F(::) failed steps (::)\n\n"
162
+
163
+ expected = "#{header}The Gorilla is unhappy : ( (RuntimeError)"
164
+ expect(@out.string).to include expected
165
+
166
+ expected = "#{header}The Lion is unhappy too (RuntimeError)"
167
+ expect(@out.string).to include expected
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -1,53 +1,51 @@
1
1
  module Cucumber
2
- module Formatter
3
- module SpecHelperDsl
4
- attr_reader :feature_content, :step_defs, :feature_filename
2
+ module SpecHelperDsl
3
+ attr_reader :feature_content, :step_defs, :feature_filename
5
4
 
6
- def define_feature(string, feature_file = 'spec.feature')
7
- @feature_content = string
8
- @feature_filename = feature_file
9
- end
5
+ def define_feature(string, feature_file = 'spec.feature')
6
+ @feature_content = string
7
+ @feature_filename = feature_file
8
+ end
10
9
 
11
- def define_steps(&block)
12
- @step_defs = block
13
- end
10
+ def define_steps(&block)
11
+ @step_defs = block
14
12
  end
13
+ end
15
14
 
16
- module SpecHelper
17
- def run_defined_feature
18
- define_steps
19
- features = load_features(self.class.feature_content ||
20
- raise('No feature content defined!'))
21
- run(features)
22
- end
15
+ module SpecHelper
16
+ def run_defined_feature
17
+ define_steps
18
+ features = load_features(self.class.feature_content ||
19
+ raise('No feature content defined!'))
20
+ run(features)
21
+ end
23
22
 
24
- def step_mother
25
- @step_mother ||= Runtime.new
26
- end
23
+ def step_mother
24
+ @step_mother ||= Runtime.new
25
+ end
27
26
 
28
- def load_features(content)
29
- feature_file = FeatureFile.new(self.class.feature_filename, content)
30
- features = Ast::Features.new
31
- filters = []
32
- feature = feature_file.parse(filters, {})
33
- features.add_feature(feature) if feature
34
- features
35
- end
27
+ def load_features(content)
28
+ feature_file = FeatureFile.new(self.class.feature_filename, content)
29
+ features = Ast::Features.new
30
+ filters = []
31
+ feature = feature_file.parse(filters, {})
32
+ features.add_feature(feature) if feature
33
+ features
34
+ end
36
35
 
37
- def run(features)
38
- configuration = Cucumber::Configuration.default
39
- tree_walker = Cucumber::Ast::TreeWalker.new(step_mother, [@formatter],
40
- configuration)
41
- tree_walker.visit_features(features)
42
- end
36
+ def run(features)
37
+ configuration = Cucumber::Configuration.default
38
+ tree_walker = Cucumber::Ast::TreeWalker.new(step_mother, [@formatter],
39
+ configuration)
40
+ tree_walker.visit_features(features)
41
+ end
43
42
 
44
- def define_steps
45
- return unless step_defs = self.class.step_defs
46
- rb = step_mother.load_programming_language('rb')
47
- dsl = Object.new
48
- dsl.extend RbSupport::RbDsl
49
- dsl.instance_exec &step_defs
50
- end
43
+ def define_steps
44
+ return unless step_defs = self.class.step_defs
45
+ rb = step_mother.load_programming_language('rb')
46
+ dsl = Object.new
47
+ dsl.extend RbSupport::RbDsl
48
+ dsl.instance_exec &step_defs
51
49
  end
52
50
  end
53
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-instafail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guillaume Hain
@@ -110,9 +110,8 @@ files:
110
110
  - Rakefile
111
111
  - cucumber-instafail.gemspec
112
112
  - lib/cucumber/instafail.rb
113
- - lib/cucumber/instafail/formatter/progress_instafail.rb
114
113
  - lib/cucumber/instafail/version.rb
115
- - spec/cucumber/instafail/formatter/progress_instafail_spec.rb
114
+ - spec/cucumber/instafail_spec.rb
116
115
  - spec/spec_helper.rb
117
116
  - spec/support/cucumber_spec_helper.rb
118
117
  homepage: https://github.com/zedtux/cucumber-instafail
@@ -140,6 +139,6 @@ signing_key:
140
139
  specification_version: 4
141
140
  summary: Show failing features instantly
142
141
  test_files:
143
- - spec/cucumber/instafail/formatter/progress_instafail_spec.rb
142
+ - spec/cucumber/instafail_spec.rb
144
143
  - spec/spec_helper.rb
145
144
  - spec/support/cucumber_spec_helper.rb
@@ -1,19 +0,0 @@
1
- require 'cucumber/formatter/console'
2
- require 'cucumber/formatter/io'
3
-
4
- module Cucumber
5
- module Formatter
6
- # The formatter used for <tt>--format progress-instafail</tt>
7
- class ProgressInstafail < Cucumber::Formatter::Progress
8
- def progress(status)
9
- char = CHARS[status]
10
- @io.print(format_string(char, status))
11
- if status == :failed
12
- last_failed = runtime.steps(:failed).last
13
- print_elements(Array(last_failed), status, 'steps')
14
- end
15
- @io.flush
16
- end
17
- end
18
- end
19
- end
@@ -1,174 +0,0 @@
1
- require 'spec_helper'
2
- require 'cucumber/formatter/progress'
3
- require 'support/cucumber_spec_helper'
4
- require 'cucumber/cli/main'
5
- require 'cucumber/instafail/formatter/progress_instafail'
6
-
7
- module Cucumber
8
- module Formatter
9
- describe ProgressInstafail do
10
- extend SpecHelperDsl
11
- include SpecHelper
12
-
13
- before(:each) do
14
- Cucumber::Term::ANSIColor.coloring = false
15
- @out = StringIO.new
16
- @options = Cucumber::Cli::Options.new
17
- @formatter = ProgressInstafail.new(step_mother, @out, @options)
18
- run_defined_feature
19
- end
20
-
21
- context 'with a single passing scenario' do
22
- define_feature <<-FEATURE
23
- Feature: Banana party
24
-
25
- Scenario: Monkey eats banana
26
- Given there are bananas
27
- FEATURE
28
-
29
- define_steps do
30
- Given(/^there are bananas$/) { }
31
- end
32
-
33
- it 'outputs the passed step' do
34
- expect(@out.string).to include ".\n"
35
- end
36
- end
37
-
38
- context 'with a single failing scenario' do
39
- define_feature <<-FEATURE
40
- Feature: Banana party
41
-
42
- Scenario: Monkey eats banana
43
- Given there are bananas
44
- FEATURE
45
-
46
- define_steps do
47
- Given(/^there are bananas$/) do
48
- raise 'Unable to create the bananas'
49
- end
50
- end
51
-
52
- it 'outputs the failed step' do
53
- expect(@out.string).to include "F(::) failed steps (::)\n"
54
- end
55
-
56
- it 'outputs the error "Unable to create the bananas (RuntimeError)"' do
57
- message = 'Unable to create the bananas (RuntimeError)'
58
- expect(@out.string).to include message
59
- end
60
-
61
- it 'should have 1 scenario and 1 failure' do
62
- expect(@out.string).to include '1 scenario (1 failed)'
63
- end
64
- end
65
-
66
- context 'with multiple scenarios' do
67
- context 'and one failure' do
68
- define_feature <<-FEATURE
69
- Feature: Banana party
70
-
71
- Scenario: Monkey eats banana
72
- Given there are bananas
73
- When he eats the bananas
74
- Then the monkey should be happy
75
-
76
- Scenario: Gorilla eats banana
77
- Given there are bananas
78
- When he eats the bananas
79
- Then the gorilla should be happy
80
-
81
- Scenario: Lion eats banana
82
- Given there are bananas
83
- When he eats the bananas
84
- Then the lion should be happy
85
-
86
- FEATURE
87
-
88
- define_steps do
89
- Given(/^there are bananas$/) { }
90
- When(/^he eats the bananas$/) { }
91
- Then(/^the (?:monkey|lion) should be happy$/) { }
92
- Then(/^the gorilla should be happy$/) do
93
- raise 'The Gorilla is unhappy : ('
94
- end
95
- end
96
-
97
- it 'outputs the failed step' do
98
- expect(@out.string).to include "F(::) failed steps (::)\n"
99
- end
100
-
101
- it 'outputs the error "The Gorilla is unhappy : ( (RuntimeError)"' do
102
- message = 'The Gorilla is unhappy : ( (RuntimeError)'
103
- expect(@out.string).to include message
104
- end
105
-
106
- it 'should have 3 scenarios, 1 failure and 2 passed' do
107
- expect(@out.string).to include '3 scenarios (1 failed, 2 passed)'
108
- end
109
- end
110
- context 'and multiple failures' do
111
- define_feature <<-FEATURE
112
- Feature: Banana party
113
-
114
- Scenario: Monkey eats banana
115
- Given there are bananas
116
- When he eats the bananas
117
- Then the monkey should be happy
118
-
119
- Scenario: Gorilla eats banana
120
- Given there are bananas
121
- When he eats the bananas
122
- Then the gorilla should be happy
123
-
124
- Scenario: Lion eats banana
125
- Given there are bananas
126
- When he eats the bananas
127
- Then the lion should be happy
128
-
129
- FEATURE
130
-
131
- define_steps do
132
- Given(/^there are bananas$/) { }
133
- When(/^he eats the bananas$/) { }
134
- Then(/^the monkey should be happy$/) { }
135
- Then(/^the gorilla should be happy$/) do
136
- raise 'The Gorilla is unhappy : ('
137
- end
138
- Then(/^the lion should be happy$/) do
139
- raise 'The Lion is unhappy too'
140
- end
141
- end
142
-
143
- it 'outputs the failed step' do
144
- expect(@out.string).to include "F(::) failed steps (::)\n"
145
- end
146
-
147
- it 'outputs the error "The Gorilla is unhappy : ( (RuntimeError)"' do
148
- message = 'The Gorilla is unhappy : ( (RuntimeError)'
149
- expect(@out.string).to include message
150
- end
151
-
152
- it 'outputs the error "The Lion is unhappy : ( (RuntimeError)"' do
153
- message = 'The Lion is unhappy too (RuntimeError)'
154
- expect(@out.string).to include message
155
- end
156
-
157
- it 'should have 3 scenarios, 2 failures and 1 passed' do
158
- expect(@out.string).to include '3 scenarios (2 failed, 1 passed)'
159
- end
160
-
161
- it 'should not display duplicates' do
162
- header = "F(::) failed steps (::)\n\n"
163
-
164
- expected = "#{header}The Gorilla is unhappy : ( (RuntimeError)"
165
- expect(@out.string).to include expected
166
-
167
- expected = "#{header}The Lion is unhappy too (RuntimeError)"
168
- expect(@out.string).to include expected
169
- end
170
- end
171
- end
172
- end
173
- end
174
- end