晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /usr/share/doc/perl-Test-Simple/t/Legacy/subtest/ |
Upload File : |
#!/usr/bin/perl -w
# Test the use of subtest() to define new test predicates that combine
# multiple existing predicates.
BEGIN {
if( $ENV{PERL_CORE} ) {
chdir 't';
@INC = ( '../lib', 'lib' );
}
else {
unshift @INC, 't/lib';
}
}
use strict;
use warnings;
use Test::More tests => 5;
use Test::Builder;
use Test::Builder::Tester;
# Formatting may change if we're running under Test::Harness.
$ENV{HARNESS_ACTIVE} = 0;
our %line;
# Define a new test predicate with Test::More::subtest(), using
# Test::More predicates as building blocks...
sub foobar_ok ($;$) {
my ($value, $name) = @_;
$name ||= "foobar_ok";
local $Test::Builder::Level = $Test::Builder::Level + 1;
subtest $name => sub {
plan tests => 2;
ok $value =~ /foo/, "foo";
ok $value =~ /bar/, "bar"; BEGIN{ $line{foobar_ok_bar} = __LINE__ }
};
}
{
test_out("# Subtest: namehere");
test_out(" 1..2");
test_out(" ok 1 - foo");
test_out(" not ok 2 - bar");
test_err(" # Failed test 'bar'");
test_err(" # at $0 line $line{foobar_ok_bar}.");
test_err(" # Looks like you failed 1 test of 2.");
test_out("not ok 1 - namehere");
test_err("# Failed test 'namehere'");
test_err("# at $0 line ".(__LINE__+2).".");
foobar_ok "foot", "namehere";
test_test("foobar_ok failing line numbers");
}
# Wrap foobar_ok() to make another new predicate...
sub foobar_ok_2 ($;$) {
my ($value, $name) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 1;
foobar_ok($value, $name);
}
{
test_out("# Subtest: namehere");
test_out(" 1..2");
test_out(" ok 1 - foo");
test_out(" not ok 2 - bar");
test_err(" # Failed test 'bar'");
test_err(" # at $0 line $line{foobar_ok_bar}.");
test_err(" # Looks like you failed 1 test of 2.");
test_out("not ok 1 - namehere");
test_err("# Failed test 'namehere'");
test_err("# at $0 line ".(__LINE__+2).".");
foobar_ok_2 "foot", "namehere";
test_test("foobar_ok_2 failing line numbers");
}
# Define another new test predicate, this time using
# Test::Builder::subtest() rather than Test::More::subtest()...
sub barfoo_ok ($;$) {
my ($value, $name) = @_;
$name ||= "barfoo_ok";
Test::Builder->new->subtest($name => sub {
plan tests => 2;
ok $value =~ /foo/, "foo";
ok $value =~ /bar/, "bar"; BEGIN{ $line{barfoo_ok_bar} = __LINE__ }
});
}
{
test_out("# Subtest: namehere");
test_out(" 1..2");
test_out(" ok 1 - foo");
test_out(" not ok 2 - bar");
test_err(" # Failed test 'bar'");
test_err(" # at $0 line $line{barfoo_ok_bar}.");
test_err(" # Looks like you failed 1 test of 2.");
test_out("not ok 1 - namehere");
test_err("# Failed test 'namehere'");
test_err("# at $0 line ".(__LINE__+2).".");
barfoo_ok "foot", "namehere";
test_test("barfoo_ok failing line numbers");
}
# Wrap barfoo_ok() to make another new predicate...
sub barfoo_ok_2 ($;$) {
my ($value, $name) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 1;
barfoo_ok($value, $name);
}
{
test_out("# Subtest: namehere");
test_out(" 1..2");
test_out(" ok 1 - foo");
test_out(" not ok 2 - bar");
test_err(" # Failed test 'bar'");
test_err(" # at $0 line $line{barfoo_ok_bar}.");
test_err(" # Looks like you failed 1 test of 2.");
test_out("not ok 1 - namehere");
test_err("# Failed test 'namehere'");
test_err("# at $0 line ".(__LINE__+2).".");
barfoo_ok_2 "foot", "namehere";
test_test("barfoo_ok_2 failing line numbers");
}
# A subtest-based predicate called from within a subtest
{
test_out("# Subtest: outergroup");
test_out(" 1..2");
test_out(" ok 1 - this passes");
test_out(" # Subtest: namehere");
test_out(" 1..2");
test_out(" ok 1 - foo");
test_out(" not ok 2 - bar");
test_err(" # Failed test 'bar'");
test_err(" # at $0 line $line{barfoo_ok_bar}.");
test_err(" # Looks like you failed 1 test of 2.");
test_out(" not ok 2 - namehere");
test_err(" # Failed test 'namehere'");
test_err(" # at $0 line $line{ipredcall}.");
test_err(" # Looks like you failed 1 test of 2.");
test_out("not ok 1 - outergroup");
test_err("# Failed test 'outergroup'");
test_err("# at $0 line $line{outercall}.");
subtest outergroup => sub {
plan tests => 2;
ok 1, "this passes";
barfoo_ok_2 "foot", "namehere"; BEGIN{ $line{ipredcall} = __LINE__ }
}; BEGIN{ $line{outercall} = __LINE__ }
test_test("outergroup with internal barfoo_ok_2 failing line numbers");
}