Modul complie problem - POE-1.003
Johannes_M
- perl
0 0 Johannes_M0 Johannes_M0 0 Johannes_M
0 Christian Kruse
Hi,
beim make test (GNU Make 3.81) von POE-1.003 bekomme folgende Fehler am Ende:
t/90_regression/ton-stop-corruption..........ok
t/90_regression/whelan-dieprop...............ok
t/90_regression/whjackson-followtail.........ok
Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
t/10_units/04_drivers/01_sysrw.t 1 256 17 1 12
87 tests skipped.
Failed 1/184 test scripts. 1/3844 subtests failed.
Files=184, Tests=3844, 137 wallclock secs (12.58 cusr + 1.03 csys = 13.61 CPU)
Failed 1/184 test programs. 1/3844 subtests failed.
make: *** [test_dynamic] Error 29
Kann mir jemand weiterhelfen?
Danke.
ciao,
Johannes
Du hast nicht die relevanten Zeilen zitiert, die den eigentlichen Fehler zeigen. Ich sehe den Name der Testdatei aufgeführt, den Fehler kann ich allerdings nicht nachzustellen; t/10_units/04_drivers/01_sysrw.t läuft seine Tests bei mir erfolgreich.
Wenn du den Client cpan benutzt, hole dir die genaue Ausgabe dieses Tests, dann weiß man mehr. Das geht leicht mit dem Befehl prove.
user@host:~> cpan
cpan[1]> make POE
cpan[2]> look POE
user@host:~/.cpan/build/POE-1.003-63oF5B> prove -blv t/10_units/04_drivers/01_sysrw.t
t/10_units/04_drivers/01_sysrw.t ..
1..17
..................
..................
..................
..................
..................
..................
..................
Result: ................
user@host:~/.cpan/build/POE-1.003-63oF5B> exit
cpan[3]> q
Du kannst schon mal schauen, ob du deinen Fehler bei http://www.cpantesters.org/show/POE.html#POE-1.003?grade=3&perlmat=2&patches=2&oncpan=2&distmat=2&perlver=ALL&osname=ALL wiederfindest.
Hi,
Wenn du den Client cpan benutzt, hole dir die genaue Ausgabe dieses Tests, dann weiß man mehr. Das geht leicht mit dem Befehl prove.
ich kenne den cpan client nicht - wo bekomme ich den her?
Ist das das Modul hier? http://search.cpan.org/~andk/CPAN-1.9301/lib/CPAN.pm ?
Die Maschine, auf dem das Modul installiert, hat keine Internetzugang, falls das notwendig sein sollte.
ciao,
Johannes_M
user@host:~> cpan
cpan[1]> make POE
cpan[2]> look POE
user@host:~/.cpan/build/POE-1.003-63oF5B> prove -blv t/10_units/04_drivers/01_sysrw.t
t/10_units/04_drivers/01_sysrw.t ..
1..17
..................
..................exit
..................
..................
..................
..................
..................
Result: ................
user@host:~/.cpan/build/POE-1.003-63oF5B> exit
cpan[3]> q
Ich hab das cpan Modul installiert, aber mein OS kenn den Befehl prove nicht.
cpan[2]> look .
Trying to open a subshell in the build directory...
Working directory is /tmp/POE-1.003/.
server:/tmp/POE-1.003/. # prove -blv t/10_units/04_drivers/01_sysrw.t
bash: prove: command not found
server:/tmp/POE-1.003/. #
prove gehört zu Test::Harness. Egal. So geht's auch:
perl -MExtUtils::Command::MM -e'test_harness(1, "blib/lib", "blib/arch")' t/10_units/04_drivers/01_sysrw.t
prove gehört zu Test::Harness. Egal. So geht's auch:
perl -MExtUtils::Command::MM -e'test_harness(1, "blib/lib", "blib/arch")' t/10_units/04_drivers/01_sysrw.t
Ok - thx - das funktioniert:
t/10_units/04_drivers/01_sysrw....1..17
ok 1 - use POE::Driver::SysRW;
ok 2 - disallow zero or negative block sizes
ok 3 - disallow zero or negative block sizes
ok 4 - disallow unknown parameters
ok 5 - get() returns undef on error
ok 6 - get() sets $! on error (Bad file number)
ok 7 - buffered 0 octets on empty put()
ok 8 - no messages buffered
ok 9 - first put: buffer contains 40 octets (should be 40)
ok 10 - one message buffered
ok 11 - second put: buffer contains 85 octets (should be 85)
not ok 12 - flushed 131157 octets == read 66645 octets
# Failed test 'flushed 131157 octets == read 66645 octets'
# at t/10_units/04_drivers/01_sysrw.t line 122.
ok 13 - buffer exhausted (got 0 wanted 0)
ok 14 - driver returns undef on eof
ok 15 - $! is clear on eof
ok 16 - put() returns octets left on error
ok 17 - put() sets $! nonzero on error
dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 12
Failed 1/17 tests, 94.12% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/10_units/04_drivers/01_sysrw.t 1 256 17 1 5.88% 12
Failed 1/1 test scripts, 0.00% okay. 1/17 subtests failed, 94.12% okay.
»» prove gehört zu Test::Harness. Egal. So geht's auch:
»»
»» perl -MExtUtils::Command::MM -e'test_harness(1, "blib/lib", "blib/arch")' t/10_units/04_drivers/01_sysrw.tOk - thx - das funktioniert:
perl -MExtUtils::Command::MM -e'test_harness(1, "blib/lib", "blib/arch")' t/10_units/04_drivers/01_sysrw.t
t/10_units/04_drivers/01_sysrw....1..17
ok 1 - use POE::Driver::SysRW;
ok 2 - disallow zero or negative block sizes
ok 3 - disallow zero or negative block sizes
ok 4 - disallow unknown parameters
ok 5 - get() returns undef on error
ok 6 - get() sets $! on error (Bad file number)
ok 7 - buffered 0 octets on empty put()
ok 8 - no messages buffered
ok 9 - first put: buffer contains 40 octets (should be 40)
ok 10 - one message buffered
ok 11 - second put: buffer contains 85 octets (should be 85)
not ok 12 - flushed 131157 octets == read 66645 octets# Failed test 'flushed 131157 octets == read 66645 octets'
# at t/10_units/04_drivers/01_sysrw.t line 122.
ok 13 - buffer exhausted (got 0 wanted 0)
ok 14 - driver returns undef on eof
ok 15 - $! is clear on eof
ok 16 - put() returns octets left on error
ok 17 - put() sets $! nonzero on errorLooks like you failed 1 test of 17.
dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 12
Failed 1/17 tests, 94.12% okay
Failed Test Stat Wstat Total Fail Failed List of Failedt/10_units/04_drivers/01_sysrw.t 1 256 17 1 5.88% 12
Failed 1/1 test scripts, 0.00% okay. 1/17 subtests failed, 94.12% okay.
Kommando zurück ... hatte das faslche Perl benutzt. Hier jetzt die richtige Ausgabe:
/opt/perl/bin/perl -MExtUtils::Command::MM -e'test_harness(1, "blib/lib", "blib/arch")' t/10_units/04_drivers/01_sysrw.t
t/10_units/04_drivers/01_sysrw....1..17
ok 1 - use POE::Driver::SysRW;
ok 2 - disallow zero or negative block sizes
ok 3 - disallow zero or negative block sizes
ok 4 - disallow unknown parameters
ok 5 - get() returns undef on error
ok 6 - get() sets $! on error (Bad file number)
ok 7 - buffered 0 octets on empty put()
ok 8 - no messages buffered
ok 9 - first put: buffer contains 40 octets (should be 40)
ok 10 - one message buffered
ok 11 - second put: buffer contains 85 octets (should be 85)
not ok 12 - flushed 131157 octets == read 66645 octets
# Failed test 'flushed 131157 octets == read 66645 octets'
# at t/10_units/04_drivers/01_sysrw.t line 122.
ok 13 - buffer exhausted (got 0 wanted 0)
ok 14 - driver returns undef on eof
ok 15 - $! is clear on eof
ok 16 - put() returns octets left on error
ok 17 - put() sets $! nonzero on error
dubious
Test returned status 1 (wstat 256, 0x100)
DIED. FAILED test 12
Failed 1/17 tests, 94.12% okay
Failed Test Stat Wstat Total Fail List of Failed
-------------------------------------------------------------------------------
t/10_units/04_drivers/01_sysrw.t 1 256 17 1 12
Failed 1/1 test scripts. 1/17 subtests failed.
Files=1, Tests=17, 1 wallclock secs ( 0.06 cusr + 0.01 csys = 0.07 CPU)
Failed 1/1 test programs. 1/17 subtests failed.
Wir wissen jetzt anhand der Testnummer, dass die Methoden POE::Driver::SysRW::put() und POE::Driver::SysRW::flush() sich falsch verhalten. Ich glaube, du hast nicht das Wissen, um herauszufinden, warum denn der Fehler genau auftritt.
Trotzdem kannst du dazu beitragen, dass der Fehler erst mal von den Entwicklern aufgenommen wird. Schicke dazu eine Email an bug-POE@rt.cpan.org mit dem Betreff "t/10_units/04_drivers/01_sysrw.t test failure" und dem Inhalt:
* Versionsnummer von POE (also "POE-1.003")
* die Ausgabe vom Befehl uname -a
* die Ausgabe vom Befehl perl -V
* die Ausgabe vom Testharness, wie schon eben von dir gepostet.
Du kannst jetzt erst mal das Modul installieren, damit du voran kommst und nicht noch mehr Zeit verlierst. Bis das geklärt ist, kannst du einfach mit POE loslegen. Vermutlich geht alles glatt und du brauchst dir erst mal keine Gedanken zu machen, weil ja bloß zwei Methoden von ganz vielen betroffen sind. Wenn du also ein Programm auf Basis (auch indirekt) von POE benutzt oder schreibst, und es verhält sich komisch oder buggy, dann musst du mal mit dem Debugger durchsteppen und schauen, ob die o.g. Methoden aufgerufen werden.
你好 ,
wird Zeit, dass isspace() durch ein UTF8-sicheres cf_isspace() ersetzt wird. In 3.4.14 dann...
再见,
克里斯蒂安