initial quite broken implementation of backend switching
[gitmo/Package-Stash.git] / t / 90-impl-selection.t
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use Test::More;
5
6 sub 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
13 my $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
38 SKIP: {
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
57 SKIP: {
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
67 done_testing;