gherkin 2.5.4-java → 2.6.0-java

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.
@@ -1,4 +1,6 @@
1
- {
1
+ {
2
+ "id": "feature-text",
3
+ "uri": "some/nice.feature",
2
4
  "name": "Feature Text",
3
5
  "keyword": "Feature",
4
6
  "description": "In order to test multiline forms",
@@ -20,6 +22,7 @@
20
22
  ]
21
23
  },
22
24
  { "type": "scenario_outline",
25
+ "id": "feature-text/a-scenario-outline",
23
26
  "keyword": "Scenario Outline",
24
27
  "name": "An Scenario Outline",
25
28
  "description": "",
@@ -36,6 +39,7 @@
36
39
  ],
37
40
  "examples": [
38
41
  {
42
+ "id": "feature-text/a-scenario-outline/sweet-example",
39
43
  "name": "Sweet Example",
40
44
  "keyword": "Examples",
41
45
  "description": "",
@@ -52,6 +56,7 @@
52
56
  ]
53
57
  },
54
58
  { "type" : "scenario",
59
+ "id": "feature-text/reading-a-scenario",
55
60
  "keyword": "Scenario",
56
61
  "name" : "Reading a Scenario",
57
62
  "description": "",
@@ -67,6 +72,7 @@
67
72
  ]
68
73
  },
69
74
  { "type" : "scenario",
75
+ "id": "feature-text/reading-a-second-scenario",
70
76
  "keyword": "Scenario",
71
77
  "name" : "Reading a second scenario",
72
78
  "description": "With two lines of text",
@@ -111,6 +117,7 @@
111
117
  ]
112
118
  },
113
119
  { "type" : "scenario",
120
+ "id": "feature-text/hammerzeit",
114
121
  "keyword": "Scenario",
115
122
  "name" : "Hammerzeit",
116
123
  "description": "",
@@ -10,10 +10,10 @@ module Gherkin
10
10
  io = StringIO.new
11
11
  f = JSONFormatter.new(io)
12
12
  f.uri("f.feature")
13
- f.feature(Model::Feature.new([], [], "Feature", "f", "", 1))
14
- f.scenario(Model::Scenario.new([], [], "Feature", "f", "", 2))
15
- f.step(Model::Step.new([], "Given ", "g", 3))
16
- f.step(Model::Step.new([], "When ", "w", 4))
13
+ f.feature(Model::Feature.new([], [], "Feature", "ff", "", 1, "ff"))
14
+ f.scenario(Model::Scenario.new([], [], "Scenario", "ss", "", 2, "ff/ss"))
15
+ f.step(Model::Step.new([], "Given ", "g", 3, nil, nil))
16
+ f.step(Model::Step.new([], "When ", "w", 4, nil, nil))
17
17
 
18
18
  f.match(Model::Match.new([], "def.rb:33"))
19
19
  f.result(Model::Result.new(:passed, 1, nil))
@@ -22,49 +22,55 @@ module Gherkin
22
22
  f.result(Model::Result.new(:passed, 1, nil))
23
23
 
24
24
  f.eof
25
+ f.close
25
26
 
26
27
  expected = %{
27
- {
28
- "keyword": "Feature",
29
- "name": "f",
30
- "line": 1,
31
- "description": "",
32
- "elements": [
33
- {
34
- "keyword": "Feature",
35
- "name": "f",
36
- "line": 2,
37
- "description": "",
38
- "type": "scenario",
39
- "steps": [
40
- {
41
- "keyword": "Given ",
42
- "name": "g",
43
- "line": 3,
44
- "match": {
45
- "location": "def.rb:33"
28
+ [
29
+ {
30
+ "id": "ff",
31
+ "uri": "f.feature",
32
+ "keyword": "Feature",
33
+ "name": "ff",
34
+ "line": 1,
35
+ "description": "",
36
+ "elements": [
37
+ {
38
+ "id": "ff/ss",
39
+ "keyword": "Scenario",
40
+ "name": "ss",
41
+ "line": 2,
42
+ "description": "",
43
+ "type": "scenario",
44
+ "steps": [
45
+ {
46
+ "keyword": "Given ",
47
+ "name": "g",
48
+ "line": 3,
49
+ "match": {
50
+ "location": "def.rb:33"
51
+ },
52
+ "result": {
53
+ "status": "passed",
54
+ "duration": 1
55
+ }
46
56
  },
47
- "result": {
48
- "status": "passed",
49
- "duration": 1
57
+ {
58
+ "keyword": "When ",
59
+ "name": "w",
60
+ "line": 4,
61
+ "match": {
62
+ "location": "def.rb:44"
63
+ },
64
+ "result": {
65
+ "status": "passed",
66
+ "duration": 1
67
+ }
50
68
  }
51
- },
52
- {
53
- "keyword": "When ",
54
- "name": "w",
55
- "line": 4,
56
- "match": {
57
- "location": "def.rb:44"
58
- },
59
- "result": {
60
- "status": "passed",
61
- "duration": 1
62
- }
63
- }
64
- ]
65
- }
66
- ]
67
- }
69
+ ]
70
+ }
71
+ ]
72
+ }
73
+ ]
68
74
  }
69
75
 
70
76
  JSON.parse(expected).should == JSON.parse(io.string)
@@ -14,12 +14,12 @@ module Gherkin
14
14
 
15
15
  describe Step do
16
16
  it "should provide arguments for outline tokens" do
17
- step = Step.new([], 'Given ', "I have <number> cukes in <whose> belly", 10)
17
+ step = Step.new([], 'Given ', "I have <number> cukes in <whose> belly", 10, nil, nil)
18
18
  step.outline_args.map{|arg| [arg.offset, arg.val]}.should == [[7, "<number>"], [25, "<whose>"]]
19
19
  end
20
20
 
21
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)
22
+ step = Step.new([], 'Given ', "I have 33 cukes in my belly", 10, nil, nil)
23
23
  step.outline_args.to_a.should == []
24
24
  end
25
25
  end
@@ -36,11 +36,11 @@ module Gherkin
36
36
 
37
37
  it "should print comments when scenario is longer" do
38
38
  @f.uri("features/foo.feature")
39
- @f.feature(Model::Feature.new([], [], "Feature", "Hello", "World", 1))
39
+ @f.feature(Model::Feature.new([], [], "Feature", "Hello", "World", 1, "hello"))
40
40
 
41
- @f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4))
42
- @f.step(Model::Step.new([], "Given ", "some stuff", 5))
43
- @f.step(Model::Step.new([], "When ", "foo", 6))
41
+ @f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4, "the-scenario"))
42
+ @f.step(Model::Step.new([], "Given ", "some stuff", 5, nil, nil))
43
+ @f.step(Model::Step.new([], "When ", "foo", 6, nil, nil))
44
44
 
45
45
  @f.match(Model::Match.new([], "features/step_definitions/bar.rb:56"))
46
46
  @f.result(Model::Result.new('passed', 22, nil))
@@ -61,12 +61,12 @@ module Gherkin
61
61
 
62
62
  it "should print comments when step is longer" do
63
63
  @f.uri("features/foo.feature")
64
- @f.feature(Model::Feature.new([], [], "Feature", "Hello", "World", 1))
65
- step = Model::Step.new([], "Given ", "some stuff that is longer", 5)
64
+ @f.feature(Model::Feature.new([], [], "Feature", "Hello", "World", 1, "hello"))
65
+ step = Model::Step.new([], "Given ", "some stuff that is longer", 5, nil, nil)
66
66
  match = Model::Match.new([], "features/step_definitions/bar.rb:56")
67
67
  result = Model::Result.new('passed', 0, nil)
68
68
 
69
- @f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4))
69
+ @f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4, "the-scenario"))
70
70
  @f.step(step)
71
71
  @f.match(match)
72
72
  @f.result(result)
@@ -82,8 +82,8 @@ module Gherkin
82
82
 
83
83
  it "should highlight arguments for regular steps" do
84
84
  @f.uri("foo.feature")
85
- @f.scenario(Model::Scenario.new([], [], "Scenario", "Lots of cukes", "", 3))
86
- @f.step(Model::Step.new([], "Given ", "I have 999 cukes in my belly", 3))
85
+ @f.scenario(Model::Scenario.new([], [], "Scenario", "Lots of cukes", "", 3, "lots-of-cukes"))
86
+ @f.step(Model::Step.new([], "Given ", "I have 999 cukes in my belly", 3, nil, nil))
87
87
  @f.match(Model::Match.new([Gherkin::Formatter::Argument.new(7, '999')], nil))
88
88
  @f.result(Model::Result.new('passed', 6, nil))
89
89
 
@@ -150,7 +150,7 @@ Feature: Feature Description
150
150
  it "should escape backslashes and pipes" do
151
151
  io = StringIO.new
152
152
  f = Gherkin::Formatter::PrettyFormatter.new(io, true, false)
153
- f.__send__(:table, [Gherkin::Formatter::Model::Row.new([], ['|', '\\'], 1)])
153
+ f.__send__(:table, [Gherkin::Formatter::Model::DataTableRow.new([], ['|', '\\'], 1)])
154
154
  io.string.should == ' | \\| | \\\\ |' + "\n"
155
155
  end
156
156
  end
@@ -1,4 +1,5 @@
1
1
  #encoding: utf-8
2
+ require 'stringio'
2
3
  require 'spec_helper'
3
4
  require 'gherkin/json_parser'
4
5
  require 'gherkin/formatter/json_formatter'
@@ -10,100 +11,115 @@ module Gherkin
10
11
  io = StringIO.new
11
12
  f = Formatter::JSONFormatter.new(io)
12
13
  p = JSONParser.new(f, f)
13
- p.parse(json, 'unknown.json', 0)
14
+ p.parse(json)
15
+ f.close
14
16
  expected = JSON.parse(json)
15
17
  actual = JSON.parse(io.string)
16
18
  actual.should == expected
17
19
  end
18
20
 
19
21
  it "should parse a barely empty feature" do
20
- check_json(%{{
21
- "keyword": "Feature",
22
- "name": "One",
23
- "description": "",
24
- "line" : 3
25
- }})
22
+ check_json(%{[
23
+ {
24
+ "id": "one",
25
+ "uri": "test.feature",
26
+ "keyword": "Feature",
27
+ "name": "One",
28
+ "description": "",
29
+ "line" : 3
30
+ }
31
+ ]})
26
32
  end
27
33
 
28
34
  it "should parse feature with tags and one scenario" do
29
- check_json(%{{
30
- "tags": [
31
- {
32
- "name": "@foo",
33
- "line": 22
34
- }
35
- ],
36
- "keyword": "Feature",
37
- "name": "One",
38
- "description": "",
39
- "line": 3,
40
- "elements": [
41
- {
42
- "type": "scenario",
43
- "steps": [
44
- {
45
- "name": "Hello",
46
- "rows": [
47
- {
48
- "cells": ["foo", "bar"]
49
- }
50
- ]
51
- }
52
- ]
53
- }
54
- ]
55
- }})
35
+ check_json(%{[
36
+ {
37
+ "id": "one",
38
+ "uri": "test.feature",
39
+ "tags": [
40
+ {
41
+ "name": "@foo",
42
+ "line": 22
43
+ }
44
+ ],
45
+ "keyword": "Feature",
46
+ "name": "One",
47
+ "description": "",
48
+ "line": 3,
49
+ "elements": [
50
+ {
51
+ "id": "one/two",
52
+ "type": "scenario",
53
+ "steps": [
54
+ {
55
+ "name": "Hello",
56
+ "rows": [
57
+ {
58
+ "cells": ["foo", "bar"]
59
+ }
60
+ ]
61
+ }
62
+ ]
63
+ }
64
+ ]
65
+ }
66
+ ]})
56
67
  end
57
68
 
58
69
  it "should parse feature with match, result and embedding" do
59
- check_json(%{{
60
- "tags": [
61
- {
62
- "name": "@foo",
63
- "line": 22
64
- }
65
- ],
66
- "keyword": "Feature",
67
- "name": "One",
68
- "description": "",
69
- "line": 3,
70
- "elements": [
71
- {
72
- "type": "scenario",
73
- "steps": [
74
- {
75
- "keyword": "Given ",
76
- "name": "a passing step",
77
- "line": 6,
78
- "match": {
79
- "arguments": [
70
+ check_json(%{[
71
+ {
72
+ "id": "one",
73
+ "uri": "test.feature",
74
+ "tags": [
75
+ {
76
+ "name": "@foo",
77
+ "line": 22
78
+ }
79
+ ],
80
+ "keyword": "Feature",
81
+ "name": "One",
82
+ "description": "",
83
+ "line": 3,
84
+ "elements": [
85
+ {
86
+ "id": "one/a-scenario",
87
+ "type": "scenario",
88
+ "steps": [
89
+ {
90
+ "keyword": "Given ",
91
+ "name": "a passing step",
92
+ "line": 6,
93
+ "match": {
94
+ "arguments": [
95
+ {
96
+ "offset": 22,
97
+ "val": "cukes"
98
+ }
99
+ ],
100
+ "location": "features/step_definitions/steps.rb:1"
101
+ },
102
+ "result": {
103
+ "status": "failed",
104
+ "error_message": "You suck",
105
+ "duration": -1
106
+ },
107
+ "embeddings": [
80
108
  {
81
- "offset": 22,
82
- "val": "cukes"
109
+ "mime_type": "text/plain",
110
+ "data": "Tm8sIEknbSBub3QgaW50ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGEgcG93ZXJmdWwgYnJhaW4uIEFsbCBJJ20gYWZ0ZXIgaXMganVzdCBhIG1lZGlvY3JlIGJyYWluLCBzb21ldGhpbmcgbGlrZSB0aGUgUHJlc2lkZW50IG9mIHRoZSBBbWVyaWNhbiBUZWxlcGhvbmUgYW5kIFRlbGVncmFwaCBDb21wYW55Lg=="
83
111
  }
84
- ],
85
- "location": "features/step_definitions/steps.rb:1"
86
- },
87
- "result": {
88
- "status": "failed",
89
- "error_message": "You suck",
90
- "duration": -1
91
- },
92
- "embeddings": [
93
- {
94
- "mime_type": "text/plain",
95
- "data": "Tm8sIEknbSBub3QgaW50ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGEgcG93ZXJmdWwgYnJhaW4uIEFsbCBJJ20gYWZ0ZXIgaXMganVzdCBhIG1lZGlvY3JlIGJyYWluLCBzb21ldGhpbmcgbGlrZSB0aGUgUHJlc2lkZW50IG9mIHRoZSBBbWVyaWNhbiBUZWxlcGhvbmUgYW5kIFRlbGVncmFwaCBDb21wYW55Lg=="
96
- }
97
- ]
98
- }
99
- ]
100
- }
101
- ]
102
- }})
112
+ ]
113
+ }
114
+ ]
115
+ }
116
+ ]
117
+ }
118
+ ]})
103
119
  end
104
120
 
105
121
  it "shoud parse a complex feature" do
106
- check_json(fixture("complex.json"))
122
+ check_json('[' + fixture("complex.json") + ']')
107
123
  end
108
124
  end
109
125
  end
@@ -12,9 +12,6 @@ module Gherkin
12
12
  # We can't use method_missing - therubyracer isn't able to invoke methods like that.
13
13
  [:comment, :tag, :feature, :background, :scenario, :scenario_outline, :examples, :step, :doc_string, :row, :eof, :uri, :syntax_error].each do |event|
14
14
  define_method(event) do |*args|
15
- event = :scenario_outline if event == :scenarioOutline # Special Java Lexer handling
16
- event = :doc_string if event == :docString # Special Java Lexer handling
17
- event = :syntax_error if event == :syntaxError # Special Java Lexer handling
18
15
  args = rubify(args)
19
16
  args = sexpify(args)
20
17
  @sexps << [event] + args
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gherkin
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.4
4
+ version: 2.6.0
5
5
  prerelease:
6
6
  platform: java
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-10-20 00:00:00.000000000Z
14
+ date: 2011-10-30 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json
18
- requirement: &2156193900 !ruby/object:Gem::Requirement
18
+ requirement: &2152423780 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,21 +23,21 @@ dependencies:
23
23
  version: 1.4.6
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2156193900
26
+ version_requirements: *2152423780
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cucumber
29
- requirement: &2156178800 !ruby/object:Gem::Requirement
29
+ requirement: &2152422700 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
33
33
  - !ruby/object:Gem::Version
34
- version: 1.1.0
34
+ version: 1.1.1
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *2156178800
37
+ version_requirements: *2152422700
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rake
40
- requirement: &2156167580 !ruby/object:Gem::Requirement
40
+ requirement: &2152422040 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: 0.9.2
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *2156167580
48
+ version_requirements: *2152422040
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: bundler
51
- requirement: &2156161420 !ruby/object:Gem::Requirement
51
+ requirement: &2152421360 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,21 +56,21 @@ dependencies:
56
56
  version: 1.0.21
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *2156161420
59
+ version_requirements: *2152421360
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rspec
62
- requirement: &2156154640 !ruby/object:Gem::Requirement
62
+ requirement: &2152420580 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
66
66
  - !ruby/object:Gem::Version
67
- version: 2.6.0
67
+ version: 2.7.0
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *2156154640
70
+ version_requirements: *2152420580
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: therubyracer
73
- requirement: &2156149900 !ruby/object:Gem::Requirement
73
+ requirement: &2152419880 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: 0.9.8
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *2156149900
81
+ version_requirements: *2152419880
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: yard
84
- requirement: &2156142340 !ruby/object:Gem::Requirement
84
+ requirement: &2152419380 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: 0.7.2
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *2156142340
92
+ version_requirements: *2152419380
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rdiscount
95
- requirement: &2156139660 !ruby/object:Gem::Requirement
95
+ requirement: &2152418840 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: 1.6.8
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *2156139660
103
+ version_requirements: *2152418840
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: term-ansicolor
106
- requirement: &2156138140 !ruby/object:Gem::Requirement
106
+ requirement: &2152418340 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: 1.0.6
112
112
  type: :development
113
113
  prerelease: false
114
- version_requirements: *2156138140
114
+ version_requirements: *2152418340
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: builder
117
- requirement: &2156135060 !ruby/object:Gem::Requirement
117
+ requirement: &2152417620 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ! '>='
@@ -122,7 +122,7 @@ dependencies:
122
122
  version: 2.1.2
123
123
  type: :development
124
124
  prerelease: false
125
- version_requirements: *2156135060
125
+ version_requirements: *2152417620
126
126
  description: A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.
127
127
  email: cukes@googlegroups.com
128
128
  executables: []
@@ -290,7 +290,7 @@ rubyforge_project:
290
290
  rubygems_version: 1.8.10
291
291
  signing_key:
292
292
  specification_version: 3
293
- summary: gherkin-2.5.4
293
+ summary: gherkin-2.6.0
294
294
  test_files:
295
295
  - features/escaped_pipes.feature
296
296
  - features/feature_parser.feature