X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2Fdbixcsl_dumper_tests.pm;h=0382c0c23b97332cde3feca523944a297ac25f67;hb=160b07c52696f02de5573349e70c9892e71479ce;hp=9e71ff8a045f58dd6c41dfe95c3d6c2115eb71ba;hpb=f21f7e97cf60c1a60d8309c9a4ec79530c95b9c5;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/lib/dbixcsl_dumper_tests.pm b/t/lib/dbixcsl_dumper_tests.pm index 9e71ff8..0382c0c 100644 --- a/t/lib/dbixcsl_dumper_tests.pm +++ b/t/lib/dbixcsl_dumper_tests.pm @@ -5,9 +5,10 @@ use Test::More; use File::Path; use IPC::Open3; use IO::Handle; -use List::MoreUtils 'any'; +use List::Util 'any'; use DBIx::Class::Schema::Loader::Utils 'dumper_squashed'; use DBIx::Class::Schema::Loader (); +use Class::Unload (); use namespace::clean; use dbixcsl_test_dir '$tdir'; @@ -74,12 +75,13 @@ sub _dump_directly { }; my $err = $@; - $schema_class->storage->disconnect if !$err && $schema_class->storage; - undef *{$schema_class}; + my $classes = !$err && $schema_class->loader->generated_classes; + + Class::Unload->unload($schema_class); _check_error($err, $tdata{error}); - return @warns; + return \@warns, $classes; } sub _dump_dbicdump { @@ -128,7 +130,7 @@ sub _dump_dbicdump { _check_error($exception, $tdata{error}); } - return @warnings; + return \@warnings; } sub _get_connect_info { @@ -166,18 +168,27 @@ sub _check_error { } sub _test_dumps { - my ($tdata, @warns) = @_; + my ($tdata, $warns, $classes) = @_; my %tdata = %{$tdata}; my $schema_class = $tdata{classname}; my $check_warns = $tdata{warnings}; - is(@warns, @$check_warns, "$schema_class warning count") - or diag @warns; + is(@$warns, @$check_warns, "$schema_class warning count") + or diag @$warns; for(my $i = 0; $i <= $#$check_warns; $i++) { - like(($warns[$i] || ''), $check_warns->[$i], "$schema_class warning $i"); + like(($warns->[$i] || ''), $check_warns->[$i], "$schema_class warning $i"); + } + + if ($classes && (my $results = $tdata{generated_results})) { + my $ns = $tdata{options}{use_namespaces} ? ("::".($tdata{result_namespace} || "Result")) : ""; + is_deeply( + [ sort grep { $_ ne $schema_class } @$classes ], + [ sort map { "${schema_class}${ns}::$_" } @$results ], + "$schema_class generated_classes set correctly", + ); } my $file_regexes = $tdata{regexes}; @@ -199,19 +210,21 @@ sub _test_dumps { } } -sub _dump_file_like { +sub _slurp { my $path = shift; - open(my $dumpfh, '<', $path) or die "Failed to open '$path': $!"; + open(my $dumpfh, '<:raw', $path) or die "Failed to open '$path': $!"; my $contents = do { local $/; <$dumpfh>; }; close($dumpfh); + return ($path, $contents); +} + +sub _dump_file_like { + my ($path, $contents) = _slurp shift; like($contents, $_, "$path matches $_") for @_; } sub _dump_file_not_like { - my $path = shift; - open(my $dumpfh, '<', $path) or die "Failed to open '$path': $!"; - my $contents = do { local $/; <$dumpfh>; }; - close($dumpfh); + my ($path, $contents) = _slurp shift; unlike($contents, $_, "$path does not match $_") for @_; }