gherkin 2.0.1-java → 2.0.2-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.
- 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 +9 -7
- 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
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 2
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 2.0.
|
8
|
+
- 2
|
9
|
+
version: 2.0.2
|
10
10
|
platform: java
|
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-06-
|
19
|
+
date: 2010-06-16 00:00:00 +02:00
|
20
20
|
default_executable: gherkin
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -87,12 +87,14 @@ files:
|
|
87
87
|
- features/escaped_pipes.feature
|
88
88
|
- features/feature_parser.feature
|
89
89
|
- features/json_formatter.feature
|
90
|
+
- features/json_parser.feature
|
90
91
|
- features/native_lexer.feature
|
91
92
|
- features/parser_with_native_lexer.feature
|
92
93
|
- features/pretty_formatter.feature
|
93
94
|
- features/step_definitions/eyeball_steps.rb
|
94
95
|
- features/step_definitions/gherkin_steps.rb
|
95
96
|
- features/step_definitions/json_formatter_steps.rb
|
97
|
+
- features/step_definitions/json_lexer_steps.rb
|
96
98
|
- features/step_definitions/pretty_formatter_steps.rb
|
97
99
|
- features/steps_parser.feature
|
98
100
|
- features/support/env.rb
|
@@ -114,6 +116,7 @@ files:
|
|
114
116
|
- lib/gherkin/i18n.rb
|
115
117
|
- lib/gherkin/i18n.yml
|
116
118
|
- lib/gherkin/i18n_lexer.rb
|
119
|
+
- lib/gherkin/json_lexer.rb
|
117
120
|
- lib/gherkin/native.rb
|
118
121
|
- lib/gherkin/native/ikvm.rb
|
119
122
|
- lib/gherkin/native/java.rb
|
@@ -121,7 +124,6 @@ files:
|
|
121
124
|
- lib/gherkin/parser/event.rb
|
122
125
|
- lib/gherkin/parser/filter_listener.rb
|
123
126
|
- lib/gherkin/parser/formatter_listener.rb
|
124
|
-
- lib/gherkin/parser/json_parser.rb
|
125
127
|
- lib/gherkin/parser/meta.txt
|
126
128
|
- lib/gherkin/parser/parser.rb
|
127
129
|
- lib/gherkin/parser/root.txt
|
@@ -146,7 +148,7 @@ files:
|
|
146
148
|
- spec/gherkin/fixtures/1.feature
|
147
149
|
- spec/gherkin/fixtures/comments_in_table.feature
|
148
150
|
- spec/gherkin/fixtures/complex.feature
|
149
|
-
- spec/gherkin/fixtures/complex.
|
151
|
+
- spec/gherkin/fixtures/complex.json
|
150
152
|
- spec/gherkin/fixtures/dos_line_endings.feature
|
151
153
|
- spec/gherkin/fixtures/i18n_fr.feature
|
152
154
|
- spec/gherkin/fixtures/i18n_no.feature
|
@@ -162,10 +164,10 @@ files:
|
|
162
164
|
- spec/gherkin/i18n_lexer_spec.rb
|
163
165
|
- spec/gherkin/i18n_spec.rb
|
164
166
|
- spec/gherkin/java_lexer_spec.rb
|
167
|
+
- spec/gherkin/json_lexer_spec.rb
|
165
168
|
- spec/gherkin/output_stream_string_io.rb
|
166
169
|
- spec/gherkin/parser/filter_listener_spec.rb
|
167
170
|
- spec/gherkin/parser/formatter_listener_spec.rb
|
168
|
-
- spec/gherkin/parser/json_parser_spec.rb
|
169
171
|
- spec/gherkin/parser/parser_spec.rb
|
170
172
|
- spec/gherkin/parser/tag_expression_spec.rb
|
171
173
|
- spec/gherkin/rb_lexer_spec.rb
|
@@ -223,6 +225,7 @@ test_files:
|
|
223
225
|
- spec/gherkin/i18n_lexer_spec.rb
|
224
226
|
- spec/gherkin/i18n_spec.rb
|
225
227
|
- spec/gherkin/java_lexer_spec.rb
|
228
|
+
- spec/gherkin/json_lexer_spec.rb
|
226
229
|
- spec/gherkin/output_stream_string_io.rb
|
227
230
|
- spec/gherkin/rb_lexer_spec.rb
|
228
231
|
- spec/gherkin/sexp_recorder.rb
|
@@ -231,7 +234,6 @@ test_files:
|
|
231
234
|
- spec/gherkin/formatter/pretty_formatter_spec.rb
|
232
235
|
- spec/gherkin/parser/filter_listener_spec.rb
|
233
236
|
- spec/gherkin/parser/formatter_listener_spec.rb
|
234
|
-
- spec/gherkin/parser/json_parser_spec.rb
|
235
237
|
- spec/gherkin/parser/parser_spec.rb
|
236
238
|
- spec/gherkin/parser/tag_expression_spec.rb
|
237
239
|
- spec/gherkin/shared/lexer_group.rb
|