macros4cuke 0.4.00 → 0.4.01
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.
- checksums.yaml +8 -8
- data/.rubocop.yml +7 -0
- data/CHANGELOG.md +5 -1
- data/lib/macros4cuke/coll-walker-factory.rb +2 -1
- data/lib/macros4cuke/constants.rb +1 -1
- data/lib/macros4cuke/formatter/to-gherkin.rb +9 -7
- data/lib/macros4cuke/formatter/to-null.rb +1 -0
- data/lib/macros4cuke/formatter/to-trace.rb +5 -3
- data/lib/macros4cuke/macro-collection.rb +2 -3
- data/lib/macros4cuke/macro-step-support.rb +2 -1
- data/lib/macros4cuke/macro-step.rb +2 -1
- data/lib/macros4cuke/templating/engine.rb +9 -3
- data/spec/macros4cuke/formatting-service_spec.rb +6 -2
- data/spec/macros4cuke/templating/engine_spec.rb +1 -1
- data/spec/macros4cuke/templating/placeholder_spec.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
YTY0YmViNGQ1MmU5NWI5NDMxZjNiMTExNmEwYzEwMjI2YWIyMzQ3NA==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
OTc0YjU2NzNkZTY2ODc5OWM0YjEwMzkxYTU3NTcyMGRhYzcwMjdhNA==
|
|
7
7
|
!binary "U0hBNTEy":
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
YzM4NThiNjZmM2I1YzM1NDk0MzQ5ZDRhMDE2NzQ0YWY4MmJmMGNiY2U3M2I1
|
|
10
|
+
MWQ3YjZlNTA4OGM1Zjg1NGMxODFhZDE0OWUxNDljYzFjNDRhOWFkYjQyNDg2
|
|
11
|
+
Y2VjOGQ3MzczOWVmMTA2NTg0NGUwZjc4Yzg5OTQ3YjU0NDA1NjE=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
MTQyYzAwM2U2MGEzZTRmNGQzNDgyOGIxZDI4M2Q1ZTQzM2E0YTRmZGQ4Y2E1
|
|
14
|
+
MWVkYzI4ODgyYzlmYTI0YjMzZDA2ZjlmZDI5ZTA0ZDc5ZDBiOWQyNzA3NDQ2
|
|
15
|
+
MTA0MDEwNzNlM2Y3ODdiY2ZhNDgzZDFmM2QxZjg0YzE2OGJhN2M=
|
data/.rubocop.yml
CHANGED
|
@@ -2,6 +2,7 @@ AllCops:
|
|
|
2
2
|
Excludes:
|
|
3
3
|
- '*/examples/**'
|
|
4
4
|
- '*/features/**'
|
|
5
|
+
- '*/gems/**'
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
AccessControl:
|
|
@@ -21,6 +22,9 @@ ClassLength:
|
|
|
21
22
|
ConstantName:
|
|
22
23
|
Enabled: false
|
|
23
24
|
|
|
25
|
+
CyclomaticComplexity:
|
|
26
|
+
Enabled: false
|
|
27
|
+
|
|
24
28
|
DefWithParentheses:
|
|
25
29
|
Enabled: false
|
|
26
30
|
|
|
@@ -29,6 +33,9 @@ Documentation:
|
|
|
29
33
|
|
|
30
34
|
EmptyLines:
|
|
31
35
|
Enabled: false
|
|
36
|
+
|
|
37
|
+
EmptyLinesAroundBody:
|
|
38
|
+
Enabled: false
|
|
32
39
|
|
|
33
40
|
Encoding:
|
|
34
41
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
### 0.4.01 / 2013-11_17
|
|
2
|
+
* [CHANGE] File `.rubocop.yml`: Disabled a few new 0.15.0 cops
|
|
3
|
+
* [CHANGE] Files from `lib` and `spec` dirs updated for Rubocop 0.15.0
|
|
4
|
+
|
|
1
5
|
### 0.4.00 / 2013-11-17
|
|
2
6
|
#### Version number bumped. New feature: to list all encountered macro definitions into a single feature file.
|
|
3
|
-
* [
|
|
7
|
+
* [FEATURE] Sample `demo07.feature` file illustrates the new step that will list all macro definitions.
|
|
4
8
|
* [NEW] Class CollWalkerFactory. Creates specialized Enumerators that walk over the macro collection.
|
|
5
9
|
* [NEW] Module Formatter. Purpose: Grouping of all classes that render macro definitions
|
|
6
10
|
* [NEW] File `all-notifications.rb` List of macro collection visit events.
|
|
@@ -12,7 +12,7 @@ module Formatter
|
|
|
12
12
|
class ToGherkin
|
|
13
13
|
# The IO where the formatter's output will be written to.
|
|
14
14
|
attr_reader(:io)
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
# The number of macro-step encountered by the formatter.
|
|
17
17
|
attr_reader(:step_count)
|
|
18
18
|
|
|
@@ -22,6 +22,7 @@ class ToGherkin
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
public
|
|
25
|
+
|
|
25
26
|
# Tell which notifications this formatter subscribes to.
|
|
26
27
|
def implements()
|
|
27
28
|
return [:on_collection, :on_step, :on_step_end, :on_phrase, :on_source]
|
|
@@ -39,7 +40,7 @@ class ToGherkin
|
|
|
39
40
|
|
|
40
41
|
def on_step(aLevel, aMacroStep)
|
|
41
42
|
@step_count += 1
|
|
42
|
-
io.puts "#{indentation(aLevel)}Scenario: Macro #{step_count}"
|
|
43
|
+
io.puts "#{indentation(aLevel)}Scenario: Macro #{step_count}"
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
def on_step_end(aLevel)
|
|
@@ -57,19 +58,20 @@ class ToGherkin
|
|
|
57
58
|
ljust = indentation(aLevel)
|
|
58
59
|
triple_quotes = %Q|#{ljust}"""|
|
|
59
60
|
io.puts triple_quotes
|
|
60
|
-
|
|
61
|
+
|
|
61
62
|
# Indent source text
|
|
62
63
|
indented_text = aSourceText.gsub(/^/m, "#{ljust}")
|
|
63
|
-
|
|
64
|
+
|
|
64
65
|
io.puts indented_text
|
|
65
66
|
io.puts triple_quotes
|
|
66
67
|
end
|
|
67
|
-
|
|
68
|
-
private
|
|
68
|
+
|
|
69
|
+
private
|
|
70
|
+
|
|
69
71
|
def indentation(aLevel)
|
|
70
72
|
return ' ' * (aLevel)
|
|
71
73
|
end
|
|
72
|
-
|
|
74
|
+
|
|
73
75
|
|
|
74
76
|
end # class
|
|
75
77
|
|
|
@@ -13,13 +13,14 @@ module Formatter
|
|
|
13
13
|
class ToTrace
|
|
14
14
|
# The IO where the formatter's output will be written to.
|
|
15
15
|
attr_reader(:io)
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
|
|
18
18
|
def initialize(anIO)
|
|
19
19
|
@io = anIO
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
public
|
|
23
|
+
|
|
23
24
|
# Tell which notifications the formatter subscribes to.
|
|
24
25
|
def implements()
|
|
25
26
|
return Formatter::AllNotifications
|
|
@@ -60,7 +61,7 @@ class ToTrace
|
|
|
60
61
|
def on_static_text(aLevel, aStaticText)
|
|
61
62
|
trace_event(aLevel, __method__)
|
|
62
63
|
end
|
|
63
|
-
|
|
64
|
+
|
|
64
65
|
def on_comment(aLevel, aComment)
|
|
65
66
|
trace_event(aLevel, __method__)
|
|
66
67
|
end
|
|
@@ -82,10 +83,11 @@ class ToTrace
|
|
|
82
83
|
end
|
|
83
84
|
|
|
84
85
|
private
|
|
86
|
+
|
|
85
87
|
def indentation(aLevel)
|
|
86
88
|
return ' ' * aLevel
|
|
87
89
|
end
|
|
88
|
-
|
|
90
|
+
|
|
89
91
|
def trace_event(aLevel, anEvent)
|
|
90
92
|
io.puts "#{indentation(aLevel)}#{anEvent}"
|
|
91
93
|
end
|
|
@@ -17,7 +17,7 @@ class MacroCollection
|
|
|
17
17
|
# A Hash with pairs of the form: macro key => MacroStep object
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
public
|
|
20
|
+
public
|
|
21
21
|
|
|
22
22
|
# Add a new macro.
|
|
23
23
|
# Pre-condition: there is no existing macro with the same key.
|
|
@@ -35,7 +35,6 @@ public
|
|
|
35
35
|
fail(DuplicateMacroError, aPhrase) if find_macro(aPhrase, useTable)
|
|
36
36
|
|
|
37
37
|
macro_steps[new_macro.key] = new_macro
|
|
38
|
-
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
# Render the steps associated to the macro with given phrase
|
|
@@ -70,7 +69,7 @@ public
|
|
|
70
69
|
return @macro_steps
|
|
71
70
|
end
|
|
72
71
|
|
|
73
|
-
private
|
|
72
|
+
private
|
|
74
73
|
|
|
75
74
|
# Retrieve the macro, given a phrase.
|
|
76
75
|
def find_macro(aMacroPhrase, useTable)
|
|
@@ -125,7 +125,8 @@ class MacroStep
|
|
|
125
125
|
return renderer.render(nil, params)
|
|
126
126
|
end
|
|
127
127
|
|
|
128
|
-
private
|
|
128
|
+
private
|
|
129
|
+
|
|
129
130
|
# Build a Hash from the given raw data.
|
|
130
131
|
# @param aPhrase [String] an instance of the macro phrase.
|
|
131
132
|
# @param rawData [Array or nil] An Array with coupples of the form:
|
|
@@ -69,7 +69,9 @@ end # class
|
|
|
69
69
|
# Class used internally by the template engine.
|
|
70
70
|
# Represents an end of line that must be rendered as such.
|
|
71
71
|
class EOLine
|
|
72
|
+
|
|
72
73
|
public
|
|
74
|
+
|
|
73
75
|
# Render an end of line.
|
|
74
76
|
# This method has the same signature as the {Engine#render} method.
|
|
75
77
|
# @return [String] An end of line marker. Its exact value is OS-dependent.
|
|
@@ -117,6 +119,7 @@ end # class
|
|
|
117
119
|
class Placeholder < UnaryElement
|
|
118
120
|
|
|
119
121
|
public
|
|
122
|
+
|
|
120
123
|
# Render the placeholder given the passed arguments.
|
|
121
124
|
# This method has the same signature as the {Engine#render} method.
|
|
122
125
|
# @return [String] The text value assigned to the placeholder.
|
|
@@ -159,6 +162,7 @@ class Section < UnaryElement
|
|
|
159
162
|
end
|
|
160
163
|
|
|
161
164
|
public
|
|
165
|
+
|
|
162
166
|
# Add a child element as member of the section
|
|
163
167
|
def add_child(aChild)
|
|
164
168
|
children << aChild
|
|
@@ -210,7 +214,8 @@ class ConditionalSection < Section
|
|
|
210
214
|
@existence = renderWhenExisting
|
|
211
215
|
end
|
|
212
216
|
|
|
213
|
-
public
|
|
217
|
+
public
|
|
218
|
+
|
|
214
219
|
# Render the placeholder given the passed arguments.
|
|
215
220
|
# This method has the same signature as the {Engine#render} method.
|
|
216
221
|
# @return [String] The text value assigned to the placeholder.
|
|
@@ -279,7 +284,8 @@ class Engine
|
|
|
279
284
|
@representation = compile(aSourceTemplate)
|
|
280
285
|
end
|
|
281
286
|
|
|
282
|
-
public
|
|
287
|
+
public
|
|
288
|
+
|
|
283
289
|
# Render the template within the given scope object and
|
|
284
290
|
# with the locals specified.
|
|
285
291
|
# The method mimicks the signature of the Tilt::Template#render method.
|
|
@@ -359,7 +365,7 @@ public
|
|
|
359
365
|
return result
|
|
360
366
|
end
|
|
361
367
|
|
|
362
|
-
private
|
|
368
|
+
private
|
|
363
369
|
|
|
364
370
|
# Called when the given text line could not be parsed.
|
|
365
371
|
# Raises an exception with the syntax issue identified.
|
|
@@ -89,7 +89,9 @@ describe FormattingService do
|
|
|
89
89
|
:on_step,
|
|
90
90
|
:on_step_end
|
|
91
91
|
]
|
|
92
|
-
formatter1.should_receive(:implements)
|
|
92
|
+
formatter1.should_receive(:implements)
|
|
93
|
+
.at_least(69).times
|
|
94
|
+
.and_return(supported_notifications)
|
|
93
95
|
subject.register(formatter1)
|
|
94
96
|
|
|
95
97
|
# Test the notifications send to the formatter
|
|
@@ -118,7 +120,9 @@ describe FormattingService do
|
|
|
118
120
|
it 'should support multiple formatters' do
|
|
119
121
|
formatter1 = double('formatter')
|
|
120
122
|
supported_notifications = [:on_collection]
|
|
121
|
-
formatter1.should_receive(:implements)
|
|
123
|
+
formatter1.should_receive(:implements)
|
|
124
|
+
.at_least(69 * 3).times
|
|
125
|
+
.and_return(supported_notifications)
|
|
122
126
|
|
|
123
127
|
# Cheating: registering three times the same formatter...
|
|
124
128
|
3.times { subject.register(formatter1) }
|
|
@@ -287,7 +287,7 @@ SNIPPET
|
|
|
287
287
|
# Place actual value in context object
|
|
288
288
|
Context = Struct.new(:userid, :password)
|
|
289
289
|
context = Context.new('sherlock', 'holmes')
|
|
290
|
-
rendered_text = subject.render(context,
|
|
290
|
+
rendered_text = subject.render(context, 'userid' => 'susan')
|
|
291
291
|
expected = <<-SNIPPET
|
|
292
292
|
Given I landed in the homepage
|
|
293
293
|
And I fill in "Username" with "susan"
|
|
@@ -33,7 +33,7 @@ describe Placeholder do
|
|
|
33
33
|
expect(rendered_text).to be_empty
|
|
34
34
|
|
|
35
35
|
# Case: locals Hash has a nil value associated to 'foobar'
|
|
36
|
-
rendered_text = subject.render(Object.new,
|
|
36
|
+
rendered_text = subject.render(Object.new, 'foobar' => nil)
|
|
37
37
|
expect(rendered_text).to be_empty
|
|
38
38
|
|
|
39
39
|
# Case: context object has a nil value associated to 'foobar'
|
|
@@ -47,7 +47,7 @@ describe Placeholder do
|
|
|
47
47
|
|
|
48
48
|
it 'should render the actual value bound to the placeholder' do
|
|
49
49
|
# Case: locals Hash has a value associated to 'foobar'
|
|
50
|
-
rendered_text = subject.render(Object.new,
|
|
50
|
+
rendered_text = subject.render(Object.new, 'foobar' => 'hello')
|
|
51
51
|
expect(rendered_text).to eq('hello')
|
|
52
52
|
|
|
53
53
|
# Case: context object has a value associated to 'foobar'
|