aslakhellesoy-cucumber 0.1.99.5 → 0.1.99.6
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/lib/cucumber/formatter/unicode.rb +35 -0
- data/lib/cucumber/parser/feature.rb +25 -24
- data/lib/cucumber/parser/feature.tt +3 -3
- data/lib/cucumber/parser/treetop_ext.rb +2 -6
- data/lib/cucumber/version.rb +1 -1
- data/spec/cucumber/step_mother_spec.rb +49 -0
- data/spec/cucumber/treetop_parser/scenario_outline.feature +1 -1
- metadata +4 -12
@@ -0,0 +1,35 @@
|
|
1
|
+
# Require this file if you need Unicode support.
|
2
|
+
require 'cucumber/platform'
|
3
|
+
require 'cucumber/formatter/ansicolor'
|
4
|
+
|
5
|
+
$KCODE='u' unless Cucumber::RUBY_1_9
|
6
|
+
|
7
|
+
if Cucumber::WINDOWS_MRI && `chcp` =~ /(\d+)/
|
8
|
+
codepage = $1.to_i
|
9
|
+
codepages = (1251..1252)
|
10
|
+
|
11
|
+
if codepages.include?(codepage)
|
12
|
+
Cucumber::CODEPAGE = "cp#{codepage}"
|
13
|
+
|
14
|
+
require 'iconv'
|
15
|
+
module Kernel
|
16
|
+
alias cucumber_print print
|
17
|
+
def print(*a)
|
18
|
+
begin
|
19
|
+
cucumber_print(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a))
|
20
|
+
rescue Iconv::IllegalSequence
|
21
|
+
cucumber_print(*a)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
alias cucumber_puts puts
|
26
|
+
def puts(*a)
|
27
|
+
begin
|
28
|
+
cucumber_puts(*Iconv.iconv(Cucumber::CODEPAGE, "UTF-8", *a))
|
29
|
+
rescue Iconv::IllegalSequence
|
30
|
+
cucumber_puts(*a)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -741,6 +741,10 @@ module Cucumber
|
|
741
741
|
def multi
|
742
742
|
elements[5]
|
743
743
|
end
|
744
|
+
|
745
|
+
def white
|
746
|
+
elements[6]
|
747
|
+
end
|
744
748
|
end
|
745
749
|
|
746
750
|
module Step1
|
@@ -828,6 +832,10 @@ module Cucumber
|
|
828
832
|
r11 = SyntaxNode.new(input, index...index)
|
829
833
|
end
|
830
834
|
s0 << r11
|
835
|
+
if r11
|
836
|
+
r13 = _nt_white
|
837
|
+
s0 << r13
|
838
|
+
end
|
831
839
|
end
|
832
840
|
end
|
833
841
|
end
|
@@ -870,13 +878,8 @@ module Cucumber
|
|
870
878
|
break
|
871
879
|
end
|
872
880
|
end
|
873
|
-
|
874
|
-
|
875
|
-
r0 = nil
|
876
|
-
else
|
877
|
-
r0 = SyntaxNode.new(input, i0...index, s0)
|
878
|
-
r0.extend(ExamplesSections0)
|
879
|
-
end
|
881
|
+
r0 = SyntaxNode.new(input, i0...index, s0)
|
882
|
+
r0.extend(ExamplesSections0)
|
880
883
|
|
881
884
|
node_cache[:examples_sections][start_index] = r0
|
882
885
|
|
@@ -892,9 +895,17 @@ module Cucumber
|
|
892
895
|
elements[3]
|
893
896
|
end
|
894
897
|
|
898
|
+
def eol
|
899
|
+
elements[4]
|
900
|
+
end
|
901
|
+
|
895
902
|
def table
|
896
903
|
elements[5]
|
897
904
|
end
|
905
|
+
|
906
|
+
def white
|
907
|
+
elements[6]
|
908
|
+
end
|
898
909
|
end
|
899
910
|
|
900
911
|
module Examples1
|
@@ -947,25 +958,15 @@ module Cucumber
|
|
947
958
|
end
|
948
959
|
s0 << r6
|
949
960
|
if r6
|
950
|
-
|
951
|
-
loop do
|
952
|
-
r9 = _nt_eol
|
953
|
-
if r9
|
954
|
-
s8 << r9
|
955
|
-
else
|
956
|
-
break
|
957
|
-
end
|
958
|
-
end
|
959
|
-
if s8.empty?
|
960
|
-
self.index = i8
|
961
|
-
r8 = nil
|
962
|
-
else
|
963
|
-
r8 = SyntaxNode.new(input, i8...index, s8)
|
964
|
-
end
|
961
|
+
r8 = _nt_eol
|
965
962
|
s0 << r8
|
966
963
|
if r8
|
967
|
-
|
968
|
-
s0 <<
|
964
|
+
r9 = _nt_table
|
965
|
+
s0 << r9
|
966
|
+
if r9
|
967
|
+
r10 = _nt_white
|
968
|
+
s0 << r10
|
969
|
+
end
|
969
970
|
end
|
970
971
|
end
|
971
972
|
end
|
@@ -88,7 +88,7 @@ module Cucumber
|
|
88
88
|
end
|
89
89
|
|
90
90
|
rule step
|
91
|
-
space* step_keyword space* name:line_to_eol (eol+ / eof) multi:multiline_arg? {
|
91
|
+
space* step_keyword space* name:line_to_eol (eol+ / eof) multi:multiline_arg? white {
|
92
92
|
def build
|
93
93
|
if multi.respond_to?(:build)
|
94
94
|
Ast::Step.new(step_keyword.line, step_keyword.text_value, name.text_value, multi.build)
|
@@ -100,7 +100,7 @@ module Cucumber
|
|
100
100
|
end
|
101
101
|
|
102
102
|
rule examples_sections
|
103
|
-
examples
|
103
|
+
examples* {
|
104
104
|
def build
|
105
105
|
elements.map{|e| e.build}
|
106
106
|
end
|
@@ -108,7 +108,7 @@ module Cucumber
|
|
108
108
|
end
|
109
109
|
|
110
110
|
rule examples
|
111
|
-
space* examples_keyword space* name:line_to_eol? eol
|
111
|
+
space* examples_keyword space* name:line_to_eol? eol table white {
|
112
112
|
def build
|
113
113
|
[examples_keyword.line, examples_keyword.text_value, name.text_value, table.raw]
|
114
114
|
end
|
@@ -28,13 +28,9 @@ module Cucumber
|
|
28
28
|
class SyntaxError < StandardError
|
29
29
|
def initialize(parser, file, line_offset)
|
30
30
|
tf = parser.terminal_failures
|
31
|
-
expected = tf.size == 1 ? tf[0].expected_string.inspect : "one of #{tf.map{|f| f.expected_string
|
32
|
-
after = parser.input[parser.index...parser.failure_index]
|
33
|
-
found = parser.input[parser.failure_index..parser.failure_index]
|
34
|
-
|
31
|
+
expected = tf.size == 1 ? tf[0].expected_string.inspect : "one of #{tf.map{|f| f.expected_string}.uniq*', '}"
|
35
32
|
line = parser.failure_line + line_offset
|
36
|
-
message = "#{file}:#{line}:#{parser.failure_column}: "
|
37
|
-
"Parse error, expected #{expected}. After #{after.inspect}. Found: #{found.inspect}"
|
33
|
+
message = "#{file}:#{line}:#{parser.failure_column}: Parse error, expected #{expected}."
|
38
34
|
super(message)
|
39
35
|
end
|
40
36
|
end
|
data/lib/cucumber/version.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
require 'cucumber/step_mother'
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
describe StepMother do
|
7
|
+
before do
|
8
|
+
@step_mother = Object.new
|
9
|
+
@step_mother.extend(StepMother)
|
10
|
+
@visitor = mock('Visitor')
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should format step names" do
|
14
|
+
@step_mother.Given(/it (.*) in (.*)/) do |what, month|
|
15
|
+
end
|
16
|
+
@step_mother.Given(/nope something else/) do |what, month|
|
17
|
+
end
|
18
|
+
format = @step_mother.step_definition("it snows in april").format_args("it snows in april", "[%s]")
|
19
|
+
format.should == "it [snows] in [april]"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should raise Ambiguous error when multiple step definitions match" do
|
23
|
+
@step_mother.Given(/Three (.*) mice/) {|disability|}
|
24
|
+
@step_mother.Given(/Three blind (.*)/) {|animal|}
|
25
|
+
|
26
|
+
lambda do
|
27
|
+
@step_mother.step_definition("Three blind mice")
|
28
|
+
end.should raise_error(StepMother::Ambiguous, %{Ambiguous match of "Three blind mice":
|
29
|
+
|
30
|
+
spec/cucumber/step_mother_spec.rb:23:in `/Three (.*) mice/'
|
31
|
+
spec/cucumber/step_mother_spec.rb:24:in `/Three blind (.*)/'
|
32
|
+
|
33
|
+
})
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should raise Undefined error when no step definitions match" do
|
37
|
+
lambda do
|
38
|
+
@step_mother.step_definition("Three blind mice")
|
39
|
+
end.should raise_error(StepMother::Undefined)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should raise Redundant error when same regexp is registered twice" do
|
43
|
+
@step_mother.Given(/Three (.*) mice/) {|disability|}
|
44
|
+
lambda do
|
45
|
+
@step_mother.Given(/Three (.*) mice/) {|disability|}
|
46
|
+
end.should raise_error(StepMother::Redundant)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -4,7 +4,7 @@ Scenario Outline: Joe fails to login
|
|
4
4
|
Given I login as Joe without the '<Privilege>' privilege
|
5
5
|
When I <Request Method> /admin/<Path>
|
6
6
|
Then I should see the text "Sorry Joe, you're not allowed to see <Path>"
|
7
|
-
|
7
|
+
|
8
8
|
Examples:
|
9
9
|
| Privilege | Request Method | Path |
|
10
10
|
| user | GET | reports |
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aslakhellesoy-cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.99.
|
4
|
+
version: 0.1.99.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Aslak Helles\xC3\xB8y"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-01-
|
12
|
+
date: 2009-01-26 00:00:00 -08:00
|
13
13
|
default_executable: cucumber
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -251,12 +251,7 @@ files:
|
|
251
251
|
- lib/cucumber/formatter/profile.rb
|
252
252
|
- lib/cucumber/formatter/progress.rb
|
253
253
|
- lib/cucumber/formatter/rerun.rb
|
254
|
-
- lib/cucumber/
|
255
|
-
- lib/cucumber/formatters/cucumber.css
|
256
|
-
- lib/cucumber/formatters/cucumber.js
|
257
|
-
- lib/cucumber/formatters/html_formatter.rb
|
258
|
-
- lib/cucumber/formatters/jquery.js
|
259
|
-
- lib/cucumber/formatters/pretty_formatter.rb
|
254
|
+
- lib/cucumber/formatter/unicode.rb
|
260
255
|
- lib/cucumber/formatters/unicode.rb
|
261
256
|
- lib/cucumber/jbehave.rb
|
262
257
|
- lib/cucumber/languages.yml
|
@@ -274,7 +269,6 @@ files:
|
|
274
269
|
- lib/cucumber/rake/task.rb
|
275
270
|
- lib/cucumber/step_definition.rb
|
276
271
|
- lib/cucumber/step_mother.rb
|
277
|
-
- lib/cucumber/treetop_parser/feature_fi.rb
|
278
272
|
- lib/cucumber/version.rb
|
279
273
|
- pretty.txt
|
280
274
|
- rails_generators/cucumber/USAGE
|
@@ -305,8 +299,6 @@ files:
|
|
305
299
|
- spec/cucumber/formatter/html/index.html
|
306
300
|
- spec/cucumber/formatter/html/jquery-1.3.min.js
|
307
301
|
- spec/cucumber/formatter/html/jquery.uitableedit.js
|
308
|
-
- spec/cucumber/formatters/autotest_formatter_spec.rb
|
309
|
-
- spec/cucumber/formatters/features.html
|
310
302
|
- spec/cucumber/formatters/profile_formatter_spec.rb
|
311
303
|
- spec/cucumber/parser/feature_parser_spec.rb
|
312
304
|
- spec/cucumber/parser/table_parser_spec.rb
|
@@ -315,7 +307,7 @@ files:
|
|
315
307
|
- spec/cucumber/rails/world_spec.rb
|
316
308
|
- spec/cucumber/sell_cucumbers.feature
|
317
309
|
- spec/cucumber/step_definition_spec.rb
|
318
|
-
- spec/cucumber/
|
310
|
+
- spec/cucumber/step_mother_spec.rb
|
319
311
|
- spec/cucumber/treetop_parser/empty_feature.feature
|
320
312
|
- spec/cucumber/treetop_parser/empty_scenario.feature
|
321
313
|
- spec/cucumber/treetop_parser/empty_scenario_outline.feature
|