]> WPIA git - cassiopeia.git/blob - lib/openssl/external/perl/Text-Template-1.46/t/05-safe2.t
03534770f175469fa4309106b8aa888c0b15ed87
[cassiopeia.git] / lib / openssl / external / perl / Text-Template-1.46 / t / 05-safe2.t
1 #!perl
2 #
3 # test apparatus for Text::Template module
4 # still incomplete.
5
6 use Text::Template;
7
8 BEGIN {
9   eval "use Safe";
10   if ($@) {
11     print "1..0\n";
12     exit 0;
13   }
14 }
15
16 die "This is the test program for Text::Template version 1.46.
17 You are using version $Text::Template::VERSION instead.
18 That does not make sense.\n
19 Aborting"
20   unless $Text::Template::VERSION == 1.46;
21
22 print "1..12\n";
23 $n = 1;
24
25 $c = new Safe or die;
26
27 # Test handling of packages and importing.
28 $c->reval('$P = "safe root"');
29 $P = $P = 'main';
30 $Q::P = $Q::P = 'Q';
31
32 # How to effectively test the gensymming?
33
34 $t = new Text::Template TYPE => 'STRING', SOURCE => 'package is {$P}'
35     or die;
36
37 # (1) Default behavior: Inherit from calling package, `main' in this case.
38 $text = $t->fill_in();
39 print +($text eq 'package is main' ? '' : 'not '), "ok $n\n";
40 $n++;
41
42 # (2) When a package is specified, we should use that package instead.
43 $text = $t->fill_in(PACKAGE => 'Q');
44 print +($text eq 'package is Q' ? '' : 'not '), "ok $n\n";
45 $n++;
46
47 # (3) When no package is specified in safe mode, we should use the
48 # default safe root.
49 $text = $t->fill_in(SAFE => $c);
50 print +($text eq 'package is safe root' ? '' : 'not '), "ok $n\n";
51 $n++;
52
53 # (4) When a package is specified in safe mode, we should use the
54 # default safe root, after aliasing to the specified package
55 $text = $t->fill_in(SAFE => $c, PACKAGE => Q);
56 print +($text eq 'package is Q' ? '' : 'not '), "ok $n\n";
57 $n++;
58
59 # Now let's see if hash vars are installed properly into safe templates
60 $t = new Text::Template TYPE => 'STRING', SOURCE => 'hash is {$H}'
61     or die;
62
63 # (5) First in default mode
64 $text = $t->fill_in(HASH => {H => 'good5'} );
65 print +($text eq 'hash is good5' ? '' : 'not '), "ok $n\n";
66 $n++;
67
68 # (6) Now in packages
69 $text = $t->fill_in(HASH => {H => 'good6'}, PACKAGE => 'Q' );
70 print +($text eq 'hash is good6' ? '' : 'not '), "ok $n\n";
71 $n++;
72
73 # (7) Now in the default root of the safe compartment
74 $text = $t->fill_in(HASH => {H => 'good7'}, SAFE => $c );
75 print +($text eq 'hash is good7' ? '' : 'not '), "ok $n\n";
76 $n++;
77
78 # (8) Now in the default root after aliasing to a package that
79 # got the hash stuffed in
80 $text = $t->fill_in(HASH => {H => 'good8'}, SAFE => $c, PACKAGE => 'Q2' );
81 print +($text eq 'hash is good8' ? '' : 'not '), "ok $n\n";
82 $n++;
83
84 # Now let's make sure that none of the packages leaked on each other.
85 # (9) This var should NOT have been installed into the main package
86 print +(defined $H ? 'not ' : ''), "ok $n\n";
87 $H=$H;
88 $n++;
89
90 # (10) good6 was overwritten in test 7, so there's nothing to test for here.
91 print "ok $n\n";
92 $n++;
93
94 # (11) this value overwrote the one from test 6.
95 print +($Q::H eq 'good7' ? '' : 'not '), "ok $n\n";
96 $Q::H = $Q::H;
97 $n++;
98
99 # (12) 
100 print +($Q2::H eq 'good8' ? '' : 'not '), "ok $n\n";
101 $Q2::H = $Q2::H;
102 $n++;
103
104
105