@@ -140,6 +140,42 @@ class bar {
140
140
end
141
141
end
142
142
143
+ describe 'parsing puppet plans' , if : TEST_PUPPET_PLANS do
144
+ # The parsing code actually checks this and sets a global (Puppet[:tasks]).
145
+ # Plan parsing will fail if it hasn't yet encountered a file under plans/.
146
+ let ( :file ) { 'plans/test.pp' }
147
+ let ( :source ) { <<~'SOURCE' }
148
+ # A simple plan.
149
+ # @param param1 First param.
150
+ # @param param2 Second param.
151
+ # @param param3 Third param.
152
+ plan plann(String $param1, $param2, Integer $param3 = 1) {
153
+ }
154
+ SOURCE
155
+
156
+ it 'parses the puppet plan statement' do
157
+ spec_subject . parse
158
+ expect ( spec_subject . enumerator . size ) . to eq ( 1 )
159
+ statement = spec_subject . enumerator . first
160
+ expect ( statement ) . to be_a ( PuppetStrings ::Yard ::Parsers ::Puppet ::PlanStatement )
161
+ expect ( statement . name ) . to eq ( 'plann' )
162
+ expect ( statement . source ) . to eq ( source . sub ( %r{\A .*?\n ([^#])}m , '\1' ) . chomp )
163
+ expect ( statement . file ) . to eq ( file )
164
+ expect ( statement . line ) . to eq ( 5 )
165
+ expect ( statement . docstring ) . to eq ( 'A simple plan.' )
166
+ expect ( statement . parameters . size ) . to eq ( 3 )
167
+ expect ( statement . parameters [ 0 ] . name ) . to eq ( 'param1' )
168
+ expect ( statement . parameters [ 0 ] . type ) . to eq ( 'String' )
169
+ expect ( statement . parameters [ 0 ] . value ) . to be_nil
170
+ expect ( statement . parameters [ 1 ] . name ) . to eq ( 'param2' )
171
+ expect ( statement . parameters [ 1 ] . type ) . to be_nil
172
+ expect ( statement . parameters [ 1 ] . value ) . to be_nil
173
+ expect ( statement . parameters [ 2 ] . name ) . to eq ( 'param3' )
174
+ expect ( statement . parameters [ 2 ] . type ) . to eq ( 'Integer' )
175
+ expect ( statement . parameters [ 2 ] . value ) . to eq ( '1' )
176
+ end
177
+ end
178
+
143
179
describe 'parsing puppet functions' , if : TEST_PUPPET_FUNCTIONS do
144
180
let ( :source ) do
145
181
<<SOURCE
0 commit comments