⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10_cpanplus-error.t

📁 source of perl for linux application,
💻 T
字号:
### make sure we can find our conf.pl fileBEGIN {     use FindBin;     require "$FindBin::Bin/inc/conf.pl";}use strict;use Test::More 'no_plan';use Data::Dumper;use FileHandle;use CPANPLUS::Error;my $conf = gimme_conf();my $map = {    cp_msg      => ["This is just a test message"],    msg         => ["This is just a test message"],    cp_error    => ["This is just a test error"],    error       => ["This is just a test error"],};### check if CPANPLUS::Error can do what we expect {   for my $name ( keys %$map ) {        can_ok('CPANPLUS::Error',   $name);        can_ok('main',              $name);     # did it get exported?    }}### make sure we start with an empty stack{   CPANPLUS::Error->flush;    is( scalar(()=CPANPLUS::Error->stack), 0,                          "Starting with empty stack" );        }### global variables test ###{   my $file = output_file();    ### this *has* to be set, as we're testing the contents of the file    ### to see if it matches what's stored in the buffer.    local $CPANPLUS::Error::MSG_FH   = output_handle();        local $CPANPLUS::Error::ERROR_FH = output_handle();        ok( -e $file,           "Output redirect file exists" );    ok( !-s $file,          "   Output file is empty" );    ### print a msg & error ###    for my $name ( keys %$map ) {        my $sub = __PACKAGE__->can( $name );        $sub->( $map->{$name}->[0], 1 );    }    ### must close it for Win32 tests!    close output_handle;               ok( -s $file,           "   Output file now has size" );        my $fh = FileHandle->new( $file );    ok( $fh,                "Opened output file for reading " );        my $contents = do { local $/; <$fh> };    my $string   = CPANPLUS::Error->stack_as_string;    my $trace    = CPANPLUS::Error->stack_as_string(1);        ok( $contents,          "   Got the file contents" );    ok( $string,            "Got the error stack as string" );            for my $type ( keys %$map ) {        my $tag = $type; $tag =~ s/.+?_//g;            for my $str (@{ $map->{$type} } ) {            like( $contents, qr/\U\Q$tag/,                            "   Contents matches for '$type'" );             like( $contents, qr/\Q$str/,                            "   Contents matches for '$type'" );                                         like( $string, qr/\U\Q$tag/,                            "   String matches for '$type'" );                            like( $string, qr/\Q$str/,                            "   String matches for '$type'" );            like( $trace, qr/\U\Q$tag/,                            "   Trace matches for '$type'" );                            like( $trace, qr/\Q$str/,                            "   Trace matches for '$type'" );                ### extra trace tests ###            like( $trace,   qr/\Q$str\E.*?\Q$str/s,                                "   Trace holds proper traceback" );            like( $trace,   qr/\Q$0/,                                "   Trace holds program name" );            like( $trace,   qr/line/,                                "   Trace holds line number information" );        }          }    ### check the stack, flush it, check again ###    is( scalar(()=CPANPLUS::Error->stack), scalar(keys(%$map)),                          "All items on stack" );    is( scalar(()=CPANPLUS::Error->flush), scalar(keys(%$map)),                        "All items flushed" );    is( scalar(()=CPANPLUS::Error->stack), 0,                          "No items on stack" );                            }# Local variables:# c-indentation-style: bsd# c-basic-offset: 4# indent-tabs-mode: nil# End:# vim: expandtab shiftwidth=4:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -