step_master 0.0.3 → 0.0.4
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/step_master/matcher.rb +13 -3
- data/lib/step_master/possible.rb +13 -6
- data/lib/step_master.rb +1 -1
- data/spec/step_helper/matcher_spec.rb +59 -2
- metadata +2 -2
data/lib/step_master/matcher.rb
CHANGED
@@ -38,6 +38,11 @@ module StepMaster
|
|
38
38
|
# matcher << "Given /^this is a step$/ do"
|
39
39
|
#
|
40
40
|
def <<(value)
|
41
|
+
add(value, :format => :rb)
|
42
|
+
end
|
43
|
+
|
44
|
+
def add(value, options = {})
|
45
|
+
|
41
46
|
raise "#{value.inspect} is not a step" unless value =~ STEP_REGEX
|
42
47
|
|
43
48
|
full_line = $&
|
@@ -65,7 +70,7 @@ module StepMaster
|
|
65
70
|
regex.scan(CHUNK_REGEX).unshift(" ").unshift(step_type).collect { |i| StepItem.new(i, regex_options) }
|
66
71
|
end
|
67
72
|
|
68
|
-
elements.inject(@match_table) { |parent, i| parent[i] ||= Possible.new }.terminal!(value)
|
73
|
+
elements.inject(@match_table) { |parent, i| parent[i] ||= Possible.new }.terminal!(value, options)
|
69
74
|
end
|
70
75
|
|
71
76
|
# Returns all possible outcomes of a string.
|
@@ -94,8 +99,13 @@ module StepMaster
|
|
94
99
|
end
|
95
100
|
|
96
101
|
def where_is?(string)
|
97
|
-
find_possible(string).select{ |x| x.terminal? }.collect { |x| x.result }
|
98
|
-
end
|
102
|
+
find_possible(string).select{ |x| x.terminal? }.collect { |x| x.file || x.result }
|
103
|
+
end
|
104
|
+
|
105
|
+
def terminals(string)
|
106
|
+
find_possible(string).select{ |x| x.terminal? }
|
107
|
+
end
|
108
|
+
|
99
109
|
|
100
110
|
private
|
101
111
|
def find_possible(input, against = @match_table)
|
data/lib/step_master/possible.rb
CHANGED
@@ -2,20 +2,27 @@ module StepMaster
|
|
2
2
|
class Possible < ::Hash
|
3
3
|
EMPTY = Possible.new
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
attr_reader :file_path, :line_number
|
6
|
+
|
7
|
+
def terminal!(result, options = {})
|
8
|
+
@terminal = true
|
9
|
+
@result = result
|
10
|
+
@file_path = options[:file_path].freeze
|
11
|
+
@line_number = options[:line_number].freeze
|
7
12
|
end
|
8
13
|
|
9
14
|
def terminal?
|
10
|
-
|
15
|
+
@terminal
|
11
16
|
end
|
12
17
|
|
13
18
|
def result
|
14
|
-
@
|
19
|
+
@result
|
15
20
|
end
|
16
21
|
|
17
|
-
def
|
18
|
-
|
22
|
+
def file
|
23
|
+
if @file_path
|
24
|
+
[@file_path, @line_number].compact.join(":")
|
25
|
+
end
|
19
26
|
end
|
20
27
|
end
|
21
28
|
end
|
data/lib/step_master.rb
CHANGED
@@ -27,6 +27,40 @@ module StepMaster
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
|
31
|
+
|
32
|
+
describe "#add()" do
|
33
|
+
it "accepts a string" do
|
34
|
+
@matcher.add(VALID_STEP)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should not like a step it can't parse" do
|
38
|
+
lambda {
|
39
|
+
@matcher.add "This is not a step"
|
40
|
+
}.should raise_error(%q["This is not a step" is not a step])
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "accepts optional paramters" do
|
44
|
+
it "should accept :file_path with just a file name" do
|
45
|
+
@matcher.add(VALID_STEP, :file_path => "step.rb")
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should accept :file_path an entire path" do
|
49
|
+
@matcher.add(VALID_STEP, :file_path => "/src/project/step.rb")
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should accept :file_path and :line_number" do
|
53
|
+
@matcher.add(VALID_STEP, :file_path => "/src/project/step.rb", :line_number => 6)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should accept :format" do
|
57
|
+
@matcher.add(VALID_STEP, :format => :rb)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
|
30
64
|
describe "#is_match?" do
|
31
65
|
|
32
66
|
describe "with a terminal and longer step" do
|
@@ -305,17 +339,40 @@ module StepMaster
|
|
305
339
|
end
|
306
340
|
|
307
341
|
end
|
342
|
+
|
308
343
|
describe "#where_is?" do
|
309
344
|
describe "with step with a comment" do
|
310
345
|
before :each do
|
311
|
-
@matcher << %q~Given /^this$/i do
|
346
|
+
@matcher << %q~Given /^this$/i do # This is a comment~
|
312
347
|
end
|
313
348
|
|
314
349
|
it "should return the original line with where_is?" do
|
315
|
-
@matcher.where_is?("Given this").should include(%q~Given /^this$/i do
|
350
|
+
@matcher.where_is?("Given this").should include(%q~Given /^this$/i do # This is a comment~)
|
316
351
|
end
|
317
352
|
end
|
353
|
+
|
354
|
+
describe "with step with a file path" do
|
355
|
+
before :each do
|
356
|
+
@matcher.add(%q~Given /^this$/i do~, :file_path => "/src/test.rb")
|
357
|
+
end
|
358
|
+
|
359
|
+
it "should return the original line with where_is?" do
|
360
|
+
@matcher.where_is?("Given this").should include(%q~/src/test.rb~)
|
361
|
+
end
|
362
|
+
end
|
363
|
+
|
364
|
+
describe "with step with a file path and line_number" do
|
365
|
+
before :each do
|
366
|
+
@matcher.add(%q~Given /^this$/i do ~, :file_path => "/src/test.rb", :line_number => 6)
|
367
|
+
end
|
368
|
+
|
369
|
+
it "should return the original line with where_is?" do
|
370
|
+
@matcher.where_is?("Given this").should include(%q~/src/test.rb:6~)
|
371
|
+
end
|
372
|
+
end
|
373
|
+
|
318
374
|
end
|
375
|
+
|
319
376
|
end
|
320
377
|
|
321
378
|
describe Matcher do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: step_master
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Holmes
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10-
|
12
|
+
date: 2009-10-20 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|