@@ -269,6 +269,13 @@ lives_ok { # Make sure we get to print log messages in case of errors.
269269 modifiers => [ ' ' , ' all' , ' -' , ' basic' ],
270270 expected => [ ' extra01' , ' extra02' ],
271271 },
272+ {
273+ name => ' invalid operator' ,
274+ schema => { basic => [ ' basic01' , ' basic02' ] },
275+ selection => [' basic01' ],
276+ modifiers => [ ' *' , ' basic02' ],
277+ error => qr { unrecognized operator} i ,
278+ },
272279 );
273280 for my $case ( @cases ) {
274281 subtest $case -> {name } => sub {
@@ -277,15 +284,25 @@ lives_ok { # Make sure we get to print log messages in case of errors.
277284 $case -> {schema },
278285 );
279286
280- while ( @{ $case -> {modifiers } } ) {
281- my $op = shift @{ $case -> {modifiers } };
282- my $term = shift @{ $case -> {modifiers } };
283- $test_case_set -> apply_modifier( $op , $term );
284- }
287+ local $@ = ' ' ;
288+ eval {
289+ while ( @{ $case -> {modifiers } } ) {
290+ my $op = shift @{ $case -> {modifiers } };
291+ my $term = shift @{ $case -> {modifiers } };
292+ $test_case_set -> apply_modifier( $op , $term );
293+ }
294+ };
295+ my $error = $@ ;
285296
286- eq_or_diff [ $test_case_set -> to_list ], $case -> {expected };
297+ if ( exists $case -> {expected } ) {
298+ is $error , ' ' ;
299+ eq_or_diff [ $test_case_set -> to_list ], $case -> {expected };
300+ }
301+ else {
302+ like $error , $case -> {error };
303+ }
287304 };
288- }
305+ } # # end for my $case ( @cases )
289306 };
290307};
291308
0 commit comments