gherkin 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +12 -0
- data/VERSION.yml +1 -1
- data/features/json_formatter.feature +108 -48
- data/features/json_parser.feature +307 -0
- data/features/pretty_formatter.feature +9 -3
- data/features/step_definitions/json_lexer_steps.rb +20 -0
- data/features/step_definitions/pretty_formatter_steps.rb +44 -14
- data/lib/gherkin/cli/main.rb +1 -1
- data/lib/gherkin/formatter/json_formatter.rb +50 -13
- data/lib/gherkin/formatter/pretty_formatter.rb +23 -9
- data/lib/gherkin/i18n.rb +1 -1
- data/lib/gherkin/json_lexer.rb +103 -0
- data/lib/gherkin/tools/reformat.rb +6 -3
- data/lib/gherkin/tools/stats_listener.rb +3 -0
- data/ragel/lexer.java.rl.erb +2 -2
- data/ragel/lexer_common.rl.erb +1 -1
- data/spec/gherkin/fixtures/complex.json +124 -0
- data/spec/gherkin/formatter/pretty_formatter_spec.rb +3 -0
- data/spec/gherkin/json_lexer_spec.rb +97 -0
- data/spec/gherkin/shared/lexer_group.rb +12 -0
- data/spec/spec_helper.rb +2 -8
- data/tasks/compile.rake +16 -2
- metadata +10 -8
- data/lib/gherkin/parser/json_parser.rb +0 -102
- data/spec/gherkin/fixtures/complex.js +0 -105
- data/spec/gherkin/parser/json_parser_spec.rb +0 -129
@@ -1,16 +1,19 @@
|
|
1
1
|
require 'stringio'
|
2
2
|
require 'gherkin/tools/files'
|
3
3
|
require 'gherkin/formatter/pretty_formatter'
|
4
|
+
require 'gherkin/parser/formatter_listener'
|
4
5
|
|
5
6
|
module Gherkin
|
6
7
|
module Tools
|
7
8
|
class Reformat < Files
|
8
9
|
def run
|
9
10
|
each do |file|
|
10
|
-
|
11
|
-
|
11
|
+
io = defined?(JRUBY_VERSION) ? Java.java.io.StringWriter.new : StringIO.new
|
12
|
+
formatter = Formatter::PrettyFormatter.new(io, true)
|
13
|
+
listener = Parser::FormatterListener.new(formatter)
|
12
14
|
scan(file, listener)
|
13
|
-
|
15
|
+
string = defined?(JRUBY_VERSION) ? io.getBuffer.toString : io.string
|
16
|
+
File.open(file, 'w') {|io| io.write(string)}
|
14
17
|
end
|
15
18
|
end
|
16
19
|
end
|
data/ragel/lexer.java.rl.erb
CHANGED
@@ -142,9 +142,9 @@ public class <%= @i18n.underscored_iso_code.upcase %> implements Lexer {
|
|
142
142
|
|
143
143
|
%% write data noerror;
|
144
144
|
|
145
|
-
public void scan(String
|
145
|
+
public void scan(String source, String uri, int offset) {
|
146
146
|
listener.location(uri, offset);
|
147
|
-
String input =
|
147
|
+
String input = source + "\n%_FEATURE_END_%";
|
148
148
|
byte[] data = null;
|
149
149
|
try {
|
150
150
|
data = input.getBytes("UTF-8");
|
data/ragel/lexer_common.rl.erb
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
ScenarioHeadingEnd = EOL+ space* ( I18N_Feature | I18N_Background | I18N_Scenario | I18N_ScenarioOutline | I18N_Step | '@' | '#' | EOF ) >next_keyword_start;
|
21
21
|
BackgroundHeadingEnd = EOL+ space* ( I18N_Feature | I18N_Scenario | I18N_ScenarioOutline | I18N_Step | '@' | '#'| EOF ) >next_keyword_start;
|
22
22
|
ScenarioOutlineHeadingEnd = EOL+ space* ( I18N_Feature | I18N_Scenario | I18N_Step | '@' | '#' | EOF ) >next_keyword_start;
|
23
|
-
ExamplesHeadingEnd = EOL+ space* ( I18N_Feature | '|' ) >next_keyword_start;
|
23
|
+
ExamplesHeadingEnd = EOL+ space* ( I18N_Feature | '|' | '#') >next_keyword_start;
|
24
24
|
|
25
25
|
FeatureHeading = space* I18N_Feature %begin_content ^FeatureHeadingEnd* :>> FeatureHeadingEnd @store_feature_content;
|
26
26
|
BackgroundHeading = space* I18N_Background %begin_content ^BackgroundHeadingEnd* :>> BackgroundHeadingEnd @store_background_content;
|
@@ -0,0 +1,124 @@
|
|
1
|
+
{ "name": "Feature Text",
|
2
|
+
"keyword": "Feature",
|
3
|
+
"description": "In order to test multiline forms",
|
4
|
+
"tags": [
|
5
|
+
"@tag1",
|
6
|
+
"@tag2"
|
7
|
+
],
|
8
|
+
"background" : {
|
9
|
+
"description": "",
|
10
|
+
"name": "",
|
11
|
+
"keyword": "Background",
|
12
|
+
"steps": [
|
13
|
+
{ "name": "this is a background step",
|
14
|
+
"keyword": "Given " },
|
15
|
+
{ "name": "this is another one",
|
16
|
+
"keyword": "When ",
|
17
|
+
"line": 412 }
|
18
|
+
]
|
19
|
+
},
|
20
|
+
"elements": [
|
21
|
+
{ "type": "scenario_outline",
|
22
|
+
"keyword": "Scenario Outline",
|
23
|
+
"name": "An Scenario Outline",
|
24
|
+
"description": "",
|
25
|
+
"tags": [ "@foo" ],
|
26
|
+
"steps": [
|
27
|
+
{ "name": "A step with a table",
|
28
|
+
"keyword": "Given ",
|
29
|
+
"table" : [
|
30
|
+
{"cells":
|
31
|
+
[ "a","row","for","a","step" ]
|
32
|
+
}
|
33
|
+
]
|
34
|
+
}
|
35
|
+
],
|
36
|
+
"examples": [
|
37
|
+
{ "name": "Sweet Example",
|
38
|
+
"keyword": "Examples",
|
39
|
+
"description": "",
|
40
|
+
"table" : [
|
41
|
+
{"cells" :
|
42
|
+
[ "Fill","In" ]
|
43
|
+
},
|
44
|
+
{"cells" :
|
45
|
+
[ "The","Blanks" ]
|
46
|
+
}
|
47
|
+
],
|
48
|
+
"tags" : [ "@exampletag" ]
|
49
|
+
}
|
50
|
+
]
|
51
|
+
},
|
52
|
+
{ "type" : "scenario",
|
53
|
+
"keyword": "Scenario",
|
54
|
+
"name" : "Reading a Scenario",
|
55
|
+
"description": "",
|
56
|
+
"tags" : [
|
57
|
+
"@tag3",
|
58
|
+
"@tag4"
|
59
|
+
],
|
60
|
+
"steps" : [
|
61
|
+
{ "name" : "there is a step",
|
62
|
+
"keyword": "Given "},
|
63
|
+
{ "name" : "not another step",
|
64
|
+
"keyword": "But " }
|
65
|
+
]
|
66
|
+
},
|
67
|
+
{ "type" : "scenario",
|
68
|
+
"keyword": "Scenario",
|
69
|
+
"name" : "Reading a second scenario",
|
70
|
+
"description": "With two lines of text",
|
71
|
+
"tags" : [ "@tag3" ],
|
72
|
+
"steps" : [
|
73
|
+
{ "name" : "a third step with a table",
|
74
|
+
"keyword": "Given ",
|
75
|
+
"table" : [
|
76
|
+
{ "cells" :
|
77
|
+
[ "a","b" ]
|
78
|
+
},
|
79
|
+
{ "cells" :
|
80
|
+
[ "c","d" ]
|
81
|
+
},
|
82
|
+
{ "cells" :
|
83
|
+
[ "e", "f" ]
|
84
|
+
}
|
85
|
+
]
|
86
|
+
},
|
87
|
+
{ "name" : "I am still testing things",
|
88
|
+
"keyword": "Given ",
|
89
|
+
"table" : [
|
90
|
+
{ "cells" :
|
91
|
+
[ "g","h" ]
|
92
|
+
},
|
93
|
+
{ "cells" :
|
94
|
+
[ "e","r" ]
|
95
|
+
},
|
96
|
+
{ "cells" :
|
97
|
+
[ "k", "i" ]
|
98
|
+
},
|
99
|
+
{ "cells" :
|
100
|
+
[ "n", "" ]
|
101
|
+
}
|
102
|
+
]
|
103
|
+
},
|
104
|
+
{ "name" : "I am done testing these tables",
|
105
|
+
"keyword": "Given " },
|
106
|
+
{ "name" : "I am happy",
|
107
|
+
"keyword": "Given " }
|
108
|
+
]
|
109
|
+
},
|
110
|
+
{ "type" : "scenario",
|
111
|
+
"keyword": "Scenario",
|
112
|
+
"name" : "Hammerzeit",
|
113
|
+
"description": "",
|
114
|
+
"steps" : [
|
115
|
+
{ "name" : "All work and no play",
|
116
|
+
"keyword": "Given ",
|
117
|
+
"py_string" : "Makes Homer something something\nAnd something else" },
|
118
|
+
{ "name" : "crazy",
|
119
|
+
"keyword": "Given " }
|
120
|
+
]
|
121
|
+
}
|
122
|
+
]
|
123
|
+
}
|
124
|
+
|
@@ -79,6 +79,7 @@ module Gherkin
|
|
79
79
|
|
80
80
|
Scenario: Scenario Description
|
81
81
|
description has multiple lines
|
82
|
+
|
82
83
|
Given there is a step
|
83
84
|
"""
|
84
85
|
with
|
@@ -97,6 +98,8 @@ module Gherkin
|
|
97
98
|
@foo
|
98
99
|
Feature: Feature Description
|
99
100
|
Some preamble
|
101
|
+
on several
|
102
|
+
lines
|
100
103
|
|
101
104
|
# A Scenario Outline comment
|
102
105
|
@bar
|
@@ -0,0 +1,97 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'gherkin/json_lexer'
|
4
|
+
|
5
|
+
module Gherkin
|
6
|
+
describe JSONLexer do
|
7
|
+
|
8
|
+
before do
|
9
|
+
@listener = Gherkin::SexpRecorder.new
|
10
|
+
@lexer = Gherkin::JSONLexer.new(@listener)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "An empty feature" do
|
14
|
+
it "should scan empty features" do
|
15
|
+
@lexer.scan('{}')
|
16
|
+
@listener.to_sexp.should == [
|
17
|
+
[:eof]
|
18
|
+
]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "A barely empty feature" do
|
23
|
+
it "should scan a feature with no elements" do
|
24
|
+
@lexer.scan('{ "keyword": "Feature", "name": "One", "description": "", "line" : 3 }')
|
25
|
+
@listener.to_sexp.should == [
|
26
|
+
[:feature, "Feature", "One", "", 3],
|
27
|
+
[:eof]
|
28
|
+
]
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "Missing line numbers" do
|
33
|
+
it "should indicate a line number of 0 if a line attribute doesn't exist" do
|
34
|
+
@lexer.scan('{ "name": "My Sweet Featur", "keyword": "Feature", "description": "" }')
|
35
|
+
@listener.to_sexp.should == [
|
36
|
+
[:feature, "Feature", "My Sweet Featur", "", 0],
|
37
|
+
[:eof]
|
38
|
+
]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "Keywords" do
|
43
|
+
it "should use the keyword from the source when provided" do
|
44
|
+
@lexer.scan('{ "name" : "My Sweet Featur", "language": "fr", "keyword": "Feature", "description": "" }')
|
45
|
+
@listener.to_sexp.should == [
|
46
|
+
[:feature, "Feature", "My Sweet Featur", "", 0],
|
47
|
+
[:eof]
|
48
|
+
]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "A complex feature with tags, comments, multiple scenarios, and multiple steps and tables" do
|
53
|
+
it "should find things in the right order" do
|
54
|
+
scan_file("complex.json")
|
55
|
+
@listener.to_sexp.should == [
|
56
|
+
[:tag, "@tag1", 0],
|
57
|
+
[:tag, "@tag2", 0],
|
58
|
+
[:feature, "Feature", "Feature Text","In order to test multiline forms", 0],
|
59
|
+
[:background, "Background", "", "", 0],
|
60
|
+
[:step, "Given ", "this is a background step", 0],
|
61
|
+
[:step, "When ", "this is another one", 412],
|
62
|
+
[:tag, "@foo", 0],
|
63
|
+
[:scenario_outline, "Scenario Outline", "An Scenario Outline","", 0],
|
64
|
+
[:step, "Given ", "A step with a table", 0],
|
65
|
+
[:row, %w{a row for a step}, 0],
|
66
|
+
[:tag, "@exampletag", 0],
|
67
|
+
[:examples, "Examples", "Sweet Example", "", 0],
|
68
|
+
[:row, %w{Fill In}, 0],
|
69
|
+
[:row, %w{The Blanks}, 0],
|
70
|
+
[:tag, "@tag3", 0],
|
71
|
+
[:tag, "@tag4", 0],
|
72
|
+
[:scenario, "Scenario", "Reading a Scenario", "", 0],
|
73
|
+
[:step, "Given ", "there is a step", 0],
|
74
|
+
[:step, "But ", "not another step", 0],
|
75
|
+
[:tag, "@tag3", 0],
|
76
|
+
[:scenario, "Scenario", "Reading a second scenario", "With two lines of text", 0],
|
77
|
+
[:step, "Given ", "a third step with a table", 0],
|
78
|
+
[:row, %w{a b}, 0],
|
79
|
+
[:row, %w{c d}, 0],
|
80
|
+
[:row, %w{e f}, 0],
|
81
|
+
[:step, "Given ", "I am still testing things", 0],
|
82
|
+
[:row, %w{g h}, 0],
|
83
|
+
[:row, %w{e r}, 0],
|
84
|
+
[:row, %w{k i}, 0],
|
85
|
+
[:row, ['n', ''], 0],
|
86
|
+
[:step, "Given ", "I am done testing these tables", 0],
|
87
|
+
[:step, "Given ", "I am happy", 0],
|
88
|
+
[:scenario, "Scenario", "Hammerzeit", "", 0],
|
89
|
+
[:step, "Given ", "All work and no play", 0],
|
90
|
+
[:py_string, "Makes Homer something something\nAnd something else", 0 ],
|
91
|
+
[:step, "Given ", "crazy", 0],
|
92
|
+
[:eof]
|
93
|
+
]
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -39,6 +39,18 @@ module Gherkin
|
|
39
39
|
]
|
40
40
|
end
|
41
41
|
|
42
|
+
it "should not consume comments as part of a multiline example name" do
|
43
|
+
scan("Examples: thing\n# ho hum\n| 1 | 2 |\n| 3 | 4 |\n")
|
44
|
+
@listener.to_sexp.should == [
|
45
|
+
[:location, 'test.feature', 0],
|
46
|
+
[:examples, "Examples", "thing", "", 1],
|
47
|
+
[:comment, "# ho hum", 2],
|
48
|
+
[:row, ["1","2"], 3],
|
49
|
+
[:row, ["3","4"], 4],
|
50
|
+
[:eof]
|
51
|
+
]
|
52
|
+
end
|
53
|
+
|
42
54
|
it "should allow empty comment lines" do
|
43
55
|
scan("#\n # A comment\n #\n")
|
44
56
|
@listener.to_sexp.should == [
|
data/spec/spec_helper.rb
CHANGED
@@ -1,25 +1,19 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rspec/autorun'
|
1
3
|
require 'gherkin'
|
2
4
|
require 'stringio'
|
3
5
|
require 'gherkin/sexp_recorder'
|
4
6
|
require 'gherkin/output_stream_string_io'
|
5
|
-
require 'rubygems'
|
6
|
-
require 'rspec/autorun'
|
7
7
|
require 'gherkin/shared/lexer_group'
|
8
8
|
require 'gherkin/shared/tags_group'
|
9
9
|
require 'gherkin/shared/py_string_group'
|
10
10
|
require 'gherkin/shared/row_group'
|
11
11
|
|
12
12
|
module GherkinSpecHelper
|
13
|
-
# TODO: Rename to gherkin_scan_file
|
14
13
|
def scan_file(file)
|
15
14
|
@lexer.scan(File.new(File.dirname(__FILE__) + "/gherkin/fixtures/" + file).read, file, 0)
|
16
15
|
end
|
17
16
|
|
18
|
-
# TODO: Remove
|
19
|
-
def parse_file(file)
|
20
|
-
@parser.parse(File.new(File.dirname(__FILE__) + "/gherkin/fixtures/" + file).read)
|
21
|
-
end
|
22
|
-
|
23
17
|
def rubify_hash(hash)
|
24
18
|
if defined?(JRUBY_VERSION)
|
25
19
|
h = {}
|
data/tasks/compile.rake
CHANGED
@@ -24,15 +24,29 @@ end
|
|
24
24
|
rl_langs = ENV['RL_LANGS'] ? ENV['RL_LANGS'].split(',') : []
|
25
25
|
langs = Gherkin::I18n.all.select { |lang| rl_langs.empty? || rl_langs.include?(lang.iso_code) }
|
26
26
|
|
27
|
+
# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6457127
|
28
|
+
file 'lib/gherkin.jar' => "java/src/main/resources/gherkin/I18nKeywords_in.properties"
|
29
|
+
file "java/src/main/resources/gherkin/I18nKeywords_in.properties" => "java/src/main/resources/gherkin/I18nKeywords_id.properties" do
|
30
|
+
cp "java/src/main/resources/gherkin/I18nKeywords_id.properties", "java/src/main/resources/gherkin/I18nKeywords_in.properties"
|
31
|
+
end
|
32
|
+
|
33
|
+
# http://forums.sun.com/thread.jspa?threadID=5335461
|
34
|
+
file 'lib/gherkin.jar' => "java/src/main/resources/gherkin/I18nKeywords_iw.properties"
|
35
|
+
file "java/src/main/resources/gherkin/I18nKeywords_iw.properties" => "java/src/main/resources/gherkin/I18nKeywords_he.properties" do
|
36
|
+
cp "java/src/main/resources/gherkin/I18nKeywords_he.properties", "java/src/main/resources/gherkin/I18nKeywords_iw.properties"
|
37
|
+
end
|
38
|
+
|
27
39
|
langs.each do |i18n|
|
28
40
|
java = RagelTask.new('java', i18n)
|
29
41
|
rb = RagelTask.new('rb', i18n)
|
30
42
|
|
31
|
-
|
43
|
+
lang_country = i18n.iso_code.split(/-/)
|
44
|
+
suffix = lang_country.length == 1 ? lang_country[0] : "#{lang_country[0]}_#{lang_country[1].upcase}"
|
45
|
+
java_properties = "java/src/main/resources/gherkin/I18nKeywords_#{suffix}.properties"
|
32
46
|
file java_properties => 'lib/gherkin/i18n.yml' do
|
33
47
|
File.open(java_properties, 'wb') do |io|
|
34
48
|
io.puts("# Generated file. Do not edit.")
|
35
|
-
Gherkin::I18n::KEYWORD_KEYS.each do |key|
|
49
|
+
(Gherkin::I18n::KEYWORD_KEYS + %w{name native}).each do |key|
|
36
50
|
value = Gherkin::I18n.unicode_escape(i18n.keywords(key).join("|"))
|
37
51
|
io.puts("#{key}:#{value}")
|
38
52
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gherkin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 2.0.
|
9
|
+
- 2
|
10
|
+
version: 2.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Mike Sassak
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-06-
|
20
|
+
date: 2010-06-16 00:00:00 +02:00
|
21
21
|
default_executable: gherkin
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -197,12 +197,14 @@ files:
|
|
197
197
|
- features/escaped_pipes.feature
|
198
198
|
- features/feature_parser.feature
|
199
199
|
- features/json_formatter.feature
|
200
|
+
- features/json_parser.feature
|
200
201
|
- features/native_lexer.feature
|
201
202
|
- features/parser_with_native_lexer.feature
|
202
203
|
- features/pretty_formatter.feature
|
203
204
|
- features/step_definitions/eyeball_steps.rb
|
204
205
|
- features/step_definitions/gherkin_steps.rb
|
205
206
|
- features/step_definitions/json_formatter_steps.rb
|
207
|
+
- features/step_definitions/json_lexer_steps.rb
|
206
208
|
- features/step_definitions/pretty_formatter_steps.rb
|
207
209
|
- features/steps_parser.feature
|
208
210
|
- features/support/env.rb
|
@@ -223,6 +225,7 @@ files:
|
|
223
225
|
- lib/gherkin/i18n.rb
|
224
226
|
- lib/gherkin/i18n.yml
|
225
227
|
- lib/gherkin/i18n_lexer.rb
|
228
|
+
- lib/gherkin/json_lexer.rb
|
226
229
|
- lib/gherkin/native.rb
|
227
230
|
- lib/gherkin/native/ikvm.rb
|
228
231
|
- lib/gherkin/native/java.rb
|
@@ -230,7 +233,6 @@ files:
|
|
230
233
|
- lib/gherkin/parser/event.rb
|
231
234
|
- lib/gherkin/parser/filter_listener.rb
|
232
235
|
- lib/gherkin/parser/formatter_listener.rb
|
233
|
-
- lib/gherkin/parser/json_parser.rb
|
234
236
|
- lib/gherkin/parser/meta.txt
|
235
237
|
- lib/gherkin/parser/parser.rb
|
236
238
|
- lib/gherkin/parser/root.txt
|
@@ -299,7 +301,7 @@ files:
|
|
299
301
|
- spec/gherkin/fixtures/1.feature
|
300
302
|
- spec/gherkin/fixtures/comments_in_table.feature
|
301
303
|
- spec/gherkin/fixtures/complex.feature
|
302
|
-
- spec/gherkin/fixtures/complex.
|
304
|
+
- spec/gherkin/fixtures/complex.json
|
303
305
|
- spec/gherkin/fixtures/dos_line_endings.feature
|
304
306
|
- spec/gherkin/fixtures/i18n_fr.feature
|
305
307
|
- spec/gherkin/fixtures/i18n_no.feature
|
@@ -315,10 +317,10 @@ files:
|
|
315
317
|
- spec/gherkin/i18n_lexer_spec.rb
|
316
318
|
- spec/gherkin/i18n_spec.rb
|
317
319
|
- spec/gherkin/java_lexer_spec.rb
|
320
|
+
- spec/gherkin/json_lexer_spec.rb
|
318
321
|
- spec/gherkin/output_stream_string_io.rb
|
319
322
|
- spec/gherkin/parser/filter_listener_spec.rb
|
320
323
|
- spec/gherkin/parser/formatter_listener_spec.rb
|
321
|
-
- spec/gherkin/parser/json_parser_spec.rb
|
322
324
|
- spec/gherkin/parser/parser_spec.rb
|
323
325
|
- spec/gherkin/parser/tag_expression_spec.rb
|
324
326
|
- spec/gherkin/rb_lexer_spec.rb
|
@@ -426,10 +428,10 @@ test_files:
|
|
426
428
|
- spec/gherkin/i18n_lexer_spec.rb
|
427
429
|
- spec/gherkin/i18n_spec.rb
|
428
430
|
- spec/gherkin/java_lexer_spec.rb
|
431
|
+
- spec/gherkin/json_lexer_spec.rb
|
429
432
|
- spec/gherkin/output_stream_string_io.rb
|
430
433
|
- spec/gherkin/parser/filter_listener_spec.rb
|
431
434
|
- spec/gherkin/parser/formatter_listener_spec.rb
|
432
|
-
- spec/gherkin/parser/json_parser_spec.rb
|
433
435
|
- spec/gherkin/parser/parser_spec.rb
|
434
436
|
- spec/gherkin/parser/tag_expression_spec.rb
|
435
437
|
- spec/gherkin/rb_lexer_spec.rb
|