cucumber-instafail 0.1.0 → 1.0.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 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