Skip to content

Commit 09009a0

Browse files
Fix DataTable's Location to be aware of all of its lines.
1 parent ffe17a6 commit 09009a0

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

lib/cucumber/core/gherkin/ast_builder.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,12 @@ def result
373373
def rows
374374
attributes[:rows] = attributes[:rows].map { |r| r[:cells].map { |c| c[:value] } }
375375
end
376+
377+
def location
378+
first_line = attributes[:location][:line]
379+
last_line = first_line + attributes[:rows].length - 1
380+
Ast::Location.new(file, first_line..last_line)
381+
end
376382
end
377383

378384
class DocStringBuilder < Builder

spec/cucumber/core/test/filters/locations_filter_spec.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ module Cucumber::Core
9696
Given a table
9797
| a | b |
9898
| 1 | 2 |
99+
| 3 | 4 |
100+
101+
Scenario: empty
99102
END
100103
end
101104

@@ -192,10 +195,25 @@ def test_case_named(name)
192195
test_cases.find { |c| c.name == 'with a table' }
193196
end
194197

195-
it "matches a location on the first table row" do
198+
it "matches a location at the start of the table" do
196199
location = Ast::Location.new(file, 23)
197200
expect( test_case.match_locations?([location]) ).to be_truthy
198201
end
202+
203+
it "matches a location in the middle of the table" do
204+
location = Ast::Location.new(file, 24)
205+
expect( test_case.match_locations?([location]) ).to be_truthy
206+
end
207+
208+
it "matches a location at the end of the table" do
209+
location = Ast::Location.new(file, 25)
210+
expect( test_case.match_locations?([location]) ).to be_truthy
211+
end
212+
213+
it "does not match a location after the table" do
214+
location = Ast::Location.new(file, 26)
215+
expect( test_case.match_locations?([location]) ).to be_falsey
216+
end
199217
end
200218

201219
context "with duplicate locations in the filter" do

0 commit comments

Comments
 (0)