diff -Nru libconfig-std-perl-0.901/Build.PL libconfig-std-perl-0.903/Build.PL --- libconfig-std-perl-0.901/Build.PL 2011-04-13 01:13:21.000000000 +0000 +++ libconfig-std-perl-0.903/Build.PL 2017-10-06 22:57:52.000000000 +0000 @@ -1,3 +1,4 @@ +use 5.007_003; use strict; use warnings; use Module::Build '0.19'; @@ -16,15 +17,28 @@ 'Test::More' => 0, 'Class::Std' => 0, 'version' => 0, - 'perl' => '5.7.3', + 'perl' => '5.7.3', }, + recommends => { - 'Test::Pod' => 0, - 'Test::Distribution' => 0, + 'Test::Pod' => 0, + 'Test::Distribution' => 0, + }, + + meta_merge => { + resources => { + repository => 'https://github.com/n1vux/Config-Std-Perl', + } }, add_to_cleanup => [ 'Config-Std-*' ], create_makefile_pl => 'traditional', # Module::Build::Compat + use_tap_harness => 1, + tap_harness_args => { + jobs => 1, # Config file tests are setup & sequenced + # default rulesfile=t/testrules.yml has belt and suspenders + } + ); $builder->create_build_script(); diff -Nru libconfig-std-perl-0.901/Changes libconfig-std-perl-0.903/Changes --- libconfig-std-perl-0.901/Changes 2013-09-10 23:26:52.000000000 +0000 +++ libconfig-std-perl-0.903/Changes 2017-10-07 02:05:15.000000000 +0000 @@ -1,8 +1,16 @@ Revision history for Config-Std +0.903 Fri Oct 6, 2017 + - general Kwallitee cleanup + - warnings cleanup + - limitations noted re sequential tests only and repeated re-reading. + +0.902 Thu Oct 5, 2017 + - Fix test for RT 114342 (Literal '{' in RE fatal in 5.25+) + 0.901 Tue Sep 10, 2013 - Copyright, added co-maintainers - * RT 85956 - 5.18 Hash ordering randomization hit the tests. + - RT 85956 - 5.18 Hash ordering randomization hit the tests. Thanks to Gregor on Debian for report and Zefram for patch. 0.900 Tue Apr 12 20:41:04 2011 diff -Nru libconfig-std-perl-0.901/debian/changelog libconfig-std-perl-0.903/debian/changelog --- libconfig-std-perl-0.901/debian/changelog 2016-06-30 15:20:24.000000000 +0000 +++ libconfig-std-perl-0.903/debian/changelog 2017-10-07 20:29:54.000000000 +0000 @@ -1,3 +1,15 @@ +libconfig-std-perl (0.903-1) unstable; urgency=medium + + * New upstream version 0.903 + * Drop Config-Std-0.901-RT114342.patch patch (applied upstream) + * Add debian/upstream/metadata file for upstream metadata + * Update copyright years for upstream files + * Update copyright years for debian/* packaging files + * Declare compliance with Debian policy 4.1.1 + * Add spelling-error-in-manpage.patch patch + + -- Salvatore Bonaccorso Sat, 07 Oct 2017 22:29:54 +0200 + libconfig-std-perl (0.901-3) unstable; urgency=medium [ Salvatore Bonaccorso ] diff -Nru libconfig-std-perl-0.901/debian/control libconfig-std-perl-0.903/debian/control --- libconfig-std-perl-0.901/debian/control 2016-06-30 15:20:24.000000000 +0000 +++ libconfig-std-perl-0.903/debian/control 2017-10-07 20:29:54.000000000 +0000 @@ -12,7 +12,7 @@ libclass-std-perl, libtest-pod-perl, libtest-pod-coverage-perl -Standards-Version: 3.9.8 +Standards-Version: 4.1.1 Vcs-Browser: https://anonscm.debian.org/cgit/pkg-perl/packages/libconfig-std-perl.git Vcs-Git: https://anonscm.debian.org/git/pkg-perl/packages/libconfig-std-perl.git Homepage: https://metacpan.org/release/Config-Std diff -Nru libconfig-std-perl-0.901/debian/copyright libconfig-std-perl-0.903/debian/copyright --- libconfig-std-perl-0.901/debian/copyright 2016-06-30 15:20:24.000000000 +0000 +++ libconfig-std-perl-0.903/debian/copyright 2017-10-07 20:29:54.000000000 +0000 @@ -4,15 +4,15 @@ Source: https://metacpan.org/release/Config-Std Files: * -Copyright: 2005, 2011, Damian Conway - 2011, 2013, Bill Ricker - 2011, 2013, Tom Metro +Copyright: 2005-2017, Damian Conway + 2011-2017, Bill Ricker + 2011-2017, Tom Metro License: Artistic or GPL-1+ Files: debian/* Copyright: 2007, Ivan Kohler 2008, Damyan Ivanov - 2009-2016, Salvatore Bonaccorso + 2009-2017, Salvatore Bonaccorso 2013, gregor herrmann License: Artistic or GPL-1+ diff -Nru libconfig-std-perl-0.901/debian/patches/Config-Std-0.901-RT114342.patch libconfig-std-perl-0.903/debian/patches/Config-Std-0.901-RT114342.patch --- libconfig-std-perl-0.901/debian/patches/Config-Std-0.901-RT114342.patch 2016-06-30 15:20:24.000000000 +0000 +++ libconfig-std-perl-0.903/debian/patches/Config-Std-0.901-RT114342.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -From fd94bb2480be926b6dc2c4a820a8443505a4a89a Mon Sep 17 00:00:00 2001 -From: Slaven Rezic -Date: Fri, 10 Jun 2016 23:54:33 +0200 -Subject: [PATCH] fix "Unescaped left brace in regex is illegal in regex" (RT - #114342) - ---- - t/undef.t | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/t/undef.t b/t/undef.t -index 423cd62..7735101 100644 ---- a/t/undef.t -+++ b/t/undef.t -@@ -16,5 +16,5 @@ my $output; - - ok !eval{ write_config %data => \$output } => 'Write failed as expected'; - --like $@, qr/\ACan't save undefined value for key {'FOO'}{'foo2'}/ -+like $@, qr/\A\QCan't save undefined value for key {'FOO'}{'foo2'}/ - => 'Failed with expected exception'; --- -2.1.4 - diff -Nru libconfig-std-perl-0.901/debian/patches/series libconfig-std-perl-0.903/debian/patches/series --- libconfig-std-perl-0.901/debian/patches/series 2016-06-30 15:20:24.000000000 +0000 +++ libconfig-std-perl-0.903/debian/patches/series 2017-10-07 20:29:54.000000000 +0000 @@ -1 +1 @@ -Config-Std-0.901-RT114342.patch +spelling-error-in-manpage.patch diff -Nru libconfig-std-perl-0.901/debian/patches/spelling-error-in-manpage.patch libconfig-std-perl-0.903/debian/patches/spelling-error-in-manpage.patch --- libconfig-std-perl-0.901/debian/patches/spelling-error-in-manpage.patch 1970-01-01 00:00:00.000000000 +0000 +++ libconfig-std-perl-0.903/debian/patches/spelling-error-in-manpage.patch 2017-10-07 20:29:54.000000000 +0000 @@ -0,0 +1,18 @@ +Description: Fix spelling error in manpage +Origin: vendor +Author: Salvatore Bonaccorso +Last-Update: 2017-10-07 +Forwarded: https://rt.cpan.org/Ticket/Display.html?id=123214 +Bug: https://rt.cpan.org/Ticket/Display.html?id=123214 + +--- a/lib/Config/Std.pm ++++ b/lib/Config/Std.pm +@@ -747,7 +747,7 @@ C +Name: Config-Std +Repository: https://github.com/n1vux/Config-Std-Perl.git +Repository-Browse: https://github.com/n1vux/Config-Std-Perl diff -Nru libconfig-std-perl-0.901/lib/Config/Std.pm libconfig-std-perl-0.903/lib/Config/Std.pm --- libconfig-std-perl-0.901/lib/Config/Std.pm 2013-09-10 23:33:49.000000000 +0000 +++ libconfig-std-perl-0.903/lib/Config/Std.pm 2017-10-07 02:03:32.000000000 +0000 @@ -1,8 +1,10 @@ package Config::Std; -our $VERSION = '0.901'; +our $VERSION = '0.903'; -require v5.7.3; # RT#21184 +use 5.007_003; # Testing with 5.8.1 since that's cpanm minimum :-) +use strict; +use warnings; my %global_def_sep; my %global_inter_gap; @@ -15,6 +17,7 @@ for my $sub_name (qw( read_config write_config )) { $opt_ref->{$sub_name} ||= $sub_name; } + no strict "refs"; *{$caller.'::'.$opt_ref->{read_config}} = \&Config::Std::Hash::read_config; *{$caller.'::'.$opt_ref->{write_config}} = \&Config::Std::Hash::write_config; } @@ -77,7 +80,7 @@ my $serialization = q{}; - for $n (0..$#{$vals}) { + for my $n (0..$#{$vals}) { my ($val,$sep,$comm) = @{$vals->[$n]}{qw(val sep comm)}; my $val_type = ref $val; @@ -97,7 +100,7 @@ return $serialization; } - sub update { + sub update { my ($self, $hash_ref, $updated_ref) = @_; my $ident = ident $self; @@ -108,7 +111,7 @@ } else { my $val = $hash_ref->{$key}; - @newvals = ref $val eq 'ARRAY' ? @{$val} : $val; + my @newvals = ref $val eq 'ARRAY' ? @{$val} : $val; for my $n (0..$#newvals) { $vals_of{$ident}[$n]{val} = $newvals[$n]; } @@ -218,7 +221,7 @@ return unless $is_first{ident $self}; my $first = 1; - # RT 85956 + # RT 85956 for my $key ( sort grep {!$updated_ref->{$_}} keys %{$hash_ref}) { my $value = $hash_ref->{$key}; my $separate = ref $value || $value =~ m/\n./xms; @@ -266,7 +269,7 @@ return; } - my $keyval + my $keyval = Config::Std::Keyval->new({key=>$key, sep=>$sep, val=>$val, comm=>$comm}); push @{$components_of{$ident}}, $keyval; $seen->{$key} = $keyval; @@ -315,7 +318,7 @@ for my $block ( @{$array_rep_for{$hash_ref}} ) { my $block_name = $block->get_name(); $block->extend($hash_ref->{$block_name}, $updated{$block_name}, - $post_gap, inter_gap + $post_gap, $inter_gap ); } @@ -485,6 +488,13 @@ return \@config_file; } + sub DEMOLISH { + my ($self, $ident) = @_; + + # Do nothing. Defined to suppress use warnings in Class::Std destructor. + } + + } @@ -498,7 +508,7 @@ =head1 VERSION -This document describes Config::Std version 0.901 +This document describes Config::Std version 0.903 =head1 SYNOPSIS @@ -520,7 +530,7 @@ # Write the config information to another file as well... write_config %config, $other_file_name; - + =head1 DESCRIPTION This module implements yet another damn configuration-file system. @@ -532,13 +542,13 @@ The whole point of Config::Std is to encourage use of one standard layout and syntax in config files. Damian says "I could have gotten away with it, I would have only allowed one separator. But it proved impossible to choose between C<:> and C<=> -(half the people I asked wanted one, half wanted the other)." +(half the people I asked wanted one, half wanted the other)." Providing round-trip file re-write is the spoonful of sugar to help the medicine go down. -The supported syntax is within the general INI file family +The supported syntax is within the general INI file family -See Chapter 19 of "Perl Best Practices" (O'Reilly, 2005) +See Chapter 19 of "Perl Best Practices" (O'Reilly, 2005) for more detail on the -rationale for this approach. +rationale for this approach. =head2 Configuration language @@ -562,7 +572,7 @@ ; Valid comment key: value ; Not a comment, just part of the value -NOTE BENE -- that last is a BAD EXAMPLE of what is NOT supported. +NOTE BENE -- that last is a BAD EXAMPLE of what is NOT supported. This module supports full-line comments only, not on same line with semantic content. =head3 Sections @@ -625,15 +635,15 @@ When writing out a config file, Config::Std tries to preserve whichever separator was used in the original data (if that data was read -in). New data +in). New data (created by code not parsed by C) is written back with a colon as its default separator, unless you specify the only other separator value C<'='> when the module is loaded: use Config::Std { def_sep => '=' }; -Note that this does not change read-in parsing, -does not change punctuation for values that were parsed, +Note that this does not change read-in parsing, +does not change punctuation for values that were parsed, and will not allow values other than C<'='> or C<':'>. Everything from the first non-whitespace character after the separator, @@ -666,7 +676,7 @@ # Use octothorpe/newline to delimit comments comment delims: # \n - + =head3 Multi-line configuration values @@ -789,12 +799,12 @@ } -=head1 INTERFACE +=head1 INTERFACE The following subroutines are exported automatically whenever the module is loaded... -=over +=over =item C<< read_config($filename => %config_hash) >> @@ -885,10 +895,10 @@ C option: # No empty line between single-line config values... - use Config::Std { def_gap => 0 }; + use Config::Std { def_gap => 0 }; # An empty line between all single-line config values... - use Config::Std { def_gap => 1 }; + use Config::Std { def_gap => 1 }; Regardless of the value passed for C, new multi-line values are always written with an empty line above and below them. Likewise, values @@ -897,12 +907,12 @@ =head1 DIAGNOSTICS -=over +=over =item Can't open config file '%s' (%s) You tried to read in a configuration file, but the file you specified -didn't exist. Perhaps the filepath you specified was wrong. Or maybe +didn't exist. Perhaps the filepath you specified was wrong. Or maybe your application didn't have permission to access the file you specified. =item Can't read from locked config file '$filename' @@ -965,7 +975,7 @@ =head1 INCOMPATIBILITIES -Those variants of INI file dialect supporting partial-line comment are incompatible. +Those variants of INI file dialect supporting partial-line comment are incompatible. (This is the price of keeping comments when re-writing.) @@ -973,11 +983,27 @@ =over +=item Memory leak re-reading + +A daemon re-reading its config file has reported a memory leak. + +=item Parallel testing not safe + +This is a config file module. Tests written before C got parallel +testing are unsafe with parallel testing, surprise! +Settings are now included to force serial testing (until we refactor all tests +to use temp dirs?). + +If using an older Perl < 5.21.1, and Module.PL, and getting out-of-sequence test failures installing this module, either +update Test::Harness~'>= 3.31' +or export HARNESS_OPTIONS=j1 +(or force/no-test, or use Build.PL and/or perl-5.22.0 or newer instead). + =item Loading on demand -If you attempt to load C and C +If you attempt to load C and C at runtime with C, you can not rely upon the prototype -to convert a regular hash to a reference. To work around this, +to convert a regular hash to a reference. To work around this, you must explicitly pass a reference to the config hash. require Config::Std; @@ -1003,9 +1029,6 @@ A comment before the first section is not always retained on write-back, if the '' default section is empty. -=item 00write.t test 5 fails on perl5.8.1 (RT#17425) - -Due to an incompatible change in v5.8.1 partially reversed in v5.8.2, hash key randomisation can cause test to fail in that one version of Perl. Workaround is export environment variable PERL_HASH_SEED=0. =back @@ -1017,14 +1040,14 @@ =head1 AUTHOR Damian Conway C<< >> -Maintainers +Maintainers Bill Ricker C<< >> Tom Metro C<< >> =head1 LICENCE AND COPYRIGHT -Copyright (c) 2005, Damian Conway C<< >>. -Copyright (c) 2011, D.Conway, W.Ricker C<< >> All rights reserved. +Copyright (c) 2005, Damian Conway C<< >>. +Copyright (c) 2011,2014,2017, D.Conway, W.Ricker C<< >> All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libconfig-std-perl-0.901/LICENSE libconfig-std-perl-0.903/LICENSE --- libconfig-std-perl-0.901/LICENSE 2011-04-13 03:58:11.000000000 +0000 +++ libconfig-std-perl-0.903/LICENSE 2017-10-06 16:41:28.000000000 +0000 @@ -1,4 +1,4 @@ -This software is copyright (c) 2011 by Damian Conway & Bill Ricker & Tom Metro . +This software is copyright (c) 2017 by Damian Conway & Bill Ricker & Tom Metro . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. @@ -12,21 +12,22 @@ --- The GNU General Public License, Version 1, February 1989 --- -This software is Copyright (c) 2011 by Damian Conway & Bill Ricker & Tom Metro . +This software is Copyright (c) 2017 by Damian Conway & Bill Ricker & Tom Metro . This is free software, licensed under: The GNU General Public License, Version 1, February 1989 - GNU GENERAL PUBLIC LICENSE - Version 1, February 1989 + GNU GENERAL PUBLIC LICENSE + Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public @@ -67,7 +68,7 @@ The precise terms and conditions for copying, distribution and modification follow. - GNU GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which @@ -185,7 +186,7 @@ of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN @@ -207,9 +208,9 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS - Appendix: How to Apply These Terms to Your New Programs + Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it @@ -235,8 +236,9 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA + Also add information on how to contact you by electronic and paper mail. @@ -270,7 +272,7 @@ --- The Artistic License 1.0 --- -This software is Copyright (c) 2011 by Damian Conway & Bill Ricker & Tom Metro . +This software is Copyright (c) 2017 by Damian Conway & Bill Ricker & Tom Metro . This is free software, licensed under: diff -Nru libconfig-std-perl-0.901/Makefile.PL libconfig-std-perl-0.903/Makefile.PL --- libconfig-std-perl-0.901/Makefile.PL 2011-04-13 03:58:11.000000000 +0000 +++ libconfig-std-perl-0.903/Makefile.PL 2017-10-07 00:11:34.000000000 +0000 @@ -1,17 +1,20 @@ -# Note: this file was auto-generated by Module::Build::Compat version 0.3603 +# Note: this file was auto-generated by Module::Build::Compat version 0.4224 require 5.007003; use ExtUtils::MakeMaker; WriteMakefile ( - 'PL_FILES' => {}, - 'INSTALLDIRS' => 'site', - 'NAME' => 'Config::Std', - 'EXE_FILES' => [], - 'VERSION_FROM' => 'lib/Config/Std.pm', - 'PREREQ_PM' => { - 'Test::More' => 0, - 'version' => 0, - 'Class::Std' => 0 - } - ) + 'PL_FILES' => {}, + 'PREREQ_PM' => { + 'Test::More' => 0, + 'Class::Std' => 0, + 'version' => 0 + }, + 'VERSION_FROM' => 'lib/Config/Std.pm', + 'TEST_REQUIRES' => { + 'TAP::Harness' => 3.31, # you can use older but must set HARNESS_OPTIONS=j1 if threaded + }, + 'INSTALLDIRS' => 'site', + 'NAME' => 'Config::Std', + 'EXE_FILES' => [] +) ; diff -Nru libconfig-std-perl-0.901/MANIFEST libconfig-std-perl-0.903/MANIFEST --- libconfig-std-perl-0.901/MANIFEST 2013-09-10 23:54:12.000000000 +0000 +++ libconfig-std-perl-0.903/MANIFEST 2017-10-06 17:49:10.000000000 +0000 @@ -17,4 +17,4 @@ t/comments.t t/undef.t LICENSE -META.json Module JSON meta-data (added by MakeMaker) +META.json diff -Nru libconfig-std-perl-0.901/META.json libconfig-std-perl-0.903/META.json --- libconfig-std-perl-0.901/META.json 2013-09-10 23:54:11.000000000 +0000 +++ libconfig-std-perl-0.903/META.json 2017-10-07 02:18:16.000000000 +0000 @@ -4,7 +4,7 @@ "unknown" ], "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.120921", + "generated_by" : "ExtUtils::MakeMaker version 7.06, CPAN::Meta::Converter version 2.150005", "license" : [ "unknown" ], @@ -36,8 +36,15 @@ "Test::More" : "0", "version" : "0" } + }, + "test" : { + "requires" : { + "TAP::Harness" : "3.31" + } } }, "release_status" : "stable", - "version" : "0.901" + "version" : "0.903", + "x_serialization_backend" : "JSON::PP version 2.27300" } + diff -Nru libconfig-std-perl-0.901/META.yml libconfig-std-perl-0.903/META.yml --- libconfig-std-perl-0.901/META.yml 2013-09-10 23:54:11.000000000 +0000 +++ libconfig-std-perl-0.903/META.yml 2017-10-07 02:18:16.000000000 +0000 @@ -3,22 +3,25 @@ author: - unknown build_requires: - ExtUtils::MakeMaker: 0 + ExtUtils::MakeMaker: '0' + TAP::Harness: '3.31' configure_requires: - ExtUtils::MakeMaker: 0 + ExtUtils::MakeMaker: '0' dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.120921' +generated_by: 'ExtUtils::MakeMaker version 7.06, CPAN::Meta::Converter version 2.150005' license: unknown meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 + version: '1.4' name: Config-Std no_index: directory: - t - inc requires: - Class::Std: 0 - Test::More: 0 - version: 0 -version: 0.901 + Class::Std: '0' + Test::More: '0' + version: '0' +version: '0.903' +x_serialization_backend: 'CPAN::Meta::YAML version 0.016' + diff -Nru libconfig-std-perl-0.901/README libconfig-std-perl-0.903/README --- libconfig-std-perl-0.901/README 2013-09-10 23:23:15.000000000 +0000 +++ libconfig-std-perl-0.903/README 2017-10-07 01:44:35.000000000 +0000 @@ -1,4 +1,4 @@ -Config::Std version 0.901 +Config::Std version 0.903 This module implements yet another damn configuration-file system. @@ -37,7 +37,7 @@ COPYRIGHT AND LICENCE Copyright (C) 2005, Damian Conway; -Copyright (C) 2011,2013 William Ricker + Tom Metro, maintainers for Boston.PM +Copyright (C) 2011,2013,2017 William Ricker + Tom Metro, maintainers for Boston.PM This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff -Nru libconfig-std-perl-0.901/t/undef.t libconfig-std-perl-0.903/t/undef.t --- libconfig-std-perl-0.901/t/undef.t 2006-02-17 04:50:00.000000000 +0000 +++ libconfig-std-perl-0.903/t/undef.t 2016-07-13 00:08:25.000000000 +0000 @@ -16,5 +16,5 @@ ok !eval{ write_config %data => \$output } => 'Write failed as expected'; -like $@, qr/\ACan't save undefined value for key {'FOO'}{'foo2'}/ +like $@, qr(\A\QCan't save undefined value for key {'FOO'}{'foo2'}) => 'Failed with expected exception';