my
$tzil
= Builder->from_config(
{
dist_root
=>
'corpus/dist/DZT'
},
{
add_files
=> {
'source/dist.ini'
=> simple_ini(
[
GatherDir
=> ],
[
GatherDir
=>
BonusFiles
=> {
root
=>
'../corpus/extra'
,
prefix
=>
'bonus'
,
} ],
[
GatherDir
=>
DottyFiles
=> {
root
=>
'../corpus/extra'
,
prefix
=>
'dotty'
,
include_dotfiles
=> 1,
} ],
[
GatherDir
=>
Selective
=> {
root
=>
'../corpus/extra'
,
prefix
=>
'some'
,
exclude_filename
=> [
'notme.txt'
,
'subdir/index.html'
],
} ],
[
GatherDir
=>
SelectiveMatch
=> {
root
=>
'../corpus/extra'
,
prefix
=>
'xmatch'
,
exclude_match
=> [
'notme\.*'
,
'^subdir/index\.html$'
],
} ],
[
GatherDir
=>
Symlinks
=> {
root
=>
'../corpus/extra'
,
follow_symlinks
=> 1,
prefix
=>
'links'
,
} ],
[
GatherDir
=>
PruneDirectory
=> {
root
=>
'../corpus/extra'
,
prefix
=>
'pruned'
,
prune_directory
=>
'^subdir$'
,
} ],
'Manifest'
,
'MetaConfig'
,
),
'source/.profile'
=>
"Bogus dotfile.\n"
,
'corpus/extra/.dotfile'
=>
"Bogus dotfile.\n"
,
'corpus/extra/notme.txt'
=>
"A file to exclude.\n"
,
'source/.dotdir/extra/notme.txt'
=>
"Another file to exclude.\n"
,
'source/extra/.dotdir/notme.txt'
=>
"Another file to exclude.\n"
,
},
also_copy
=> {
'corpus/extra'
=>
'corpus/extra'
,
'corpus/global'
=>
'corpus/global'
},
},
);
my
$corpus_dir
= path(
$tzil
->tempdir)->child(
'corpus'
);
if
($^O ne
'MSWin32'
&& $^O ne
'msys'
) {
symlink
$corpus_dir
->child(
'extra'
,
'vader.txt'
),
$corpus_dir
->child(
'extra'
,
'vader_link.txt'
)
or note
"could not create link: $!"
;
symlink
$corpus_dir
->child(
'global'
),
$corpus_dir
->child(
'extra'
,
'global_link'
)
or note
"could not create link: $!"
;
}
$tzil
->chrome->logger->set_debug(1);
$tzil
->build;
my
@files
=
map
{;
$_
->name } @{
$tzil
->files };
is_filelist(
[
@files
],
[
qw(
bonus/subdir/index.html bonus/vader.txt bonus/notme.txt
dotty/subdir/index.html dotty/vader.txt dotty/.dotfile dotty/notme.txt
some/vader.txt
xmatch/vader.txt
links/vader.txt links/subdir/index.html links/notme.txt
pruned/notme.txt pruned/vader.txt
dist.ini lib/DZT/Sample.pm t/basic.t
MANIFEST
)
,
($^O ne
'MSWin32'
&& $^O ne
'msys'
? (
'links/global_link/config.ini'
) : ()),
($^O ne
'MSWin32'
&& $^O ne
'msys'
? (
map
{
$_
.
'/vader_link.txt'
}
qw(bonus dotty some xmatch links pruned)
) : ()),
],
"GatherDir gathers all files in the source dir"
,
);
my
$manifest
= maniread(
$tzil
->tempdir->child(
'build/MANIFEST'
)->stringify);
my
$count
=
grep
{
exists
$manifest
->{
$_
} }
@files
;
ok(
$count
==
@files
,
"all files found were in manifest"
);
ok(
keys
(
%$manifest
) ==
@files
,
"all files in manifest were on disk"
);
diag
'got log messages: '
, explain
$tzil
->log_messages
if
not Test::Builder->new->is_passing;
my
@to_remove
;
TODO: {
todo_skip(
'MSWin32 - skipping symlink test'
, 1)
if
$^O eq
'MSWin32'
|| $^O eq
'msys'
;
my
$real_tmp
= path(
'tmp'
,
'private'
,
'tmp'
);
mkpath
$real_tmp
;
my
$link_tmp
= path(
'tmp'
,
'tmp'
);
symlink
'private/tmp'
,
'tmp/tmp'
;
push
@to_remove
, [
$real_tmp
,
$link_tmp
];
my
$tzil
= Builder->from_config(
{
dist_root
=>
'corpus/dist'
},
{
add_files
=> {
'source/dist.ini'
=> simple_ini(
[
GatherDir
=> {
root
=>
'DZ1'
} ],
),
},
tempdir_root
=>
'tmp/tmp'
,
},
);
$tzil
->chrome->logger->set_debug(1);
$tzil
->build;
my
@files
=
map
{;
$_
->name } @{
$tzil
->files };
is_filelist(
[
@files
],
[
qw(dist.ini lib/DZ1.pm)
],
"GatherDir gathers all files in the source dir (canonically corpus/dist/DZ1)"
,
);
diag
'got log messages: '
, explain
$tzil
->log_messages
if
not Test::Builder->new->is_passing;
}
for
my
$pair
(
@to_remove
) {
$pair
->[0]->remove_tree;
$pair
->[1]->remove;
}
done_testing;