Switch the shortener (used only by oracle) reqs to an optional dependency
Peter Rabbitson [Fri, 17 Dec 2010 08:00:40 +0000 (09:00 +0100)]
Makefile.PL
lib/DBIx/Class/Optional/Dependencies.pm
lib/DBIx/Class/SQLMaker/Oracle.pm
t/73oracle.t
t/73oracle_hq.t
t/sqlmaker/oracle.t
t/sqlmaker/oraclejoin.t

index 3a91cc7..67fa6e4 100644 (file)
@@ -77,12 +77,8 @@ my $runtime_requires = {
   'Sub::Name'                => '0.04',
   'Variable::Magic'          => '0.44',
 
-  # corelibs needing a specific bugfixed version
+  # dual-life corelibs needing a specific bugfixed version
   'File::Path'               => '2.07',
-
-  # Oracle-only optionals
-  'Math::BigInt'             => '1.89',
-  'Math::Base36'             => '0.07',
 };
 
 # this is so we can order requires alphabetically
index 30d6244..37759b9 100644 (file)
@@ -38,6 +38,11 @@ my $datetime_basic = {
   'DateTime::Format::Strptime'    => '1.2',
 };
 
+my $id_shortener = {
+  'Math::BigInt'                  => '1.89',
+  'Math::Base36'                  => '0.07',
+};
+
 my $reqs = {
   dist => {
     #'Module::Install::Pod::Inherit' => '0.01',
@@ -88,10 +93,14 @@ my $reqs = {
     },
     pod => {
       title => 'Storage::DBI::deploy()',
-      desc => 'Modules required for L<DBIx::Class::Storage::DBI/deploy> and L<DBIx::Class::Storage::DBI/deploymen_statements>',
+      desc => 'Modules required for L<DBIx::Class::Storage::DBI/deploy> and L<DBIx::Class::Storage::DBI/deployment_statements>',
     },
   },
 
+  id_shortener => {
+    req => $id_shortener,
+  },
+
   test_pod => {
     req => {
       'Test::Pod'                 => '1.41',
@@ -211,6 +220,7 @@ my $reqs = {
     req => {
       $ENV{DBICTEST_ORA_DSN}
         ? (
+          %$id_shortener,
           'DateTime::Format::Oracle' => '0',
           'DBD::Oracle'              => '1.24',
         ) : ()
index b2a2c1f..b05f3c2 100644 (file)
@@ -7,6 +7,13 @@ use strict;
 use base qw( DBIx::Class::SQLMaker );
 use Carp::Clan qw/^DBIx::Class|^SQL::Abstract/;
 
+BEGIN {
+  use Carp::Clan qw/^DBIx::Class/;
+  use DBIx::Class::Optional::Dependencies;
+  croak('The following extra modules are required for Oracle-based Storages ' . DBIx::Class::Optional::Dependencies->req_missing_for ('id_shortener') )
+    unless DBIx::Class::Optional::Dependencies->req_ok_for ('id_shortener');
+}
+
 sub new {
   my $self = shift;
   my %opts = (ref $_[0] eq 'HASH') ? %{$_[0]} : @_;
index 358ac5f..ca373cb 100644 (file)
@@ -40,6 +40,9 @@ use lib qw(t/lib);
 use DBICTest;
 use DBIC::SqlMakerTest;
 
+plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_rdbms_oracle')
+  unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_rdbms_oracle');
+
 $ENV{NLS_SORT} = "BINARY";
 $ENV{NLS_COMP} = "BINARY";
 $ENV{NLS_LANG} = "AMERICAN";
index d79fae3..11e42ef 100644 (file)
@@ -11,6 +11,9 @@ $ENV{NLS_SORT} = "BINARY";
 $ENV{NLS_COMP} = "BINARY";
 $ENV{NLS_LANG} = "AMERICAN";
 
+plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_rdbms_oracle')
+  unless DBIx::Class::Optional::Dependencies->req_ok_for ('test_rdbms_oracle');
+
 my ($dsn,  $user,  $pass)  = @ENV{map { "DBICTEST_ORA_${_}" }  qw/DSN USER PASS/};
 
 plan skip_all => 'Set $ENV{DBICTEST_ORA_DSN}, _USER and _PASS to run this test.'
index cb071eb..14e74e2 100644 (file)
@@ -1,6 +1,13 @@
 use strict;
 use warnings;
 use Test::More;
+
+BEGIN {
+  require DBIx::Class::Optional::Dependencies;
+  plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('id_shortener')
+    unless DBIx::Class::Optional::Dependencies->req_ok_for ('id_shortener');
+}
+
 use Test::Exception;
 use Data::Dumper::Concise;
 use lib qw(t/lib);
index 53ba94c..24901a6 100644 (file)
@@ -3,14 +3,18 @@ use warnings;
 
 use Test::More;
 
+BEGIN {
+  require DBIx::Class::Optional::Dependencies;
+  plan skip_all => 'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('id_shortener')
+    unless DBIx::Class::Optional::Dependencies->req_ok_for ('id_shortener');
+}
+
 use lib qw(t/lib);
 use DBIx::Class::SQLMaker::OracleJoins;
 use DBICTest;
 use DBIC::SqlMakerTest;
 
-my $sa = new DBIx::Class::SQLMaker::OracleJoins;
-
-# search with undefined or empty $cond
+my $sa = DBIx::Class::SQLMaker::OracleJoins->new;
 
 #  my ($self, $table, $fields, $where, $order, @rest) = @_;
 my ($sql, @bind) = $sa->select(