Informix: write out highest precision datetime (until we can parse the datetime preci...
[dbsrgits/DBIx-Class-Schema-Loader.git] / t / 20invocations.t
index f239acf..b02402f 100644 (file)
@@ -3,7 +3,9 @@ use Test::More;
 use lib qw(t/lib);
 use make_dbictest_db;
 
-$SIG{__WARN__} = sub { }; # Suppress warnings, as we test a lot of deprecated stuff here
+local $SIG{__WARN__} = sub {
+    warn $_[0] unless $_[0] =~ /really_erase_my_files/
+};
 
 # Takes a $schema as input, runs 4 basic tests
 sub test_schema {
@@ -26,6 +28,7 @@ my @invocations = (
     'hardcode' => sub {
         package DBICTest::Schema::5;
         use base qw/ DBIx::Class::Schema::Loader /;
+        __PACKAGE__->naming('current');
         __PACKAGE__->connection($make_dbictest_db::dsn);
         __PACKAGE__;
     },
@@ -33,13 +36,14 @@ my @invocations = (
         package DBICTest::Schema::6;
         use base qw/ DBIx::Class::Schema::Loader /;
         __PACKAGE__->loader_options();
+        __PACKAGE__->naming('current');
         __PACKAGE__->connect($make_dbictest_db::dsn);
     },
     'make_schema_at' => sub {
         use DBIx::Class::Schema::Loader qw/ make_schema_at /;
         make_schema_at(
             'DBICTest::Schema::7',
-            { relationships => 1 },
+            { really_erase_my_files => 1, naming => 'current' },
             [ $make_dbictest_db::dsn ],
         );
         DBICTest::Schema::7->clone;
@@ -47,19 +51,21 @@ my @invocations = (
     'embedded_options' => sub {
         package DBICTest::Schema::8;
         use base qw/ DBIx::Class::Schema::Loader /;
+        __PACKAGE__->naming('current');
         __PACKAGE__->connect(
             $make_dbictest_db::dsn,
-            { loader_options => { relationships => 1 } }
+            { loader_options => { really_erase_my_files => 1 } }
         );
     },
     'embedded_options_in_attrs' => sub {
         package DBICTest::Schema::9;
         use base qw/ DBIx::Class::Schema::Loader /;
+        __PACKAGE__->naming('current');
         __PACKAGE__->connect(
             $make_dbictest_db::dsn,
             undef,
             undef,
-            { AutoCommit => 1, loader_options => { relationships => 1 } }
+            { AutoCommit => 1, loader_options => { really_erase_my_files => 1 } }
         );
     },
     'embedded_options_make_schema_at' => sub {
@@ -69,7 +75,10 @@ my @invocations = (
             { },
             [
                 $make_dbictest_db::dsn,
-                { loader_options => { relationships => 1 } },
+                { loader_options => {
+                    really_erase_my_files => 1,
+                    naming => 'current'
+                } },
             ],
         );
         "DBICTest::Schema::10";
@@ -77,7 +86,10 @@ my @invocations = (
     'almost_embedded' => sub {
         package DBICTest::Schema::11;
         use base qw/ DBIx::Class::Schema::Loader /;
-        __PACKAGE__->loader_options( relationships => 1 );
+        __PACKAGE__->loader_options(
+            really_erase_my_files => 1,
+            naming => 'current'
+        );
         __PACKAGE__->connect(
             $make_dbictest_db::dsn,
             undef, undef, { AutoCommit => 1 }
@@ -87,18 +99,47 @@ my @invocations = (
         use DBIx::Class::Schema::Loader;
         DBIx::Class::Schema::Loader::make_schema_at(
             'DBICTest::Schema::12',
-            { relationships => 1 },
+            { really_erase_my_files => 1, naming => 'current' },
             [ $make_dbictest_db::dsn ],
         );
         DBICTest::Schema::12->clone;
-    }
+    },
+    'no_skip_load_external' => sub {
+        # By default we should pull in t/lib/DBICTest/Schema/13/Foo.pm $skip_me since t/lib is in @INC
+        use DBIx::Class::Schema::Loader;
+        DBIx::Class::Schema::Loader::make_schema_at(
+            'DBICTest::Schema::13',
+            { really_erase_my_files => 1, naming => 'current' },
+            [ $make_dbictest_db::dsn ],
+        );
+        DBICTest::Schema::13->clone;
+    },
+    'skip_load_external' => sub {
+        # When we explicitly skip_load_external t/lib/DBICTest/Schema/14/Foo.pm should be ignored
+        use DBIx::Class::Schema::Loader;
+        DBIx::Class::Schema::Loader::make_schema_at(
+            'DBICTest::Schema::14',
+            { really_erase_my_files => 1, naming => 'current', skip_load_external => 1 },
+            [ $make_dbictest_db::dsn ],
+        );
+        DBICTest::Schema::14->clone;
+    },
 );
 
 # 4 tests per k/v pair
-plan tests => 2 * @invocations;
+plan tests => 2 * @invocations + 2;  # + 2 more manual ones below.
 
 while(@invocations >= 2) {
     my $style = shift @invocations;
     my $subref = shift @invocations;
     test_schema($style, &$subref);
 }
+
+{
+    no warnings 'once';
+
+    is($DBICTest::Schema::13::Foo::skip_me, "bad mojo",
+        "external content loaded");
+    is($DBICTest::Schema::14::Foo::skip_me, undef,
+        "external content not loaded with skip_load_external => 1");
+}