gherkin 2.3.0-x86-mingw32 → 2.3.1-x86-mingw32
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.
- data/VERSION +1 -1
- data/gherkin.gemspec +1 -1
- data/lib/gherkin/formatter/colors.rb +20 -20
- data/lib/gherkin/formatter/json_formatter.rb +6 -3
- data/lib/gherkin/formatter/model.rb +6 -6
- data/lib/gherkin/formatter/pretty_formatter.rb +19 -17
- data/lib/gherkin/formatter/step_printer.rb +3 -3
- data/spec/gherkin/formatter/model_spec.rb +13 -0
- data/spec/gherkin/formatter/pretty_formatter_spec.rb +33 -24
- data/spec/gherkin/formatter/step_printer_spec.rb +4 -4
- metadata +7 -7
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.1
|
data/gherkin.gemspec
CHANGED
@@ -54,5 +54,5 @@ Gem::Specification.new do |s|
|
|
54
54
|
s.add_development_dependency('rake', '~> 0.8.7')
|
55
55
|
s.add_development_dependency('awesome_print', '~> 0.2.1')
|
56
56
|
s.add_development_dependency('rspec', '~> 2.0.1')
|
57
|
-
s.add_development_dependency('cucumber', '~> 0.
|
57
|
+
s.add_development_dependency('cucumber', '~> 0.10.0')
|
58
58
|
end
|
@@ -10,28 +10,28 @@ module Gherkin
|
|
10
10
|
#
|
11
11
|
# The colours that you can change are:
|
12
12
|
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
13
|
+
# <tt>undefined</tt>:: defaults to <tt>yellow</tt>
|
14
|
+
# <tt>pending</tt>:: defaults to <tt>yellow</tt>
|
15
|
+
# <tt>pending_arg</tt>:: defaults to <tt>yellow,bold</tt>
|
16
|
+
# <tt>executing</tt>:: defaults to <tt>magenta</tt>
|
17
|
+
# <tt>executing_arg</tt>:: defaults to <tt>magenta,bold</tt>
|
18
|
+
# <tt>failed</tt>:: defaults to <tt>red</tt>
|
19
|
+
# <tt>failed_arg</tt>:: defaults to <tt>red,bold</tt>
|
20
|
+
# <tt>passed</tt>:: defaults to <tt>green</tt>
|
21
|
+
# <tt>passed_arg</tt>:: defaults to <tt>green,bold</tt>
|
22
|
+
# <tt>outline</tt>:: defaults to <tt>cyan</tt>
|
23
|
+
# <tt>outline_arg</tt>:: defaults to <tt>cyan,bold</tt>
|
24
|
+
# <tt>skipped</tt>:: defaults to <tt>cyan</tt>
|
25
|
+
# <tt>skipped_arg</tt>:: defaults to <tt>cyan,bold</tt>
|
26
|
+
# <tt>comment</tt>:: defaults to <tt>grey</tt>
|
27
|
+
# <tt>tag</tt>:: defaults to <tt>cyan</tt>
|
28
28
|
#
|
29
29
|
# For instance, if your shell has a black background and a green font (like the
|
30
30
|
# "Homebrew" settings for OS X' Terminal.app), you may want to override passed
|
31
31
|
# steps to be white instead of green. Examples:
|
32
32
|
#
|
33
33
|
# export GHERKIN_COLORS="passed=white"
|
34
|
-
# export GHERKIN_COLORS="passed=white,bold:
|
34
|
+
# export GHERKIN_COLORS="passed=white,bold:passed_arg=white,bold,underline"
|
35
35
|
#
|
36
36
|
# (If you're on Windows, use SET instead of export).
|
37
37
|
# To see what colours and effects are available, just run this in your shell:
|
@@ -43,7 +43,7 @@ module Gherkin
|
|
43
43
|
include Term::ANSIColor
|
44
44
|
|
45
45
|
ALIASES = Hash.new do |h,k|
|
46
|
-
if k.to_s =~ /(.*)
|
46
|
+
if k.to_s =~ /(.*)_arg/
|
47
47
|
h[$1] + ',bold'
|
48
48
|
end
|
49
49
|
end.merge({
|
@@ -66,13 +66,13 @@ module Gherkin
|
|
66
66
|
end
|
67
67
|
|
68
68
|
ALIASES.each do |method, color|
|
69
|
-
unless method =~ /.*
|
69
|
+
unless method =~ /.*_arg$/
|
70
70
|
code = <<-EOF
|
71
71
|
def #{method}(string=nil, &proc)
|
72
72
|
#{ALIASES[method].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method].split(",").length}
|
73
73
|
end
|
74
|
-
def #{method}
|
75
|
-
#{ALIASES[method+'
|
74
|
+
def #{method}_arg(string=nil, &proc)
|
75
|
+
#{ALIASES[method+'_arg'].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method+'_arg'].split(",").length}
|
76
76
|
end
|
77
77
|
EOF
|
78
78
|
eval(code)
|
@@ -27,6 +27,9 @@ module Gherkin
|
|
27
27
|
@gherkin_object = feature.to_hash
|
28
28
|
end
|
29
29
|
|
30
|
+
def steps(steps)
|
31
|
+
end
|
32
|
+
|
30
33
|
def background(background)
|
31
34
|
feature_elements << background.to_hash
|
32
35
|
end
|
@@ -44,7 +47,7 @@ module Gherkin
|
|
44
47
|
end
|
45
48
|
|
46
49
|
def step(step)
|
47
|
-
|
50
|
+
current_steps << step.to_hash
|
48
51
|
end
|
49
52
|
|
50
53
|
def match(match)
|
@@ -77,12 +80,12 @@ module Gherkin
|
|
77
80
|
feature_element['examples'] ||= []
|
78
81
|
end
|
79
82
|
|
80
|
-
def
|
83
|
+
def current_steps
|
81
84
|
feature_element['steps'] ||= []
|
82
85
|
end
|
83
86
|
|
84
87
|
def last_step
|
85
|
-
|
88
|
+
current_steps[-1]
|
86
89
|
end
|
87
90
|
|
88
91
|
def embeddings
|
@@ -129,12 +129,12 @@ module Gherkin
|
|
129
129
|
formatter.step(self)
|
130
130
|
end
|
131
131
|
|
132
|
-
def
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
132
|
+
def outline_args
|
133
|
+
offset = 0
|
134
|
+
name.scan(/<[^<]*>/).map do |val|
|
135
|
+
offset = name.index(val, offset)
|
136
|
+
Argument.new(offset, val)
|
137
|
+
end
|
138
138
|
end
|
139
139
|
|
140
140
|
def to_hash
|
@@ -61,23 +61,29 @@ module Gherkin
|
|
61
61
|
|
62
62
|
def step(step)
|
63
63
|
@step = step
|
64
|
+
@step_index += 1 if @step_index
|
64
65
|
match(Model::Match.new([], nil)) if @monochrome
|
65
66
|
end
|
66
67
|
|
67
68
|
def match(match)
|
68
|
-
|
69
|
+
@match = match
|
70
|
+
print_step('executing', @match.arguments, @match.location)
|
69
71
|
end
|
70
72
|
|
71
73
|
def result(result)
|
72
|
-
|
74
|
+
@io.write("\033[1A")
|
75
|
+
print_step(result.status, @match.arguments, @match.location)
|
73
76
|
end
|
74
77
|
|
75
|
-
def print_step(
|
78
|
+
def print_step(status, arguments, location)
|
79
|
+
text_format = format(status)
|
80
|
+
arg_format = arg_format(status)
|
81
|
+
|
76
82
|
print_comments(@step.comments, ' ')
|
77
83
|
@io.write(' ')
|
78
|
-
text_format.
|
84
|
+
@io.write(text_format.text(@step.keyword))
|
79
85
|
@step_printer.write_step(@io, text_format, arg_format, @step.name, arguments)
|
80
|
-
|
86
|
+
print_indented_step_location(location) if location
|
81
87
|
|
82
88
|
@io.puts
|
83
89
|
case @step.multiline_arg
|
@@ -89,8 +95,8 @@ module Gherkin
|
|
89
95
|
end
|
90
96
|
|
91
97
|
class MonochromeFormat
|
92
|
-
def
|
93
|
-
|
98
|
+
def text(text)
|
99
|
+
text
|
94
100
|
end
|
95
101
|
end
|
96
102
|
|
@@ -101,17 +107,13 @@ module Gherkin
|
|
101
107
|
@status = status
|
102
108
|
end
|
103
109
|
|
104
|
-
def
|
105
|
-
|
110
|
+
def text(text)
|
111
|
+
self.__send__(@status, text)
|
106
112
|
end
|
107
113
|
end
|
108
114
|
|
109
|
-
def
|
110
|
-
format(
|
111
|
-
end
|
112
|
-
|
113
|
-
def arg_format(step)
|
114
|
-
format(step.status + '_param')
|
115
|
+
def arg_format(key)
|
116
|
+
format("#{key}_arg")
|
115
117
|
end
|
116
118
|
|
117
119
|
def format(key)
|
@@ -216,8 +218,8 @@ module Gherkin
|
|
216
218
|
' ' * indent + ' ' + comments("# #{@uri}:#{line}")
|
217
219
|
end
|
218
220
|
|
219
|
-
def
|
220
|
-
indent = @max_step_length - @step_lengths[@step_index
|
221
|
+
def print_indented_step_location(location)
|
222
|
+
indent = @max_step_length - @step_lengths[@step_index]
|
221
223
|
return if location.nil?
|
222
224
|
@io.write(' ' * indent + ' ' + comments("# #{location}"))
|
223
225
|
end
|
@@ -6,11 +6,11 @@ module Gherkin
|
|
6
6
|
|
7
7
|
text_start = 0
|
8
8
|
arguments.each do |arg|
|
9
|
-
text_format.
|
10
|
-
arg_format.
|
9
|
+
io.write(text_format.text(unpacked_step_name[text_start..arg.offset-1].pack("U*"))) unless arg.offset == 0
|
10
|
+
io.write(arg_format.text(arg.val))
|
11
11
|
text_start = arg.offset + arg.val.unpack("U*").length
|
12
12
|
end
|
13
|
-
text_format.
|
13
|
+
io.write(text_format.text(unpacked_step_name[text_start..-1].pack("U*"))) unless text_start == unpacked_step_name.length
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'gherkin/formatter/model'
|
3
|
+
require 'gherkin/formatter/argument'
|
3
4
|
|
4
5
|
module Gherkin
|
5
6
|
module Formatter
|
@@ -10,6 +11,18 @@ module Gherkin
|
|
10
11
|
tags.to_a.uniq.length.should == 2
|
11
12
|
end
|
12
13
|
end
|
14
|
+
|
15
|
+
describe Step do
|
16
|
+
it "should provide arguments for outline tokens" do
|
17
|
+
step = Step.new([], 'Given ', "I have <number> cukes in <whose> belly", 10)
|
18
|
+
step.outline_args.map{|arg| [arg.offset, arg.val]}.should == [[7, "<number>"], [25, "<whose>"]]
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should provide no arguments when there are no outline tokens" do
|
22
|
+
step = Step.new([], 'Given ', "I have 33 cukes in my belly", 10)
|
23
|
+
step.outline_args.to_a.should == []
|
24
|
+
end
|
25
|
+
end
|
13
26
|
end
|
14
27
|
end
|
15
28
|
end
|
@@ -30,12 +30,12 @@ module Gherkin
|
|
30
30
|
|
31
31
|
before do
|
32
32
|
@io = StringIO.new
|
33
|
-
@
|
33
|
+
@f = Gherkin::Formatter::PrettyFormatter.new(@io, false)
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should print comments when scenario is longer" do
|
37
|
-
@
|
38
|
-
@
|
37
|
+
@f.uri("features/foo.feature")
|
38
|
+
@f.feature(Model::Feature.new([], [], "Feature", "Hello", "World", 1))
|
39
39
|
|
40
40
|
step1 = Model::Step.new([], "Given ", "some stuff", 5)
|
41
41
|
match1 = Model::Match.new([], "features/step_definitions/bar.rb:56")
|
@@ -45,44 +45,47 @@ module Gherkin
|
|
45
45
|
match2 = Model::Match.new([], "features/step_definitions/bar.rb:96")
|
46
46
|
result2 = Model::Result.new('passed', nil)
|
47
47
|
|
48
|
-
@
|
49
|
-
@
|
48
|
+
@f.steps([step1, step2])
|
49
|
+
@f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4))
|
50
50
|
|
51
|
-
@
|
52
|
-
@
|
53
|
-
@
|
51
|
+
@f.step(step1)
|
52
|
+
@f.match(match1)
|
53
|
+
@f.result(result1)
|
54
54
|
|
55
|
-
@
|
56
|
-
@
|
57
|
-
@
|
55
|
+
@f.step(step2)
|
56
|
+
@f.match(match2)
|
57
|
+
@f.result(result2)
|
58
58
|
|
59
59
|
assert_io(%{Feature: Hello
|
60
60
|
World
|
61
61
|
|
62
62
|
Scenario: The scenario #{grey('# features/foo.feature:4')}
|
63
63
|
#{magenta('Given ')}#{magenta('some stuff')} #{grey('# features/step_definitions/bar.rb:56')}
|
64
|
+
\033[1A #{green('Given ')}#{green('some stuff')} #{grey('# features/step_definitions/bar.rb:56')}
|
64
65
|
#{magenta('When ')}#{magenta('foo')} #{grey('# features/step_definitions/bar.rb:96')}
|
66
|
+
\033[1A #{green('When ')}#{green('foo')} #{grey('# features/step_definitions/bar.rb:96')}
|
65
67
|
})
|
66
68
|
end
|
67
69
|
|
68
70
|
it "should print comments when step is longer" do
|
69
|
-
@
|
70
|
-
@
|
71
|
+
@f.uri("features/foo.feature")
|
72
|
+
@f.feature(Model::Feature.new([], [], "Feature", "Hello", "World", 1))
|
71
73
|
step = Model::Step.new([], "Given ", "some stuff that is longer", 5)
|
72
74
|
match = Model::Match.new([], "features/step_definitions/bar.rb:56")
|
73
75
|
result = Model::Result.new('passed', nil)
|
74
76
|
|
75
|
-
@
|
76
|
-
@
|
77
|
-
@
|
78
|
-
@
|
79
|
-
@
|
77
|
+
@f.steps([step])
|
78
|
+
@f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4))
|
79
|
+
@f.step(step)
|
80
|
+
@f.match(match)
|
81
|
+
@f.result(result)
|
80
82
|
|
81
83
|
assert_io(%{Feature: Hello
|
82
84
|
World
|
83
85
|
|
84
86
|
Scenario: The scenario #{grey('# features/foo.feature:4')}
|
85
87
|
#{magenta('Given ')}#{magenta('some stuff that is longer')} #{grey('# features/step_definitions/bar.rb:56')}
|
88
|
+
\033[1A #{green('Given ')}#{green('some stuff that is longer')} #{grey('# features/step_definitions/bar.rb:56')}
|
86
89
|
})
|
87
90
|
end
|
88
91
|
|
@@ -91,16 +94,22 @@ module Gherkin
|
|
91
94
|
match = Model::Match.new([Gherkin::Formatter::Argument.new(7, '999')], nil)
|
92
95
|
result = Model::Result.new('passed', nil)
|
93
96
|
|
94
|
-
@
|
95
|
-
@
|
96
|
-
@
|
97
|
-
@
|
97
|
+
@f.steps([step])
|
98
|
+
@f.step(step)
|
99
|
+
@f.match(match)
|
100
|
+
@f.result(result)
|
98
101
|
|
99
102
|
if defined?(JRUBY_VERSION)
|
100
103
|
# Not terribly readable. The result on Java is different because JANSI uses semicolons when there are several codes.
|
101
|
-
assert_io(
|
104
|
+
assert_io(
|
105
|
+
" \e[35mGiven \e[0m\e[35mI have \e[0m\e[35;1m999\e[0m\e[35m cukes in my belly\e[0m\n" +
|
106
|
+
"\033[1A \e[32mGiven \e[0m\e[32mI have \e[0m\e[32;1m999\e[0m\e[32m cukes in my belly\e[0m\n"
|
107
|
+
)
|
102
108
|
else
|
103
|
-
assert_io(
|
109
|
+
assert_io(
|
110
|
+
" #{magenta('Given ')}#{magenta('I have ')}#{magenta(bold('999'))}#{magenta(' cukes in my belly')}\n" +
|
111
|
+
"\033[1A #{green('Given ')}#{green('I have ')}#{green(bold('999'))}#{green(' cukes in my belly')}\n"
|
112
|
+
)
|
104
113
|
end
|
105
114
|
end
|
106
115
|
|
@@ -7,14 +7,14 @@ require 'stringio'
|
|
7
7
|
module Gherkin
|
8
8
|
module Formatter
|
9
9
|
class ParenthesisFormat
|
10
|
-
def
|
11
|
-
|
10
|
+
def text(text)
|
11
|
+
"(#{text})"
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
class BracketFormat
|
16
|
-
def
|
17
|
-
|
16
|
+
def text(text)
|
17
|
+
"[#{text}]"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 2
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 2.3.
|
8
|
+
- 1
|
9
|
+
version: 2.3.1
|
10
10
|
platform: x86-mingw32
|
11
11
|
authors:
|
12
12
|
- Mike Sassak
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-11-
|
19
|
+
date: 2010-11-13 00:00:00 +00:00
|
20
20
|
default_executable: gherkin
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -104,9 +104,9 @@ dependencies:
|
|
104
104
|
- !ruby/object:Gem::Version
|
105
105
|
segments:
|
106
106
|
- 0
|
107
|
-
-
|
108
|
-
-
|
109
|
-
version: 0.
|
107
|
+
- 10
|
108
|
+
- 0
|
109
|
+
version: 0.10.0
|
110
110
|
type: :development
|
111
111
|
version_requirements: *id006
|
112
112
|
description: A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.
|
@@ -367,7 +367,7 @@ rubyforge_project:
|
|
367
367
|
rubygems_version: 1.3.7
|
368
368
|
signing_key:
|
369
369
|
specification_version: 3
|
370
|
-
summary: gherkin-2.3.
|
370
|
+
summary: gherkin-2.3.1
|
371
371
|
test_files:
|
372
372
|
- features/escaped_pipes.feature
|
373
373
|
- features/feature_parser.feature
|