@@ -145,10 +145,16 @@ def extract_aliases(arr)
145145
146146 def extract_tests ( arr )
147147 Array ( arr ) . map do |t |
148+ next { input : "" , expected : "" } unless t . is_a? ( Hash )
149+
150+ input_val = t [ :input ]
151+ expected_val = t [ :expected ]
152+ note_val = t [ :note ]
153+
148154 {
149- input : unquote ( t [ :input ] ) ,
150- expected : unquote ( t [ :expected ] ) ,
151- note : t [ :note ] && unquote ( t [ :note ] ) ,
155+ input : input_val . is_a? ( Hash ) ? unquote ( input_val ) : input_val . to_s ,
156+ expected : expected_val . is_a? ( Hash ) ? unquote ( expected_val ) : expected_val . to_s ,
157+ note : note_val . is_a? ( Hash ) ? unquote ( note_val ) : note_val &. to_s ,
152158 } . compact
153159 end
154160 end
@@ -161,23 +167,30 @@ def extract_stage(item)
161167 end
162168
163169 def extract_stage_items ( n )
170+ return [ ] unless n . is_a? ( Hash )
164171 case
165172 when n [ :sequence ] then [ { kind : :sequence , rules : Array ( n [ :sequence ] ) . map { |r | extract_rule ( r ) } } ]
166173 when n [ :parallel ] then [ { kind : :parallel , rules : Array ( n [ :parallel ] ) . map { |r | extract_rule ( r ) } } ]
167174 when n [ :separate ] then [ { kind : :separate } ]
168175 when n [ :compose ] then [ { kind : :compose } ]
169176 when n [ :case ] then [ { kind : :string_case , op : n [ :case ] . to_s } ]
170177 when n [ :dep ] then [ { kind : :run , dependency : ident ( n [ :dep ] ) , stage : ident ( n [ :stage ] ) } ]
178+ when n [ :run_stage_only ] then [ { kind : :run , dependency : nil , stage : ident ( n [ :run_stage_only ] ) } ]
171179 when n [ :bare_rule ] then [ { kind : :bare_rule , rule : extract_rule ( n [ :bare_rule ] ) } ]
180+ when n [ :comment ] then [ ]
181+ when n [ :noop ] then [ ]
172182 else [ ]
173183 end
174184 end
175185
176186 def extract_rule ( r )
187+ from_val = r . is_a? ( Hash ) ? r [ :from ] : nil
188+ to_val = r . is_a? ( Hash ) ? r [ :to ] : nil
189+ constraints_val = r . is_a? ( Hash ) ? r [ :constraints ] : nil
177190 {
178- from : materialize ( r [ :from ] ) ,
179- to : materialize ( r [ :to ] ) ,
180- constraints : extract_constraints ( r [ :constraints ] ) ,
191+ from : from_val ? materialize ( from_val ) : Items :: None . new ,
192+ to : to_val ? materialize ( to_val ) : Items :: None . new ,
193+ constraints : extract_constraints ( constraints_val ) ,
181194 }
182195 end
183196
0 commit comments