initial quite broken implementation of backend switching
[gitmo/Package-Stash.git] / t / 90-impl-selection.t
CommitLineData
e4afde02 1#!/usr/bin/env perl
2use strict;
3use warnings;
4use Test::More;
5
6sub clear_load {
7 delete $Package::{'Stash::'};
8 delete $INC{'Package/Stash.pm'};
9 delete $INC{'Package/Stash/PP.pm'};
10 delete $INC{'Package/Stash/XS.pm'};
11}
12
13my $has_xs;
14
15{
16 $has_xs = eval "require Package::Stash::XS; 1";
17 clear_load;
18}
19
20{
21 require Package::Stash;
22 warn $Package::Stash::IMPLEMENTATION;
23 is($Package::Stash::IMPLEMENTATION, $has_xs ? 'XS' : 'PP',
24 "autodetected properly");
25 can_ok('Package::Stash', 'new', "and got some methods");
26 clear_load;
27}
28
29{
30 $ENV{PACKAGE_STASH_IMPLEMENTATION} = 'PP';
31 require Package::Stash;
32 is($Package::Stash::IMPLEMENTATION, 'PP',
33 "autodetected properly");
34 can_ok('Package::Stash', 'new', "and got some methods");
35 clear_load;
36}
37
38SKIP: {
39 skip "no XS", 2 unless $has_xs;
40 $ENV{PACKAGE_STASH_IMPLEMENTATION} = 'XS';
41 require Package::Stash;
42 is($Package::Stash::IMPLEMENTATION, 'XS',
43 "autodetected properly");
44 can_ok('Package::Stash', 'new', "and got some methods");
45 clear_load;
46}
47
48{
49 $Package::Stash::IMPLEMENTATION = 'PP';
50 require Package::Stash;
51 is($Package::Stash::IMPLEMENTATION, 'PP',
52 "autodetected properly");
53 can_ok('Package::Stash', 'new', "and got some methods");
54 clear_load;
55}
56
57SKIP: {
58 skip "no XS", 2 unless $has_xs;
59 $Package::Stash::IMPLEMENTATION = 'XS';
60 require Package::Stash;
61 is($Package::Stash::IMPLEMENTATION, 'XS',
62 "autodetected properly");
63 can_ok('Package::Stash', 'new', "and got some methods");
64 clear_load;
65}
66
67done_testing;