X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2Fdbixcsl_dumper_tests.pm;h=1387810a9c032b689da002dcf40accfd8af64b12;hb=836c85195952fb4ea802595a60597a7f5599a528;hp=a778b03aedccc7cca9e2951af36f0fdc7edc3381;hpb=74f213a5b308eb7b7d1fb9f980740801d5a8bf1e;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/lib/dbixcsl_dumper_tests.pm b/t/lib/dbixcsl_dumper_tests.pm index a778b03..1387810 100644 --- a/t/lib/dbixcsl_dumper_tests.pm +++ b/t/lib/dbixcsl_dumper_tests.pm @@ -4,6 +4,7 @@ use strict; use Test::More; use File::Path; use IPC::Open3; +use IO::Handle; use DBIx::Class::Schema::Loader::Utils 'dumper_squashed'; use DBIx::Class::Schema::Loader (); @@ -48,7 +49,7 @@ sub _dump_directly { my @warns; eval { local $SIG{__WARN__} = sub { push(@warns, @_) }; - $schema_class->connect(_get_dsn(\%tdata)); + $schema_class->connect(_get_connect_info(\%tdata)); }; my $err = $@; @@ -71,27 +72,36 @@ sub _dump_dbicdump { push @cmd, '-o', "$opt=$val"; } - push @cmd, $tdata{classname}, _get_dsn(\%tdata); + my @connect_info = _get_connect_info(\%tdata); + + for my $info (@connect_info) { + $info = dumper_squashed $info if ref $info; + } + + push @cmd, $tdata{classname}, @connect_info; # make sure our current @INC gets used by dbicdump use Config; local $ENV{PERL5LIB} = join $Config{path_sep}, @INC, ($ENV{PERL5LIB} || ''); - my ($in, $out, $err); - my $pid = open3($in, $out, $err, @cmd); + my $std = { map { $_ => IO::Handle->new } (qw/in out err/) }; + my $pid = open3(@{$std}{qw/in out err/}, @cmd); - my @out = <$out>; waitpid($pid, 0); + my @stdout = $std->{out}->getlines; + ok (!scalar @stdout, 'Silence on STDOUT'); + + my @warnings = $std->{err}->getlines; if ($? >> 8 != 0) { - my $error = pop @out; - _check_error($error, $tdata{error}); + my $exception = pop @warnings; + _check_error($exception, $tdata{error}); } - return @out; + return @warnings; } -sub _get_dsn { +sub _get_connect_info { my $opts = shift; my $test_db_class = $opts->{test_db_class} || 'make_dbictest_db'; @@ -104,7 +114,7 @@ sub _get_dsn { ${$test_db_class . '::dsn'}; }; - return $dsn; + return ($dsn, @{ $opts->{extra_connect_info} || [] }); } sub _check_error {