1
我试图重构我的测试Dist::Zilla::Plugin::Catalyst更加干燥,试图使用驼鹿的任务,但我遇到问题,并为我的生活我无法弄清楚它们是什么,有些似乎是订单初始化问题。有错误的驼鹿模块,需要帮助找到原因
注:代码可能不是最好的,建议表示欢迎
T/01-PluginCatalystNew.t .......无法在在不定值调用方法 “子目录”/家/ xenoterracide /项目/距离 - 吉拉-插件催化剂/ .build/8kE7QQR_FL /吨/ LIB/DZPCshared.pm线26
这里的驼鹿模块,
use strict;
use warnings;
package DZPCshared;
use Path::Class;
use Moose;
use namespace::autoclean;
has 'appname' => (
is => 'ro',
required => 1,
);
has 'tempdir' => (
is => 'ro',
required => 1,
);
has 'directories' => (
isa => 'ArrayRef[Str]',
traits => ['Array'],
is => 'ro',
required => 1,
lazy => 1,
default => sub {
my $self = shift;
my $mr = dir($self->tempdir)->subdir('mint');
my $mrl = $mr->subdir('lib');
my $mrr = $mr->subdir('root');
my $mrs = $mr->subdir('script');
my $mrt = $mr->subdir('t');
my $mrri = $mr->subdir('root')->subdir('static')->subdir('images');
return my $directories = [ $mr, $mrl, $mrr, $mrs, $mrt, $mrri ];
},
);
has 'scripts' => (
isa => 'ArrayRef[Str]',
traits => ['Array'],
is => 'ro',
default => sub {
my $self = shift;
my ($mr, $mrl, $mrr, $mrs, $mrt, $mrri) = @{ $self->directories };
my $lc_app = lc $self->appname;
return my $scripts = [
$mrs->file ($lc_app . '_cgi.pl' ),
$mrs->file ($lc_app . '_create.pl' ),
$mrs->file ($lc_app . '_fastcgi.pl'),
$mrs->file ($lc_app . '_server.pl' ),
$mrs->file ($lc_app . '_test.pl' ),
];
},
);
has 'files' => (
isa => 'ArrayRef[Str]',
traits => ['Array'],
is => 'ro',
default => sub {
my $self = shift;
my ($mr, $mrl, $mrr, $mrs, $mrt, $mrri) = @{ $self->directories };
my $lc_app = lc $self->appname;
return my $files = [
$mr->file ($lc_app . '.conf' ),
$mrl->file ($self->app_name . '.pm' ),
$mrl->subdir($self->app_name)->subdir('Controller')->file('Root.pm'),
$mrr->file ('favicon.ico' ),
$mrri->file ('btn_120x50_built.png' ),
$mrri->file ('btn_120x50_built_shadow.png' ),
$mrri->file ('btn_120x50_powered.png' ),
$mrri->file ('btn_120x50_powered_shadow.png'),
$mrri->file ('btn_88x31_built.png' ),
$mrri->file ('btn_88x31_built_shadow.png' ),
$mrri->file ('btn_88x31_powered.png' ),
$mrri->file ('btn_88x31_powered_shadow.png' ),
$mrri->file ('catalyst_logo.png' ),
$mrt->file ('01app.t' ),
];
},
);
__PACKAGE__->meta->make_immutable;
1;
和测试
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
if ($Moose::VERSION >= 1.9902 and $Moose::VERSION < 2.0) {
plan skip_all => 'Module is broken on Devel Moose, don\'t test';
}
use Dist::Zilla::Tester;
use Path::Class;
use FindBin;
use lib "$FindBin::Bin/lib";
use DZPCshared;
my $tzil = Minter->_new_from_profile(
[ Default => 'default' ],
{ name => 'CatApp' },
{ global_config_root => dir('corpus/mint')->absolute },
);
$tzil->mint_dist;
my $dzpcs = DZPCshared->new({
appname => $tzil->name,
tempdir => $tzil->tempdir,
});
subtest 'catalyst files exist' => sub {
my $should_exists = [ @{$dzpcs->files}, @{$dzpcs->scripts} ];
foreach (@{$should_exists}) {
ok (-e $_ , "$_" . ' exists');
}
};
subtest 'catalyst scripts should be executable' => sub {
plan skip_all => 'skip failing executable tests on windows' if $^O eq 'MSWin32';
my $should_exec = @{$dzpcs->scripts};
foreach (@{$should_exec}) {
ok (-x $_ , "$_" . ' exists');
}
};
done_testing;
(注:p.s.不知道一个最小的测试用例,可以在此)
(注:也previous version工作)
谢谢,这让我疯狂。我想我必须尝试过所有的组合,但是......或者因为我有其他错误,我只是感到困惑。我花了另一个小时的工作,并设法铲除最后的错误 – xenoterracide 2011-02-13 03:51:37