summaryrefslogtreecommitdiffstats
path: root/t
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-11-15 22:48:50 -0600
committerJesse Luehrs <doy@tozt.net>2010-11-15 22:48:50 -0600
commite4afde02c9d7b7c2d1c031d18df418a166c0415f (patch)
treecaa41921009cc822145361dde98e0361871ac38a /t
parentb6f2c7d8338f012c146e01cd57ee3e0e2e5e61a3 (diff)
downloadpackage-stash-e4afde02c9d7b7c2d1c031d18df418a166c0415f.tar.gz
package-stash-e4afde02c9d7b7c2d1c031d18df418a166c0415f.zip
initial quite broken implementation of backend switching
Diffstat (limited to 't')
-rw-r--r--t/90-impl-selection.t67
1 files changed, 67 insertions, 0 deletions
diff --git a/t/90-impl-selection.t b/t/90-impl-selection.t
new file mode 100644
index 0000000..4457dbe
--- /dev/null
+++ b/t/90-impl-selection.t
@@ -0,0 +1,67 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+
+sub clear_load {
+ delete $Package::{'Stash::'};
+ delete $INC{'Package/Stash.pm'};
+ delete $INC{'Package/Stash/PP.pm'};
+ delete $INC{'Package/Stash/XS.pm'};
+}
+
+my $has_xs;
+
+{
+ $has_xs = eval "require Package::Stash::XS; 1";
+ clear_load;
+}
+
+{
+ require Package::Stash;
+ warn $Package::Stash::IMPLEMENTATION;
+ is($Package::Stash::IMPLEMENTATION, $has_xs ? 'XS' : 'PP',
+ "autodetected properly");
+ can_ok('Package::Stash', 'new', "and got some methods");
+ clear_load;
+}
+
+{
+ $ENV{PACKAGE_STASH_IMPLEMENTATION} = 'PP';
+ require Package::Stash;
+ is($Package::Stash::IMPLEMENTATION, 'PP',
+ "autodetected properly");
+ can_ok('Package::Stash', 'new', "and got some methods");
+ clear_load;
+}
+
+SKIP: {
+ skip "no XS", 2 unless $has_xs;
+ $ENV{PACKAGE_STASH_IMPLEMENTATION} = 'XS';
+ require Package::Stash;
+ is($Package::Stash::IMPLEMENTATION, 'XS',
+ "autodetected properly");
+ can_ok('Package::Stash', 'new', "and got some methods");
+ clear_load;
+}
+
+{
+ $Package::Stash::IMPLEMENTATION = 'PP';
+ require Package::Stash;
+ is($Package::Stash::IMPLEMENTATION, 'PP',
+ "autodetected properly");
+ can_ok('Package::Stash', 'new', "and got some methods");
+ clear_load;
+}
+
+SKIP: {
+ skip "no XS", 2 unless $has_xs;
+ $Package::Stash::IMPLEMENTATION = 'XS';
+ require Package::Stash;
+ is($Package::Stash::IMPLEMENTATION, 'XS',
+ "autodetected properly");
+ can_ok('Package::Stash', 'new', "and got some methods");
+ clear_load;
+}
+
+done_testing;