Johannes_M: Modul complie problem - POE-1.003

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

  1. 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.

    1. 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

    2. 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/. #

      1. 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

        1. 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:

          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

          Looks 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 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.

          1. »» 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:

            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

            Looks 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 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.

            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

            Looks 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  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.

            1. 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.

    3. 你好    ,

      wird Zeit, dass isspace() durch ein UTF8-sicheres cf_isspace() ersetzt wird. In 3.4.14 dann...

      再见,
       克里斯蒂安

      --
      http://wwwtech.de/
      IRC-Clients und Irssi-Scripting | Flyspray
      Wenn du gehst, gehe. Wenn du sitzt, sitze. Und vor allem: schwanke nicht!