diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2001-06-18 04:17:15 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-06-18 04:17:15 +0000 |
commit | b695f709e8a342e35e482b0437eb6cdacdc58b6b (patch) | |
tree | 2d16192636e6ba806ff7a907f682c74f7705a920 /lib/vars.t | |
parent | d780cd7a0195e946e636d3ee546f6ef4f21d6acc (diff) | |
download | perl-b695f709e8a342e35e482b0437eb6cdacdc58b6b.tar.gz |
The Grand Trek: move the *.t files from t/ to lib/ and ext/.
No doubt I made some mistakes like missed some files or
misnamed some files. The naming rules were more or less:
(1) if the module is from CPAN, follows its ways, be it
t/*.t or test.pl.
(2) otherwise if there are multiple tests for a module
put them in a t/
(3) otherwise if there's only one test put it in Module.t
(4) helper files go to module/ (locale, strict, warnings)
(5) use longer filenames now that we can (but e.g. the
compat-0.6.t and the Text::Balanced test files still
were renamed to be more civil against the 8.3 people)
installperl was updated appropriately not to install the
*.t files or the help files from under lib.
TODO: some helper files still remain under t/ that could
follow their 'masters'. UPDATE: On second thoughts, why
should they. They can continue to live under t/lib, and
in fact the locale/strict/warnings helpers that were moved
could be moved back. This way the amount of non-installable
stuff under lib/ stays smaller.
p4raw-id: //depot/perl@10676
Diffstat (limited to 'lib/vars.t')
-rw-r--r-- | lib/vars.t | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/lib/vars.t b/lib/vars.t new file mode 100644 index 0000000000..3075f8e5ff --- /dev/null +++ b/lib/vars.t @@ -0,0 +1,105 @@ +#!./perl + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; + $ENV{PERL5LIB} = '../lib'; +} + +$| = 1; + +print "1..27\n"; + +# catch "used once" warnings +my @warns; +BEGIN { $SIG{__WARN__} = sub { push @warns, @_ }; $^W = 1 }; + +%x = (); +$y = 3; +@z = (); +$X::x = 13; + +use vars qw($p @q %r *s &t $X::p); + +my $e = !(grep /^Name "X::x" used only once: possible typo/, @warns) && 'not '; +print "${e}ok 1\n"; +$e = !(grep /^Name "main::x" used only once: possible typo/, @warns) && 'not '; +print "${e}ok 2\n"; +$e = !(grep /^Name "main::y" used only once: possible typo/, @warns) && 'not '; +print "${e}ok 3\n"; +$e = !(grep /^Name "main::z" used only once: possible typo/, @warns) && 'not '; +print "${e}ok 4\n"; +($e, @warns) = @warns != 4 && 'not '; +print "${e}ok 5\n"; + +# this is inside eval() to avoid creation of symbol table entries and +# to avoid "used once" warnings +eval <<'EOE'; +$e = ! $main::{p} && 'not '; +print "${e}ok 6\n"; +$e = ! *q{ARRAY} && 'not '; +print "${e}ok 7\n"; +$e = ! *r{HASH} && 'not '; +print "${e}ok 8\n"; +$e = ! $main::{s} && 'not '; +print "${e}ok 9\n"; +$e = ! *t{CODE} && 'not '; +print "${e}ok 10\n"; +$e = defined $X::{q} && 'not '; +print "${e}ok 11\n"; +$e = ! $X::{p} && 'not '; +print "${e}ok 12\n"; +EOE +$e = $@ && 'not '; +print "${e}ok 13\n"; + +eval q{use vars qw(@X::y !abc); $e = ! *X::y{ARRAY} && 'not '}; +print "${e}ok 14\n"; +$e = $@ !~ /^'!abc' is not a valid variable name/ && 'not '; +print "${e}ok 15\n"; + +eval 'use vars qw($x[3])'; +$e = $@ !~ /^Can't declare individual elements of hash or array/ && 'not '; +print "${e}ok 16\n"; + +{ local $^W; + eval 'use vars qw($!)'; + ($e, @warns) = ($@ || @warns) ? 'not ' : ''; + print "${e}ok 17\n"; +}; + +# NB the next test only works because vars.pm has already been loaded +eval 'use warnings "vars"; use vars qw($!)'; +$e = ($@ || (shift(@warns)||'') !~ /^No need to declare built-in vars/) + && 'not '; +print "${e}ok 18\n"; + +no strict 'vars'; +eval 'use vars qw(@x%%)'; +$e = $@ && 'not '; +print "${e}ok 19\n"; +$e = ! *{'x%%'}{ARRAY} && 'not '; +print "${e}ok 20\n"; +eval '$u = 3; @v = (); %w = ()'; +$e = $@ && 'not '; +print "${e}ok 21\n"; + +use strict 'vars'; +eval 'use vars qw(@y%%)'; +$e = $@ !~ /^'\@y%%' is not a valid variable name under strict vars/ && 'not '; +print "${e}ok 22\n"; +$e = *{'y%%'}{ARRAY} && 'not '; +print "${e}ok 23\n"; +eval '$u = 3; @v = (); %w = ()'; +my @errs = split /\n/, $@; +$e = @errs != 3 && 'not '; +print "${e}ok 24\n"; +$e = !(grep(/^Global symbol "\$u" requires explicit package name/, @errs)) + && 'not '; +print "${e}ok 25\n"; +$e = !(grep(/^Global symbol "\@v" requires explicit package name/, @errs)) + && 'not '; +print "${e}ok 26\n"; +$e = !(grep(/^Global symbol "\%w" requires explicit package name/, @errs)) + && 'not '; +print "${e}ok 27\n"; |