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

📄 testharness.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
字号:
# Copyright 2001-2005 The Apache Software Foundation or its licensors, as# applicable.## Licensed under the Apache License, Version 2.0 (the "License");# you may not use this file except in compliance with the License.# You may obtain a copy of the License at##     http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing, software# distributed under the License is distributed on an "AS IS" BASIS,# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.# See the License for the specific language governing permissions and# limitations under the License.#package Apache::TestHarness;use strict;use warnings FATAL => 'all';use Test::Harness ();use Apache::Test ();use Apache::TestSort ();use Apache::TestTrace;use File::Spec::Functions qw(catfile catdir);use File::Find qw(finddepth);use File::Basename qw(dirname);sub inc_fixup {    # use blib    unshift @INC, map "blib/$_", qw(lib arch);    # fix all relative library locations    for (@INC) {        $_ = "../$_" unless m,^(/)|([a-f]:),i;    }}#skip tests listed in t/SKIPsub skip {    my($self, $file) = @_;    $file ||= catfile Apache::Test::vars('serverroot'), 'SKIP';    return unless -e $file;    my $fh = Symbol::gensym();    open $fh, $file or die "open $file: $!";    my @skip;    local $_;    while (<$fh>) {        chomp;        s/^\s+//; s/\s+$//; s/^\#.*//;        next unless $_;        s/\*/.*/g;        push @skip, $_;    }    close $fh;    return join '|', @skip;}#test if all.t would skip tests or notsub run_t {    my($self, $file) = @_;    my $ran = 0;    my $source_lib = '';    if (Apache::TestConfig::IS_APACHE_TEST_BUILD) {        # so we can find Apache/Test.pm from both the perl-framework/        # and Apache-Test/        my $top_dir = Apache::Test::vars('top_dir');        foreach my $lib (catfile($top_dir, qw(Apache-Test lib)),                         catfile($top_dir, 'lib')) {            if (-d $lib) {                info "adding source lib $lib to \@INC";                $source_lib = qq[-Mlib="$lib"];                last;            }        }    }        my $cmd = qq[$^X $source_lib $file];    my $h = Symbol::gensym();    open $h, "$cmd|" or die "open $cmd: $!";    local $_;    while (<$h>) {        if (/^1\.\.(\d)/) {            $ran = $1;            last;        }    }    close $h;    $ran;}#if a directory has an all.t test#skip all tests in that directory if all.t prints "1..0\n"sub prune {    my($self, @tests) = @_;    my(@new_tests, %skip_dirs);    local $_;    for (@tests) {        next if /\.#/; # skip temp emacs files        my $dir = dirname $_;        if (m:\Wall\.t$:) {            unless ($self->run_t($_)) {                $skip_dirs{$dir} = 1;                @new_tests = grep { m:\Wall\.t$: || not $skip_dirs{dirname $_} } @new_tests;                push @new_tests, $_;            }        }        elsif (!$skip_dirs{$dir}) {            push @new_tests, $_;        }    }    @new_tests;}sub get_tests {    my $self = shift;    my $args = shift;    my @tests = ();    my $base = -d 't' ? catdir('t', '.') : '.';    my $ts = $args->{tests} || [];    if (@$ts) {	for (@$ts) {	    if (-d $_) {		push(@tests, sort <$base/$_/*.t>);	    }	    else {		$_ .= ".t" unless /\.t$/;		push(@tests, $_);	    }	}    }    else {        if ($args->{tdirs}) {            push @tests, map { sort <$base/$_/*.t> } @{ $args->{tdirs} };        }        else {            finddepth(sub {                          return unless /\.t$/;                          my $t = catfile $File::Find::dir, $_;                          my $dotslash = catfile '.', "";                          $t =~ s:^\Q$dotslash::;                          push @tests, $t                      }, $base);            @tests = sort @tests;        }    }    @tests = $self->prune(@tests);    if (my $skip = $self->skip) {        # Allow / \ and \\ path delimiters in SKIP file        $skip =~ s![/\\\\]+![/\\\\]!g;        @tests = grep { not /(?:$skip)/ } @tests;    }    Apache::TestSort->run(\@tests, $args);    #when running 't/TEST t/dir' shell tab completion adds a /    #dir//foo output is annoying, fix that.    s:/+:/:g for @tests;    return @tests;}sub run {    my $self = shift;    my $args = shift || {};    $Test::Harness::verbose ||= $args->{verbose};    if (my(@subtests) = @{ $args->{subtests} || [] }) {        $ENV{HTTPD_TEST_SUBTESTS} = "@subtests";    }    Test::Harness::runtests($self->get_tests($args, @_));}1;

⌨️ 快捷键说明

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