BEGIN {
sub
skip_if_no_fortran_compiler {
eval
"use ExtUtils::F77"
;
if
($@) {
plan(
skip_all
=>
'Tests require ExtUtils::F77 be installed.'
);
exit
;
}
unless
( ExtUtils::F77->runtimeok ) {
plan(
skip_all
=>
'Tests require fortran runtime work.'
);
exit
;
}
unless
( ExtUtils::F77->testcompiler ) {
plan(
skip_all
=>
'Tests require fortran compiler work.'
);
exit
;
}
}
my
$var
= dir(
't/var'
);
$var
->rmtree;
$var
->mkpath;
chdir
$var
or
die
"Unable to cd into $var: $!"
;
file(
'MANIFEST'
)->spew(
''
);
dir(
'src'
)->mkpath;
file(
'src/test.f'
)->spew(
<<'F_FILE');
print *, 'Hello World'
end
F_FILE
skip_if_no_fortran_compiler();
}
my
$builder
= Module::Build::Pluggable->new(
dist_name
=>
'Eg'
,
dist_version
=> 0.01,
dist_abstract
=>
'test'
,
dynamic_config
=> 0,
module_name
=>
'Eg'
,
requires
=> {},
provides
=> {},
author
=> 1,
dist_author
=>
'test'
,
f_source
=> [
'src'
],
);
$builder
->create_build_script();
is( @{
$builder
->f_source }, 1,
"added fortran source dir"
);
is(
pop
@{
$builder
->f_source },
'src'
,
"... which is src"
);
ok( -f
'Build'
,
'Build file created'
);
run_ok(
'Build'
,
'Ran Build'
);
ok( -f
'src/test.o'
,
'.. fortran file compiled'
);
run_ok(
'Build clean'
,
'Ran Build clean'
);
ok( !-f
'src/test.o'
,
'.. object file cleaned up'
);
done_testing;
sub
run_ok {
my
(
$cmd
,
$desc
) =
@_
;
$cmd
=
sprintf
"%s %s"
,
$Config
{perlpath},
$cmd
;
my
$buffer
;
my
$ok
=
ok( run(
command
=>
$cmd
,
verbose
=> 0,
buffer
=> \
$buffer
),
$desc
);
diag
$buffer
unless
$ok
;
return
$ok
;
}