X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2Fdbixcsl_common_tests.pm;h=7fa48b45d26a72a23232329e146635e9e6e2dee6;hb=9ef345a5c67a5e95220ac24c9fe8bee512348ba9;hp=306860a0f3f9aa946065d44938aad84bef4b3772;hpb=2ae19e70a562eae7d346d247fbdba10c81a13a67;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/t/lib/dbixcsl_common_tests.pm b/t/lib/dbixcsl_common_tests.pm index 306860a..7fa48b4 100644 --- a/t/lib/dbixcsl_common_tests.pm +++ b/t/lib/dbixcsl_common_tests.pm @@ -120,7 +120,7 @@ sub run_tests { $num_rescans++ if $self->{vendor} eq 'Firebird'; plan tests => @connect_info * - (209 + $num_rescans * $col_accessor_map_tests + $extra_count + ($self->{data_type_tests}{test_count} || 0)); + (210 + $num_rescans * $col_accessor_map_tests + $extra_count + ($self->{data_type_tests}{test_count} || 0)); foreach my $info_idx (0..$#connect_info) { my $info = $connect_info[$info_idx]; @@ -156,7 +156,14 @@ sub run_only_extra_tests { $dbh->do($_) for @{ $self->{extra}{create} || [] }; if (not ($self->{vendor} eq 'mssql' && $dbh->{Driver}{Name} eq 'Sybase')) { - $dbh->do($_) for @{ $self->{data_type_tests}{ddl} || []}; + foreach my $ddl (@{ $self->{data_type_tests}{ddl} || []}) { + if (my $cb = $self->{data_types_ddl_cb}) { + $cb->($ddl); + } + else { + $dbh->do($ddl); + } + } } $self->{_created} = 1; @@ -223,6 +230,7 @@ sub setup_schema { qr/^(?:\S+\.)?(?:(?:$self->{vendor}|extra)[_-]?)?loader[_-]?test[0-9]+(?!.*_)/i, result_namespace => RESULT_NAMESPACE, resultset_namespace => RESULTSET_NAMESPACE, + schema_components => [ 'TestSchemaComponent', '+TestSchemaComponentFQN' ], additional_classes => 'TestAdditional', additional_base_classes => 'TestAdditionalBase', left_base_classes => [ qw/TestLeftBase/ ], @@ -384,6 +392,10 @@ sub test_schema { is_deeply $schema_resultset_namespace, RESULTSET_NAMESPACE, 'resultset_namespace set correctly on Schema'; + like $schema_code, +qr/\n__PACKAGE__->load_components\("TestSchemaComponent", "\+TestSchemaComponentFQN"\);\n\n__PACKAGE__->load_namespaces/, + 'schema_components works'; + my @columns_lt2 = $class2->columns; is_deeply( \@columns_lt2, [ qw/id dat dat2 set_primary_key can dbix_class_testcomponent dbix_class_testcomponentmap testcomponent_fqn meta test_role_method test_role_for_map_method crumb_crisp_coating/ ], "Column Ordering" ); @@ -1864,7 +1876,14 @@ sub create { $dbh->do($_) foreach (@statements); if (not ($self->{vendor} eq 'mssql' && $dbh->{Driver}{Name} eq 'Sybase')) { - $dbh->do($_) foreach (@{ $self->{data_type_tests}{ddl} || [] }); + foreach my $ddl (@{ $self->{data_type_tests}{ddl} || [] }) { + if (my $cb = $self->{data_types_ddl_cb}) { + $cb->($ddl); + } + else { + $dbh->do($ddl); + } + } } unless ($self->{skip_rels}) { @@ -2122,15 +2141,16 @@ sub setup_data_type_tests { my %seen_col_names; while (my ($col_def, $expected_info) = each %$types) { - (my $type_alias = $col_def) =~ s/\( ([^)]+) \)//xg; + (my $type_alias = $col_def) =~ s/\( (.+) \)(?=(?:[^()]* '(?:[^']* (?:''|\\')* [^']*)* [^\\']' [^()]*)*\z)//xg; my $size = $1; $size = '' unless defined $size; + $size = '' unless $size =~ /^[\d, ]+\z/; $size =~ s/\s+//g; my @size = split /,/, $size; # some DBs don't like very long column names - if ($self->{vendor} =~ /^(?:firebird|sqlanywhere|oracle|db2)\z/i) { + if ($self->{vendor} =~ /^(?:Firebird|SQLAnywhere|Oracle|DB2)\z/i) { my ($col_def, $default) = $type_alias =~ /^(.*)(default.*)?\z/i; $type_alias = substr $col_def, 0, 15;