From: Peter Rabbitson Date: Sun, 29 Mar 2009 10:30:21 +0000 (+0000) Subject: Re-add failing test X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f5ceba67b5c709e62848950e098256e86943fb70;p=dbsrgits%2FDBIx-Class-Historic.git Re-add failing test --- diff --git a/t/39load_namespaces_rt41083.t b/t/39load_namespaces_rt41083.t new file mode 100644 index 0000000..3b0fed1 --- /dev/null +++ b/t/39load_namespaces_rt41083.t @@ -0,0 +1,78 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use Test::More; + +use lib 't/lib'; + +plan tests => 15; + +sub _chk_warning { + defined $_[0]? + $_[0] !~ qr/We found ResultSet class '([^']+)' for '([^']+)', but it seems that you had already set '([^']+)' to use '([^']+)' instead/ : + 1 +} + +sub _chk_extra_sources_warning { + my $p = qr/already has a source, use register_extra_source for additional sources/; + defined $_[0]? $_[0] !~ /$p/ : 1; +} + +sub _verify_sources { + my @monikers = @_; + is_deeply ( + [ sort DBICNSTest::RtBug41083->sources ], + \@monikers, + 'List of resultsource registrations', + ); + + my %seen_rc; + for my $m (@monikers) { + my $src = DBICNSTest::RtBug41083->source ($m); + my $rc = $src->result_class; + + ok ( (++$seen_rc{$rc} == 1), "result_class of $m is unique") + || diag "Source: $m, result_class: $rc"; + like ($rc, qr/:: $m $/x, 'result_class matches moniker'); + } +} + +{ + my $warnings; + eval { + local $SIG{__WARN__} = sub { $warnings .= shift }; + package DBICNSTest::RtBug41083; + use base 'DBIx::Class::Schema'; + __PACKAGE__->load_namespaces( + result_namespace => 'Schema_A', + resultset_namespace => 'ResultSet_A', + default_resultset_class => 'ResultSet' + ); + }; + + ok(!$@) or diag $@; + ok(_chk_warning($warnings), 'expected no resultset complaint'); + ok(_chk_extra_sources_warning($warnings), 'expected no extra sources complaint') or diag($warnings); + + _verify_sources (qw/A A::Sub/); +} + +{ + my $warnings; + eval { + local $SIG{__WARN__} = sub { $warnings .= shift }; + package DBICNSTest::RtBug41083; + use base 'DBIx::Class::Schema'; + __PACKAGE__->load_namespaces( + result_namespace => 'Schema', + resultset_namespace => 'ResultSet', + default_resultset_class => 'ResultSet' + ); + }; + ok(!$@) or diag $@; + ok(_chk_warning($warnings), 'expected no resultset complaint') or diag $warnings; + ok(_chk_extra_sources_warning($warnings), 'expected no extra sources complaint') or diag($warnings); + + _verify_sources (qw/A A::Sub Foo Foo::Sub/); +}