summaryrefslogtreecommitdiffstats
path: root/t/impl-selection/02-env.t
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2010-11-16 01:34:21 -0600
committerJesse Luehrs <doy@tozt.net>2010-11-16 01:34:21 -0600
commita5129e538980a4e414dffc8ded23c921642e2dea (patch)
tree11feedd27c4e446db40a3948dc7492bc0892b818 /t/impl-selection/02-env.t
parente4afde02c9d7b7c2d1c031d18df418a166c0415f (diff)
downloadpackage-stash-a5129e538980a4e414dffc8ded23c921642e2dea.tar.gz
package-stash-a5129e538980a4e414dffc8ded23c921642e2dea.zip
okay, working implementation selection
Diffstat (limited to 't/impl-selection/02-env.t')
-rw-r--r--t/impl-selection/02-env.t29
1 files changed, 29 insertions, 0 deletions
diff --git a/t/impl-selection/02-env.t b/t/impl-selection/02-env.t
new file mode 100644
index 0000000..3369488
--- /dev/null
+++ b/t/impl-selection/02-env.t
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+
+# XXX: work around dumb core segfault bug when you delete stashes
+sub get_impl { eval '$Package::Stash::IMPLEMENTATION' }
+sub set_impl { eval '$Package::Stash::IMPLEMENTATION = "' . $_[0] . '"' }
+
+{
+ $ENV{PACKAGE_STASH_IMPLEMENTATION} = 'PP';
+ require Package::Stash;
+ is(get_impl, 'PP', "autodetected properly: PP");
+ can_ok('Package::Stash', 'new');
+}
+
+delete $Package::{'Stash::'};
+delete $INC{'Package/Stash.pm'};
+delete $INC{'Package/Stash/PP.pm'};
+
+SKIP: {
+ skip "no XS", 2 unless eval "require Package::Stash::XS; 1";
+ $ENV{PACKAGE_STASH_IMPLEMENTATION} = 'XS';
+ require Package::Stash;
+ is(get_impl, 'XS', "autodetected properly: XS");
+ can_ok('Package::Stash', 'new');
+}
+
+done_testing;