spinach_file_reporter 0.0.1.1
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 +7 -0
- data/LICENSE +22 -0
- data/README.md +34 -0
- data/lib/spinach_file_reporter/gem_description.rb +16 -0
- data/lib/spinach_file_reporter/spinach_file_reporter.rb +203 -0
- data/lib/spinach_file_reporter.rb +1 -0
- data/spinach_file_reporter-0.0.1.gem +0 -0
- data/spinach_file_reporter.gemspec +18 -0
- metadata +66 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3c36e9f36eae4d906bd88a0897b52fcec867b91c
|
4
|
+
data.tar.gz: 4caf81fb55686887ba8846a1a91e376207fb4da9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 32e5e1575393a586c34257e3158cde8d42b39dd077770368e2367148980f314712be56f85cf2895bf168cc404c7c871eb620b332efd8688378cf13c40610bc46
|
7
|
+
data.tar.gz: 232be7b501e2768cbae08f746f0da3e1c2d0b024b139c72656c6c0d61bc86538cba56edfcc5cd2ea7435361485312ed8c5bce45d5e8383eb986d9033de77b768
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Yi Wen
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# spinach_file_reporter
|
2
|
+
Gem version: 0.0.1
|
3
|
+
|
4
|
+
Reporter for Spinach tests. This reports to console and into a file.
|
5
|
+
File is saved under tmp/spinach_errors.txt
|
6
|
+
|
7
|
+
This is a reporter that meant to use on Jenkins, combined with (https://github.com/dblock/jenkins-ansicolor-plugin) to bring the color output to Jenkins console.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
gem 'spinach-file-reporter'
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install spinach-file-reporter
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
```bash
|
26
|
+
$ bundle exec spinach -r file_reporter
|
27
|
+
```
|
28
|
+
## Contributing
|
29
|
+
|
30
|
+
1. Fork it
|
31
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
32
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
33
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
34
|
+
5. Create new Pull Request
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Spinach
|
2
|
+
module FileReporter
|
3
|
+
module Reporter
|
4
|
+
module GemDescription
|
5
|
+
class << self
|
6
|
+
def to_s
|
7
|
+
<<-EOF
|
8
|
+
This is a console and file reporter for spinach. It works like output reporter of
|
9
|
+
spinach and add a file reporter of the errors to a file
|
10
|
+
EOF
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,203 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Spinach
|
3
|
+
class Reporter
|
4
|
+
# The Stdout reporter outputs the runner results to the standard output
|
5
|
+
#
|
6
|
+
class FileReporter < Reporter
|
7
|
+
include Reporting
|
8
|
+
|
9
|
+
# Initialitzes the runner
|
10
|
+
#
|
11
|
+
# @param [Hash] options
|
12
|
+
# Sets a custom output buffer by setting options[:output]
|
13
|
+
# Sets a custom error buffer by setting options[:error]
|
14
|
+
#
|
15
|
+
def initialize(*args)
|
16
|
+
super(*args)
|
17
|
+
@out = options[:output] || $stdout
|
18
|
+
@error = options[:error] || $stderr
|
19
|
+
@max_step_name_length = 0
|
20
|
+
@file_errors = []
|
21
|
+
end
|
22
|
+
|
23
|
+
def after_run(success)
|
24
|
+
if !success
|
25
|
+
file = File.new("tmp/spinach_errors.txt", "w")
|
26
|
+
file.puts @file_errors.uniq.join(' ')
|
27
|
+
file.close
|
28
|
+
else
|
29
|
+
File.delete("tmp/spinach.txt")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# Prints the feature name to the standard output
|
34
|
+
#
|
35
|
+
# @param [Hash] data
|
36
|
+
# The feature in a JSON GherkinRubyRuby format
|
37
|
+
#
|
38
|
+
def before_feature_run(feature)
|
39
|
+
name = feature.name
|
40
|
+
out.puts "\n#{'Feature:'.magenta} #{name.light_magenta}"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Prints the scenario name to the standard ouput
|
44
|
+
#
|
45
|
+
# @param [Hash] data
|
46
|
+
# The feature in a JSON GherkinRubyRuby format
|
47
|
+
#
|
48
|
+
def before_scenario_run(scenario, step_definitions = nil)
|
49
|
+
@max_step_name_length = scenario.steps.map(&:name).map(&:length).max if scenario.steps.any?
|
50
|
+
name = scenario.name
|
51
|
+
out.puts "\n #{'Scenario:'.green} #{name.light_green}"
|
52
|
+
end
|
53
|
+
|
54
|
+
# Adds an error report and re
|
55
|
+
#
|
56
|
+
# @param [Hash] data
|
57
|
+
# The feature in a JSON GherkinRubyRuby format
|
58
|
+
#
|
59
|
+
def after_scenario_run(scenario, step_definitions = nil)
|
60
|
+
if scenario_error
|
61
|
+
report_error(scenario_error, :full)
|
62
|
+
self.scenario_error = nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# Adds a passed step to the output buffer.
|
67
|
+
#
|
68
|
+
# @param [Step] step
|
69
|
+
# The step.
|
70
|
+
#
|
71
|
+
# @param [Array] step_location
|
72
|
+
# The step source location
|
73
|
+
#
|
74
|
+
def on_successful_step(step, step_location, step_definitions = nil)
|
75
|
+
output_step('✔', step, :green, step_location)
|
76
|
+
self.scenario = [current_feature, current_scenario, step]
|
77
|
+
successful_steps << scenario
|
78
|
+
end
|
79
|
+
|
80
|
+
# Adds a failing step to the output buffer.
|
81
|
+
#
|
82
|
+
# @param [Hash] step
|
83
|
+
# The step in a JSON GherkinRubyRuby format
|
84
|
+
#
|
85
|
+
# @param [Exception] failure
|
86
|
+
# The exception that caused the failure
|
87
|
+
#
|
88
|
+
def on_failed_step(step, failure, step_location, step_definitions = nil)
|
89
|
+
output_step('✘', step, :red, step_location)
|
90
|
+
self.scenario_error = [current_feature, current_scenario, step, failure]
|
91
|
+
feature = step_location[0].split( '/' ).last.split('.').first
|
92
|
+
@file_errors.push( "features/#{feature}.feature") if step_location
|
93
|
+
failed_steps << scenario_error
|
94
|
+
end
|
95
|
+
|
96
|
+
# Adds a step that has raised an error to the output buffer.
|
97
|
+
#
|
98
|
+
# @param [Hash] step
|
99
|
+
# The step in a JSON GherkinRubyRuby format
|
100
|
+
#
|
101
|
+
# @param [Exception] failure
|
102
|
+
# The exception that caused the failure
|
103
|
+
#
|
104
|
+
def on_error_step(step, failure, step_location, step_definitions = nil)
|
105
|
+
output_step('!', step, :red, step_location)
|
106
|
+
feature = step_location[0].split( '/' ).last.split('.').first
|
107
|
+
self.scenario_error = [current_feature, current_scenario, step, failure]
|
108
|
+
error_steps << scenario_error
|
109
|
+
end
|
110
|
+
|
111
|
+
# Adds an undefined step to the output buffer.
|
112
|
+
#
|
113
|
+
# @param [Hash] step
|
114
|
+
# The step in a JSON GherkinRubyRuby format
|
115
|
+
#
|
116
|
+
def on_undefined_step(step, failure, step_definitions = nil)
|
117
|
+
output_step('?', step, :red)
|
118
|
+
self.scenario_error = [current_feature, current_scenario, step, failure]
|
119
|
+
undefined_steps << scenario_error
|
120
|
+
end
|
121
|
+
|
122
|
+
# Adds an undefined step to the output buffer.
|
123
|
+
#
|
124
|
+
# @param [Hash] step
|
125
|
+
# The step in a JSON GherkinRubyRuby format
|
126
|
+
#
|
127
|
+
def on_pending_step(step, failure)
|
128
|
+
output_step('P', step, :yellow)
|
129
|
+
self.scenario_error = [current_feature, current_scenario, step, failure]
|
130
|
+
pending_steps << scenario_error
|
131
|
+
end
|
132
|
+
|
133
|
+
# Adds a feature not found message to the output buffer.
|
134
|
+
#
|
135
|
+
# @param [Hash] feature
|
136
|
+
# the feature in a json gherkin format
|
137
|
+
#
|
138
|
+
# @param [Spinach::FeatureNotFoundException] exception
|
139
|
+
# the related exception
|
140
|
+
#
|
141
|
+
def on_feature_not_found(feature)
|
142
|
+
generator = Generators::FeatureGenerator.new(feature)
|
143
|
+
lines = "Could not find steps for `#{feature.name}` feature\n\n"
|
144
|
+
lines << "\nPlease create the file #{generator.filename} at #{generator.path}, with:\n\n"
|
145
|
+
|
146
|
+
lines << generator.generate
|
147
|
+
|
148
|
+
lines.split("\n").each do |line|
|
149
|
+
out.puts " #{line}".red
|
150
|
+
end
|
151
|
+
out.puts "\n\n"
|
152
|
+
|
153
|
+
undefined_features << feature
|
154
|
+
end
|
155
|
+
|
156
|
+
# Adds a step that has been skipped to the output buffer.
|
157
|
+
#
|
158
|
+
# @param [Hash] step
|
159
|
+
# The step that GherkinRubyRuby extracts
|
160
|
+
#
|
161
|
+
def on_skipped_step(step, step_definitions = nil)
|
162
|
+
output_step('~', step, :cyan)
|
163
|
+
end
|
164
|
+
|
165
|
+
# Adds to the output buffer a step result
|
166
|
+
#
|
167
|
+
# @param [String] symbol
|
168
|
+
# A symbol to prepend before the step keyword (might be useful to
|
169
|
+
# indicate if everything went ok or not).
|
170
|
+
#
|
171
|
+
# @param [Hash] step
|
172
|
+
# The step in a JSON GherkinRubyRuby format
|
173
|
+
#
|
174
|
+
# @param [Symbol] color
|
175
|
+
# The color code to use with Colorize to colorize the output.
|
176
|
+
#
|
177
|
+
# @param [Array] step_location
|
178
|
+
# step source location and file line
|
179
|
+
#
|
180
|
+
def output_step(symbol, step, color, step_location = nil)
|
181
|
+
step_location = step_location.first.gsub("#{File.expand_path('.')}/", '# ')+":#{step_location.last.to_s}" if step_location
|
182
|
+
max_length = @max_step_name_length + 60 # Colorize and output format correction
|
183
|
+
|
184
|
+
# REMEMBER TO CORRECT PREVIOUS MAX LENGTH IF OUTPUT FORMAT IS MODIFIED
|
185
|
+
buffer = []
|
186
|
+
buffer << indent(4)
|
187
|
+
buffer << symbol.colorize(:"light_#{color}")
|
188
|
+
buffer << indent(2)
|
189
|
+
buffer << step.keyword.colorize(:"light_#{color}")
|
190
|
+
buffer << indent(1)
|
191
|
+
buffer << step.name.colorize(color)
|
192
|
+
joined = buffer.join.ljust(max_length)
|
193
|
+
|
194
|
+
out.puts(joined + step_location.to_s.colorize(:grey))
|
195
|
+
end
|
196
|
+
|
197
|
+
private
|
198
|
+
def indent(n = 1)
|
199
|
+
" " * n
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative "spinach_file_reporter/spinach_file_reporter"
|
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
require "spinach_file_reporter/gem_description"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = 'spinach_file_reporter'
|
6
|
+
s.version = '0.0.1.1'
|
7
|
+
s.date = '2015-07-24'
|
8
|
+
s.summary = 'Reporter for spinach with file output'
|
9
|
+
s.description = Spinach::FileReporter::Reporter::GemDescription.to_s
|
10
|
+
s.authors = ["JuanMa Jurado"]
|
11
|
+
s.email = "JuanMa Jurado"
|
12
|
+
s.license = 'MIT'
|
13
|
+
s.files = `git ls-files`.split($\)
|
14
|
+
s.require_paths = ["lib"]
|
15
|
+
s.homepage = 'https://github.com/jmjurado23/spinach_file_reporter'
|
16
|
+
|
17
|
+
s.add_runtime_dependency(%q<spinach>, '~>0.4')
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: spinach_file_reporter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- JuanMa Jurado
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: spinach
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.4'
|
27
|
+
description: |2
|
28
|
+
This is a console and file reporter for spinach. It works like output reporter of
|
29
|
+
spinach and add a file reporter of the errors to a file
|
30
|
+
email: JuanMa Jurado
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- LICENSE
|
36
|
+
- README.md
|
37
|
+
- lib/spinach_file_reporter.rb
|
38
|
+
- lib/spinach_file_reporter/gem_description.rb
|
39
|
+
- lib/spinach_file_reporter/spinach_file_reporter.rb
|
40
|
+
- spinach_file_reporter-0.0.1.gem
|
41
|
+
- spinach_file_reporter.gemspec
|
42
|
+
homepage: https://github.com/jmjurado23/spinach_file_reporter
|
43
|
+
licenses:
|
44
|
+
- MIT
|
45
|
+
metadata: {}
|
46
|
+
post_install_message:
|
47
|
+
rdoc_options: []
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
requirements: []
|
61
|
+
rubyforge_project:
|
62
|
+
rubygems_version: 2.2.2
|
63
|
+
signing_key:
|
64
|
+
specification_version: 4
|
65
|
+
summary: Reporter for spinach with file output
|
66
|
+
test_files: []
|