(travis) Remove makefile fixup, now hardcoded in the subrepo
[dbsrgits/DBIx-Class.git] / t / storage / quote_names.t
index 6bb8bfd..591606c 100644 (file)
@@ -1,11 +1,13 @@
+BEGIN { do "./t/lib/ANFANG.pm" or die ( $@ || $! ) }
+
 use strict;
 use warnings;
 use Test::More;
-use Test::Exception;
-use Data::Dumper::Concise;
 use Try::Tiny;
-use lib qw(t/lib);
+
 use DBICTest;
+use DBIx::Class::_Util 'dump_value';
+$Data::Dumper::Indent = 0;
 
 my %expected = (
   'DBIx::Class::Storage::DBI'                    =>
@@ -51,14 +53,17 @@ my %expected = (
 );
 
 for my $class (keys %expected) { SKIP: {
-  eval "require ${class}"
-    or skip "Skipping test of quotes for $class due to missing dependencies", 1;
+
+  eval "require ${class}" or do {
+    note "Failed load of $class:\n\n$@\n\n";
+    skip "Skipping test of quotes for $class due to missing compile-time dependencies", 1;
+  };
 
   my $mapping = $expected{$class};
   my ($quote_char, $name_sep) = @$mapping{qw/quote_char name_sep/};
   my $instance = $class->new;
 
-  my $quote_char_text = dumper($quote_char);
+  my $quote_char_text = dump_value $quote_char;
 
   if (exists $mapping->{quote_char}) {
     is_deeply $instance->sql_quote_char, $quote_char,
@@ -89,6 +94,11 @@ my %dbs = (
   MSSQL_ODBC       => 'DBIx::Class::Storage::DBI::MSSQL',
 );
 
+# lie that we already locked stuff - the tests below do not touch anything
+# unless we are under travis, where the OOM killers reign and things are rough
+$ENV{DBICTEST_LOCK_HOLDER} = -1
+  unless DBICTest::RunMode->is_ci;
+
 # Make sure oracle is tried last - some clients (e.g. 10.2) have symbol
 # clashes with libssl, and will segfault everything coming after them
 for my $db (sort {
@@ -102,38 +112,40 @@ for my $db (sort {
 
   my $schema;
 
-  try {
+  my $sql_maker = try {
     $schema = DBICTest::Schema->connect($dsn, $user, $pass, {
       quote_names => 1
     });
     $schema->storage->ensure_connected;
-    1;
+    $schema->storage->sql_maker;
   } || next;
 
   my ($exp_quote_char, $exp_name_sep) =
     @{$expected{$dbs{$db}}}{qw/quote_char name_sep/};
 
-  my ($quote_char_text, $name_sep_text) = map { dumper($_) }
+  my ($quote_char_text, $name_sep_text) = map { dump_value $_ }
     ($exp_quote_char, $exp_name_sep);
 
-  is_deeply $schema->storage->sql_maker->quote_char,
+  is_deeply $sql_maker->quote_char,
     $exp_quote_char,
     "$db quote_char with quote_names => 1 is $quote_char_text";
 
 
-  is $schema->storage->sql_maker->name_sep,
+  is $sql_maker->name_sep,
     $exp_name_sep,
     "$db name_sep with quote_names => 1 is $name_sep_text";
-}
 
-done_testing;
-
-sub dumper {
-  my $val = shift;
+  # if something was produced - it better be quoted
+  if (
+    # the SQLT producer has no idea what quotes are :/
+    ! grep { $db eq $_ } qw( SYBASE DB2 )
+      and
+    my $ddl = try { $schema->deployment_statements }
+  ) {
+    my $quoted_artist = $sql_maker->_quote('artist');
 
-  my $dd = DumperObject;
-  $dd->Indent(0);
-  return $dd->Values([ $val ])->Dump;
+    like ($ddl, qr/^CREATE\s+TABLE\s+\Q$quoted_artist/msi, "$db DDL contains expected quoted table name");
+  }
 }
 
-1;
+done_testing;