d1013dcb0d650ff3f4d7005705acbc135d514680
[dh-make-perl] / dev / arm / libpod-escapes-perl / libpod-escapes-perl-1.04 / t / 01_about_verbose.t
1
2 require 5;
3 # Time-stamp: "2004-04-27 19:44:49 ADT"
4
5 # Summary of, well, things.
6
7 use Test;
8 BEGIN {plan tests => 2};
9
10 ok 1;
11
12 use Pod::Escapes ();
13
14 #chdir "t" if -e "t";
15
16 {
17   my @out;
18   push @out,
19     "\n\nPerl v",
20     defined($^V) ? sprintf('%vd', $^V) : $],
21     " under $^O ",
22     (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber())
23       ? ("(Win32::BuildNumber ", &Win32::BuildNumber(), ")") : (),
24     (defined $MacPerl::Version)
25       ? ("(MacPerl version $MacPerl::Version)") : (),
26     "\n"
27   ;
28
29   # Ugly code to walk the symbol tables:
30   my %v;
31   my @stack = ('');  # start out in %::
32   my $this;
33   my $count = 0;
34   my $pref;
35   while(@stack) {
36     $this = shift @stack;
37     die "Too many packages?" if ++$count > 1000;
38     next if exists $v{$this};
39     next if $this eq 'main'; # %main:: is %::
40
41     #print "Peeking at $this => ${$this . '::VERSION'}\n";
42     
43     if(defined ${$this . '::VERSION'} ) {
44       $v{$this} = ${$this . '::VERSION'}
45     } elsif(
46        defined *{$this . '::ISA'} or defined &{$this . '::import'}
47        or ($this ne '' and grep defined *{$_}{'CODE'}, values %{$this . "::"})
48        # If it has an ISA, an import, or any subs...
49     ) {
50       # It's a class/module with no version.
51       $v{$this} = undef;
52     } else {
53       # It's probably an unpopulated package.
54       ## $v{$this} = '...';
55     }
56     
57     $pref = length($this) ? "$this\::" : '';
58     push @stack, map m/^(.+)::$/ ? "$pref$1" : (), keys %{$this . '::'};
59     #print "Stack: @stack\n";
60   }
61   push @out, " Modules in memory:\n";
62   delete @v{'', '[none]'};
63   foreach my $p (sort {lc($a) cmp lc($b)} keys %v) {
64     $indent = ' ' x (2 + ($p =~ tr/:/:/));
65     push @out,  '  ', $indent, $p, defined($v{$p}) ? " v$v{$p};\n" : ";\n";
66   }
67   push @out, sprintf "[at %s (local) / %s (GMT)]\n",
68     scalar(gmtime), scalar(localtime);
69   my $x = join '', @out;
70   $x =~ s/^/#/mg;
71   print $x;
72 }
73
74 print "# Running",
75   (chr(65) eq 'A') ? " in an ASCII world.\n" : " in a non-ASCII world.\n",
76   "#\n",
77 ;
78
79 print "# \@INC:\n", map("#   [$_]\n", @INC), "#\n#\n";
80
81 print "# \%INC:\n";
82 foreach my $x (sort {lc($a) cmp lc($b)} keys %INC) {
83   print "#   [$x] = [", $INC{$x} || '', "]\n";
84 }
85
86 ok 1;
87