gurke 2.0.0.dev.1.b20 → 2.0.0.dev.1.b22
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/features/support/steps/cli_steps.rb +1 -1
- data/gurke.gemspec +16 -7
- data/lib/gurke.rb +1 -2
- data/lib/gurke/builder.rb +0 -2
- data/lib/gurke/cli.rb +1 -1
- data/lib/gurke/configuration.rb +1 -2
- data/lib/gurke/dsl.rb +0 -1
- data/lib/gurke/feature.rb +0 -1
- data/lib/gurke/reporters/default_reporter.rb +23 -19
- data/lib/gurke/reporters/null_reporter.rb +1 -1
- data/lib/gurke/runner.rb +0 -1
- data/lib/gurke/scenario.rb +0 -1
- data/lib/gurke/step.rb +15 -14
- data/lib/gurke/step_definition.rb +0 -2
- data/lib/gurke/steps.rb +2 -3
- data/lib/gurke/tag.rb +0 -1
- data/lib/gurke/version.rb +0 -1
- data/spec/gurke/feature_list_spec.rb +49 -0
- data/spec/gurke/run_list_spec.rb +31 -0
- data/spec/gurke/scenario_spec.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YWJlYzFiZWQxMTE4MTZmMjllZmM0YzU0MGQ1YzgyMDNiOTMyNGM4MQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTAyNjdlOWM2YzU5ZDZlNWJiMDk2MzJiM2RkZDM4ZDE3NGRmOGZhMg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODdhM2NkMjk4NmIwOTQ2Y2Y5NjkzMDdkMjlmMWMzNDJkMzEzOGY3NWUyZDZk
|
10
|
+
NmJmY2Y5MTA2ODk1NWM5MDY3OGE0ZDBhZmZlNGEwNTY1ODk0MDIyNTFhOTI4
|
11
|
+
ODc2YjVlZTZkZDE1MDU1ODU3OTQxMGQyN2FhYTlkMzJmNmIyZjM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ODJjODY1NmJlZDIxOGUzNWVkY2YwMWQ2NjlmY2MwMjY5ZmJkZTEzNDNkOGMw
|
14
|
+
MjgzZDdjNzJkZGEzMmMxZWY2NDJkOGU5OGFjM2Q5N2E3MTQ5ZDljZGNjZTI2
|
15
|
+
NDc5YTJiN2Q5MmMzODcwZTI2MGZmNjVlNDIxMGEzYjZlODc2MTE=
|
data/gurke.gemspec
CHANGED
@@ -8,14 +8,21 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Gurke::VERSION
|
9
9
|
spec.authors = ['Jan Graichen']
|
10
10
|
spec.email = %w(jg@altimos.de)
|
11
|
-
spec.description = %q{An alternative gherkin feature runner inspired by rspec and turnip.}
|
12
|
-
spec.summary = %q{An alternative gherkin feature runner inspired by rspec and turnip.}
|
13
11
|
spec.homepage = 'https://github.com/jgraichen/gurke'
|
14
12
|
spec.license = 'MIT'
|
15
13
|
|
16
|
-
spec.
|
17
|
-
|
18
|
-
spec.
|
14
|
+
spec.description = \
|
15
|
+
%q(An alternative gherkin feature runner inspired by rspec and turnip.)
|
16
|
+
spec.summary = \
|
17
|
+
%q(An alternative gherkin feature runner inspired by rspec and turnip.)
|
18
|
+
|
19
|
+
spec.files = Dir['**/*'].grep %r{^(
|
20
|
+
(bin/|lib/|test/|spec/|features/)|
|
21
|
+
(\w*\.gemspec|LICENSE.*|README.*|CHANGELOG.*)$
|
22
|
+
)}x
|
23
|
+
|
24
|
+
spec.executables = spec.files.grep(/^bin\//) {|f| File.basename(f) }
|
25
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
19
26
|
spec.require_paths = %w(lib)
|
20
27
|
|
21
28
|
spec.add_dependency 'trollop'
|
@@ -24,6 +31,8 @@ Gem::Specification.new do |spec|
|
|
24
31
|
|
25
32
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
26
33
|
|
27
|
-
|
28
|
-
|
34
|
+
if ENV['TRAVIS_BUILD_NUMBER']
|
35
|
+
# Append travis build number for auto-releases
|
36
|
+
spec.version = "#{spec.version}.1.b#{ENV['TRAVIS_BUILD_NUMBER']}"
|
37
|
+
end
|
29
38
|
end
|
data/lib/gurke.rb
CHANGED
data/lib/gurke/builder.rb
CHANGED
data/lib/gurke/cli.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'trollop'
|
2
2
|
|
3
3
|
module Gurke
|
4
|
-
#
|
5
4
|
class CLI
|
6
5
|
#
|
7
6
|
# Run CLI with given arguments.
|
@@ -45,6 +44,7 @@ module Gurke
|
|
45
44
|
parser.educate($stdout)
|
46
45
|
end
|
47
46
|
|
47
|
+
# rubocop:disable MethodLength
|
48
48
|
def parser
|
49
49
|
@parser ||= Trollop::Parser.new do
|
50
50
|
opt :help, 'Print this help.'
|
data/lib/gurke/configuration.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
module Gurke
|
2
|
-
#
|
3
2
|
class Configuration
|
4
3
|
#
|
5
4
|
# Define a before filter running before given action.
|
@@ -106,7 +105,7 @@ module Gurke
|
|
106
105
|
|
107
106
|
def run(world, &block)
|
108
107
|
@before.each{|hook| hook.run world }
|
109
|
-
@around.reduce(block){|
|
108
|
+
@around.reduce(block){|a, e| proc{ e.run world, a }}.call
|
110
109
|
ensure
|
111
110
|
@after.each do |hook|
|
112
111
|
begin
|
data/lib/gurke/dsl.rb
CHANGED
data/lib/gurke/feature.rb
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
require 'colorize'
|
2
2
|
|
3
|
-
#
|
3
|
+
# Colors
|
4
4
|
# :black, :red, :green, :yellow, :blue,
|
5
5
|
# :magenta, :cyan, :white, :default, :light_black,
|
6
6
|
# :light_red, :light_green, :light_yellow, :light_blue,
|
7
7
|
# :light_magenta, :light_cyan, :light_white
|
8
|
-
|
8
|
+
#
|
9
9
|
module Gurke::Reporters
|
10
|
+
#
|
11
|
+
# The {DefaultReporter} prints features, scenarios and
|
12
|
+
# steps while they are executed.
|
13
|
+
#
|
14
|
+
# That includes colorized step results reports etc.
|
10
15
|
#
|
11
16
|
class DefaultReporter < NullReporter
|
12
17
|
def before_feature(feature)
|
@@ -37,21 +42,10 @@ module Gurke::Reporters
|
|
37
42
|
|
38
43
|
def after_step(step, *)
|
39
44
|
case step.state
|
40
|
-
when :pending
|
41
|
-
|
42
|
-
when :
|
43
|
-
|
44
|
-
io.puts
|
45
|
-
io.puts red(" #{step.exception.class}:")
|
46
|
-
|
47
|
-
msg = step.exception.message.split("\n").join("\n ")
|
48
|
-
io.puts red(" #{msg}")
|
49
|
-
|
50
|
-
io.puts red(" #{step.exception.backtrace.join("\n ")}")
|
51
|
-
when :success
|
52
|
-
print_braces green('success')
|
53
|
-
else
|
54
|
-
print_braces cyan('skipped')
|
45
|
+
when :pending then print_braces yellow 'pending'
|
46
|
+
when :failed then print_failed step
|
47
|
+
when :success then print_braces green 'success'
|
48
|
+
else print_braces cyan 'skipped'
|
55
49
|
end
|
56
50
|
io.puts
|
57
51
|
io.flush
|
@@ -68,8 +62,8 @@ module Gurke::Reporters
|
|
68
62
|
def after_features(features)
|
69
63
|
scenarios = features.map(&:scenarios).flatten
|
70
64
|
|
71
|
-
io.puts " #{scenarios.size} scenarios: "\
|
72
|
-
"#{scenarios.select(&:failed?).size} failing, "\
|
65
|
+
io.puts " #{scenarios.size} scenarios: " \
|
66
|
+
"#{scenarios.select(&:failed?).size} failing, " \
|
73
67
|
"#{scenarios.select(&:pending?).size} pending"
|
74
68
|
io.puts
|
75
69
|
end
|
@@ -80,6 +74,16 @@ module Gurke::Reporters
|
|
80
74
|
io.print " (#{str})"
|
81
75
|
end
|
82
76
|
|
77
|
+
def print_failed(step)
|
78
|
+
print_braces red('failure')
|
79
|
+
io.puts
|
80
|
+
msg = step.exception.message.split("\n").join("\n ")
|
81
|
+
|
82
|
+
io.puts red(" #{step.exception.class}:")
|
83
|
+
io.puts red(" #{msg}")
|
84
|
+
io.puts red(" #{step.exception.backtrace.join("\n ")}")
|
85
|
+
end
|
86
|
+
|
83
87
|
def io
|
84
88
|
$stdout
|
85
89
|
end
|
data/lib/gurke/runner.rb
CHANGED
data/lib/gurke/scenario.rb
CHANGED
data/lib/gurke/step.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
module Gurke
|
2
|
-
#
|
3
2
|
class Step
|
4
3
|
#
|
5
4
|
# Return path to file containing this scenario.
|
@@ -55,28 +54,30 @@ module Gurke
|
|
55
54
|
def run_step(runner, reporter, scenario, world)
|
56
55
|
reporter.invoke :start_step, self, scenario
|
57
56
|
|
58
|
-
result =
|
57
|
+
result = find_and_run_step runner, scenario, world
|
58
|
+
rescue StepPending => e
|
59
|
+
scenario.pending! e
|
60
|
+
result = StepResult.new self, :pending, e
|
61
|
+
rescue => e
|
62
|
+
scenario.failed! e
|
63
|
+
result = StepResult.new self, :failed, e
|
64
|
+
ensure
|
65
|
+
reporter.invoke :end_step, result, scenario
|
66
|
+
end
|
67
|
+
|
68
|
+
def find_and_run_step(runner, scenario, world)
|
59
69
|
runner.with_filtered_backtrace do
|
60
70
|
match = Steps.find_step self, world, type
|
61
71
|
|
62
72
|
if scenario.pending? || scenario.failed?
|
63
|
-
|
64
|
-
return result
|
73
|
+
return StepResult.new self, :skipped
|
65
74
|
end
|
66
75
|
|
67
76
|
m = world.method match.method_name
|
68
77
|
world.send match.method_name, *(match.params + [self])[0...m.arity]
|
69
|
-
end
|
70
78
|
|
71
|
-
|
72
|
-
|
73
|
-
scenario.pending! e
|
74
|
-
result = StepResult.new self, :pending, e
|
75
|
-
rescue => e
|
76
|
-
scenario.failed! e
|
77
|
-
result = StepResult.new self, :failed, e
|
78
|
-
ensure
|
79
|
-
reporter.invoke :end_step, result, scenario
|
79
|
+
StepResult.new self, :success
|
80
|
+
end
|
80
81
|
end
|
81
82
|
|
82
83
|
#
|
data/lib/gurke/steps.rb
CHANGED
data/lib/gurke/tag.rb
CHANGED
data/lib/gurke/version.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gurke::FeatureList do
|
4
|
+
let(:reporter) { Gurke::Reporters::NullReporter.new }
|
5
|
+
let(:runner) { double 'runner' }
|
6
|
+
let(:feature) { double 'feature' }
|
7
|
+
|
8
|
+
before do
|
9
|
+
features << feature
|
10
|
+
|
11
|
+
allow(runner).to receive(:hook) {|_, _, &block| block.call }
|
12
|
+
allow(feature).to receive(:failed?).and_return false
|
13
|
+
allow(feature).to receive(:pending?).and_return false
|
14
|
+
allow(feature).to receive(:run)
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:features) { Gurke::FeatureList.new }
|
18
|
+
|
19
|
+
describe '#run' do
|
20
|
+
subject { features.run runner, reporter }
|
21
|
+
|
22
|
+
it 'should run all features' do
|
23
|
+
expect(feature).to receive(:run).with(runner, reporter)
|
24
|
+
|
25
|
+
subject
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should run hooks' do
|
29
|
+
expect(runner).to receive(:hook) do |scope, world|
|
30
|
+
expect(scope).to eq :features
|
31
|
+
expect(world).to eq nil
|
32
|
+
end
|
33
|
+
|
34
|
+
subject
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should run reporter callbacks in correct order' do
|
38
|
+
expect(reporter).to receive(:invoke).exactly(4).times do |*args|
|
39
|
+
@scopes ||= []
|
40
|
+
@scopes << args.first
|
41
|
+
end
|
42
|
+
|
43
|
+
subject
|
44
|
+
|
45
|
+
expect(@scopes).to eq [:before_features, :start_features,
|
46
|
+
:end_features, :after_features]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Gurke::RunList do
|
4
|
+
let(:reporter) { Gurke::Reporters::NullReporter.new }
|
5
|
+
let(:runner) { double 'runner' }
|
6
|
+
let(:object) { double 'object' }
|
7
|
+
let(:list) { Gurke::RunList.new }
|
8
|
+
|
9
|
+
before do
|
10
|
+
list << object
|
11
|
+
allow(object).to receive(:run)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#run' do
|
15
|
+
subject { list.run runner, reporter }
|
16
|
+
|
17
|
+
it 'should run all objects' do
|
18
|
+
expect(object).to receive(:run).with(runner, reporter)
|
19
|
+
subject
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with additional args' do
|
23
|
+
subject { list.run runner, reporter, 0, :sym }
|
24
|
+
|
25
|
+
it 'should pass additional args' do
|
26
|
+
expect(object).to receive(:run).with(runner, reporter, 0, :sym)
|
27
|
+
subject
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/spec/gurke/scenario_spec.rb
CHANGED
@@ -9,7 +9,7 @@ describe Gurke::Scenario do
|
|
9
9
|
before do
|
10
10
|
allow(feature).to receive(:backgrounds).ordered.and_return(backgrounds)
|
11
11
|
allow(backgrounds).to receive(:run)
|
12
|
-
allow(runner).to receive(:hook){|_,_
|
12
|
+
allow(runner).to receive(:hook) {|_, _, &block| block.call }
|
13
13
|
end
|
14
14
|
|
15
15
|
let(:scenario) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gurke
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.dev.1.
|
4
|
+
version: 2.0.0.dev.1.b22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
@@ -106,6 +106,8 @@ files:
|
|
106
106
|
- lib/gurke/steps.rb
|
107
107
|
- lib/gurke/tag.rb
|
108
108
|
- lib/gurke/version.rb
|
109
|
+
- spec/gurke/feature_list_spec.rb
|
110
|
+
- spec/gurke/run_list_spec.rb
|
109
111
|
- spec/gurke/scenario_spec.rb
|
110
112
|
- spec/spec_helper.rb
|
111
113
|
homepage: https://github.com/jgraichen/gurke
|
@@ -140,5 +142,7 @@ test_files:
|
|
140
142
|
- features/gurke/step_specific_definitions.feature
|
141
143
|
- features/support/steps/cli_steps.rb
|
142
144
|
- features/support/steps/file_steps.rb
|
145
|
+
- spec/gurke/feature_list_spec.rb
|
146
|
+
- spec/gurke/run_list_spec.rb
|
143
147
|
- spec/gurke/scenario_spec.rb
|
144
148
|
- spec/spec_helper.rb
|