Hallo!
Wenn ich ein Module habe, bei dem es je nach OS verschiedene Abhängigkeiten gibt, gibt
Test::Prereq immer Fehlermeldungen aus.
Kommt
Test::Prereq mit dem bedingten Laden nicht klar oder gibt es eine alternative Schreibweise für die Makefile.PL Datei mit der
Test::Prereq funktioniert?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use warnings;
use strict;
use ExtUtils::MakeMaker;
my %os_specific;
if ( $^O eq 'MSWin32' ) {
%os_specific = (
'Term::Size::Win32' => 0,
);
}
else {
%os_specific = (
'Term::ReadKey' => 0,
);
}
WriteMakefile(
NAME => 'Home::ABC',
VERSION_FROM => 'lib/Home/ABC.pm',
BUILD_REQUIRES => {
'Test::More' => 0,
'Test::Prereq' => 0,
},
PREREQ_PM => {
'warnings' => 0,
'strict' => 0,
%os_specific,
},
clean => {
FILES => 'Home-ABC-*',
},
);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package Home::ABC;
use strict;
use warnings;
our $VERSION = '0.001';
BEGIN {
if ( $^O eq 'MSWin32' ) {
require Term::Size::Win32;
Term::Size::Win32::->import( 'chars' );
}
else {
require Term::ReadKey;
Term::ReadKey::->import( 'GetTerminalSize' );
}
}
1;
make test:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cp lib/Home/ABC.pm blib/lib/Home/ABC.pm
PERL_DL_NONLAZY=1 /usr/local/bin/perl "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/prereqs.t .. 1/1
# Failed test 'Found some modules that didn't show up in PREREQ_PM or *_REQUIRES
# '
# at /usr/local/lib/perl5/site_perl/5.18.1/Test/Prereq.pm line 294.
# Term::Size::Win32
# Looks like you failed 1 test of 1.
t/prereqs.t .. Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests
Test Summary Report
-------------------
t/prereqs.t (Wstat: 256 Tests: 1 Failed: 1)
Failed test: 1
Non-zero exit status: 1
Files=1, Tests=1, 2 wallclock secs ( 0.02 usr 0.00 sys + 1.89 cusr 0.03 csys = 1.94 CPU)
Result: FAIL
Failed 1/1 test programs. 1/1 subtests failed.
make: *** [test_dynamic] Fehler 1