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 +4 -4
- data/cucumber-instafail.gemspec +1 -1
- data/lib/cucumber/instafail.rb +16 -1
- data/lib/cucumber/instafail/version.rb +2 -2
- data/spec/cucumber/instafail_spec.rb +172 -0
- data/spec/support/cucumber_spec_helper.rb +39 -41
- metadata +3 -4
- data/lib/cucumber/instafail/formatter/progress_instafail.rb +0 -19
- data/spec/cucumber/instafail/formatter/progress_instafail_spec.rb +0 -174
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98e51363e22c555ab09983e4548731bbaf0b2b10
|
4
|
+
data.tar.gz: 3268735dffbd14780dd901b18fa0b0322a2503af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d159f096b3e7565baeb9f02e55795f9fb5af195201cf3e7a969fb4d412f5bb29719c14d0e37e5c5c1acf56937848b975d941974e125737e670ef5472ae72ce32
|
7
|
+
data.tar.gz: c5c4ccfcbc4ba16c904807aa66c9c811fc7f88050852fad5557d904d3b700b558233411a2da1a21281e1d150469174504f8207c20d4990e3876d932407f48311
|
data/cucumber-instafail.gemspec
CHANGED
data/lib/cucumber/instafail.rb
CHANGED
@@ -1,2 +1,17 @@
|
|
1
|
-
require 'cucumber/
|
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
|
@@ -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
|
3
|
-
|
4
|
-
attr_reader :feature_content, :step_defs, :feature_filename
|
2
|
+
module SpecHelperDsl
|
3
|
+
attr_reader :feature_content, :step_defs, :feature_filename
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
def define_feature(string, feature_file = 'spec.feature')
|
6
|
+
@feature_content = string
|
7
|
+
@feature_filename = feature_file
|
8
|
+
end
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
10
|
+
def define_steps(&block)
|
11
|
+
@step_defs = block
|
14
12
|
end
|
13
|
+
end
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
25
|
-
|
26
|
-
|
23
|
+
def step_mother
|
24
|
+
@step_mother ||= Runtime.new
|
25
|
+
end
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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:
|
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/
|
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/
|
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
|