[Dresden-pm] Dresden-pm Nachrichtensammlung, Band 102, Eintrag 2

Sebastian Oeste oeste.sebastian at googlemail.com
Mi Apr 11 01:09:06 PDT 2012


Hallo Steffen,

ok, das macht Sinn. Da hatte ich nicht richtig gelesen aber war auch
verwirrt da in einem Buch von mir direkt Test::Output::Tie zum Testen
beliebiger Filehandles ausgeschrieben war.

Und vielen Dank für den Tipp mit Path::Class das werde ich mir auf
jedenfall mal genauer angucken.

Gruß,
Sebastian

Am 5. April 2012 21:00 schrieb <dresden-pm-request at pm.org>:

> Um E-Mails an die Liste Dresden-pm zu schicken, nutzen Sie bitte die
> Adresse
>
>        dresden-pm at pm.org
>
> Um sich via Web von der Liste zu entfernen oder draufzusetzen:
>
>        http://mail.pm.org/mailman/listinfo/dresden-pm
>
> oder, via E-Mail, schicken Sie eine E-Mail mit dem Wort 'help' in
> Subject/Betreff oder im Text an
>
>        dresden-pm-request at pm.org
>
> Sie koennen den Listenverwalter dieser Liste unter der Adresse
>
>        dresden-pm-owner at pm.org
>
> erreichen
>
> Wenn Sie antworten, bitte editieren Sie die Subject/Betreff auf einen
> sinnvollen Inhalt der spezifischer ist als "Re: Contents of Dresden-pm
> digest..."
>
>
> Meldungen des Tages:
>
>   1. Re: Dresden-pm Nachrichtensammlung, Band 102, Eintrag 1
>      (Sebastian Oeste)
>   2. Re: Dresden-pm Nachrichtensammlung, Band 102, Eintrag 1
>      (Steffen Winkler)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 4 Apr 2012 10:36:32 +0200
> From: Sebastian Oeste <oeste.sebastian at googlemail.com>
> To: dresden-pm at pm.org
> Subject: Re: [Dresden-pm] Dresden-pm Nachrichtensammlung, Band 102,
>        Eintrag 1
> Message-ID:
>        <CAOcXQvuNg8hKsXtr3fjwe6_JQuv7WsLZaDiiASVuN6k181kR7w at mail.gmail.com
> >
> Content-Type: text/plain; charset="iso-8859-1"
>
> Hallo,
>
> Vielen Dank, erstmal für die Antworten.
>
> Da du deine Funktion read_from_file nennst, würde ich annehmen, dass du
>
> lesen willst. Tatsächlich öffnest du aber zum schreiben. Ich würde dir
>
> auch empfehlen, auf Bareword-Filehandle (OUT) zu verzichten. Damit
>
> handelst du dir Probleme ein, die nicht sein müssen. Bspw. sind
>
> Bareword-Filehandle globale Variablen, du kannst sie also nicht in
>
> rekursiven Funktionen einsetzen. Besser wären lexikalische Filehandle:
>
>  open my $fh, "<", $filename or die
>
>
> Da hast du natürlich recht. Das mit dem zum schreiben öffnen war ein
> Tipp-Fehler und das mit dem Bareword wusste ich noch nicht.
> Aber ich werds mir merken.
> Die erste von dir aufgezeigte möglichkeit finde ich nicht so gut ich wollte
> ja den direkten Zugriff auf das Dateisystem vermeiden.
> Der Vergleich mit einer bekannten, funktionierenden Funktion ist eine
> möglichkeit.
>
> Ich hab fürs erste ein Filehandle übergeben und im Test das _DATA_
> Filehandle genommen und dort raus gelesen.
>
> >
>
> Du kannst das File auch mit IO::File lesen.
>
> Zum Testen tauschst Du dann das echte IO::File gegen ein gemocktes aus.
>
> Entweder Du nimmst die Mock Module dafür oder Du schreibst ein IO::File
> > selbst, speziell für diesen Test.
>
>
> Da muss ich mir mal die perldoc von IO::File angucken das hab ich noch
> nicht versucht. Aber das zu Mocken gefällt mir ganz gut.
> Mal schauen ob ich das hinbekomme.
>
> In weiterer Recherche bin ich auf die Module Test::Output und
> Test::Output::Tie gestoßen.
> Test::Output ist kein Problem da kann ich was mit der Doku anfangen, ist
> halt leider nur für die Standard-Handles.
> Test::Output::Tie ??? Keine Ahnung, wie soll ich das nutzten ? Kennt das
> jemand?
> Habe das so verstanden das man damit auch andere Handles Testen kann. Aber
> wie?
> Wäre um ein aussagekräftiges Beispiel sehr Dankbar.
>
> Gruß,
> Basti
>
>
>
> >
> > Message: 1
> > Date: Sat, 31 Mar 2012 23:13:24 +0200
> > From: Sebastian Oeste <oeste.sebastian at googlemail.com>
> > To: dresden-pm at pm.org
> > Subject: [Dresden-pm] Filehandles testen
> > Message-ID:
> >        <CAOcXQvs4cdC-epmYWSwJpokUkBTN57+HARyjTcWJ6=-
> vc+UY6A at mail.gmail.com
> > >
> > Content-Type: text/plain; charset="iso-8859-1"
> >
> > Hallo,
> >
> > ich beschäftige mich grade unteranderem mit TDD unter Perl, kein Problem
> an
> > sich Perl lässt sich sehr gut testen.
> > Leider weiß ich nicht so richtig  wie ich Zugriffe auf eine Datei Testen
> > soll, ich will ja nicht jedes mal aufs Filessystem.
> > Wenn ich jetzt sowas hab:
> > sub read_from_file
> > {
> >  my @insert_line = ();
> >  open(OUT, ">>", $file) or die qq/any errormessage/;
> >  while (<OUT>)
> >  {
> >    push(@insert_line, $_);
> >  }
> >  close(OUT);
> >  return \@insert_line;
> > }
> >
> > Habt ihr ne Idee wie ich sowas Testen kann würde mich brennend
> > interessieren.
> > Wenn ich aber danach google, finde ich leider nur Artikel zu den
> Dateitest
> > Operatoren oden dem DATA Filehandle.
> >
> > Danke im Vorraus
> >
> > Gruß,
> > Basti
> > -------------- nächster Teil --------------
> > Ein Dateianhang mit HTML-Daten wurde abgetrennt...
> > URL: <
> >
> http://mail.pm.org/pipermail/dresden-pm/attachments/20120331/9d4b6667/attachment-0001.html
> > >
> >
> > ------------------------------
> >
> > Message: 2
> > Date: Sun, 01 Apr 2012 08:24:16 +0200
> > From: "Steffen Winkler" <steffen.winkler at gmx.net>
> > To: dresden-pm at pm.org
> > Subject: Re: [Dresden-pm] Filehandles testen
> > Message-ID: <20120401062416.26560 at gmx.net>
> > Content-Type: text/plain; charset="utf-8"
> >
> > Hallo Sebastian,
> >
> > Du kannst das File auch mit IO::File lesen.
> > Zum Testen tauschst Du dann das echte IO::File gegen ein gemocktes aus.
> > Entweder Du nimmst die Mock Module dafür oder Du schreibst ein IO::File
> > selbst, speziell für diesen Test.
> >
> > ungetestet:
> >
> > my $file_handle = IO::File->new($file, '<') or die $!;
> > my @insert_line = $file_handle->get_lines;
> > $! and die $!; # es gibt auch Fehler beim Datei lesen
> > $file_handle->close; # close Fehler gibt es nur beim Schreiben
> > return \@insert_line;
> >
> > --Steffen
> >
> > -------- Original-Nachricht --------
> > > Datum: Sat, 31 Mar 2012 23:13:24 +0200
> > > Von: Sebastian Oeste <oeste.sebastian at googlemail.com>
> > > An: dresden-pm at pm.org
> > > Betreff: [Dresden-pm] Filehandles testen
> >
> > > Hallo,
> > >
> > > ich beschäftige mich grade unteranderem mit TDD unter Perl, kein
> Problem
> > > an
> > > sich Perl lässt sich sehr gut testen.
> > > Leider weiß ich nicht so richtig  wie ich Zugriffe auf eine Datei
> Testen
> > > soll, ich will ja nicht jedes mal aufs Filessystem.
> > > Wenn ich jetzt sowas hab:
> > > sub read_from_file
> > > {
> > >   my @insert_line = ();
> > >   open(OUT, ">>", $file) or die qq/any errormessage/;
> > >   while (<OUT>)
> > >   {
> > >     push(@insert_line, $_);
> > >   }
> > >   close(OUT);
> > >   return \@insert_line;
> > > }
> > >
> > > Habt ihr ne Idee wie ich sowas Testen kann würde mich brennend
> > > interessieren.
> > > Wenn ich aber danach google, finde ich leider nur Artikel zu den
> > Dateitest
> > > Operatoren oden dem DATA Filehandle.
> > >
> > > Danke im Vorraus
> > >
> > > Gruß,
> > > Basti
> >
> > --
> > NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone!
> > Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a
> >
> >
> > ------------------------------
> >
> > Message: 3
> > Date: Sun, 1 Apr 2012 08:37:59 +0200
> > From: Maik Hentsche <maik at mm-double.de>
> > To: dresden-pm at pm.org
> > Subject: Re: [Dresden-pm] Filehandles testen
> > Message-ID: <20120401083759.293ba0e7 at zeus>
> > Content-Type: text/plain; charset="utf-8"
> >
> > Sebastian Oeste <oeste.sebastian at googlemail.com> wrote:
> >
> > > sub read_from_file
> > > {
> > >   my @insert_line = ();
> > >   open(OUT, ">>", $file) or die qq/any errormessage/;
> > >   while (<OUT>)
> > >   {
> > >     push(@insert_line, $_);
> > >   }
> > >   close(OUT);
> > >   return \@insert_line;
> > > }
> >
> > Da du deine Funktion read_from_file nennst, würde ich annehmen, dass du
> > lesen willst. Tatsächlich öffnest du aber zum schreiben. Ich würde dir
> > auch empfehlen, auf Bareword-Filehandle (OUT) zu verzichten. Damit
> > handelst du dir Probleme ein, die nicht sein müssen. Bspw. sind
> > Bareword-Filehandle globale Variablen, du kannst sie also nicht in
> > rekursiven Funktionen einsetzen. Besser wären lexikalische Filehandle:
> >  open my $fh, "<", $filename or die;
> >
> >
> > > Habt ihr ne Idee wie ich sowas Testen kann würde mich brennend
> > > interessieren.
> >
> > Da gibt es mehrere Möglichkeiten. Du könntest z.B. eine Datei anlegen,
> > deren Inhalt du genau kennst.
> >
> >  use Test::More;
> >  use MyPackage;
> >  my @expected = ("zeile 1\n", "zeile 2\n");
> >  my $result = MyPackage::read_from_file('t/file_with_known_content');
> >  is_deeply($result, \@expected, 'Read_from_file known content');
> >
> > Du könntest auch ein bekannt funktionierendes Filelese-Modul verwenden
> > und schauen, ob es das selbe liefert wie deine Funktion:
> >
> >  use Test::More;
> >  use MyPackage;
> >  use File::Slurp 'read_file';
> >
> >  my $expected = read_file('t/file_with_unknown_content');
> >  my $result   = MyPackage::read_from_file('t/file_with_unknown_content');
> >  my $joined   = join '', @$result;
> >
> >  is($joined, $expected, 'Read_from_file slurp');
> >
> > Es kann sein, dass noch andere Testmöglichkeiten sinnvoll sind, je
> > nachdem, was du testen willst.
> >
> > so long
> > Maik
> >
> > --
> > Der Verstand ist wie eine Fahrkarte. Sie hat nur Sinn wenn man sie
> > benutzt. (Ernst R. Hauschka (*1926), deutscher Essayist,
> > Aphoristiker und Bibliothekar)
> > -------------- nächster Teil --------------
> > Ein Dateianhang mit Binärdaten wurde abgetrennt...
> > Dateiname   : signature.asc
> > Dateityp    : application/pgp-signature
> > Dateigröße  : 190 bytes
> > Beschreibung: nicht verfügbar
> > URL         : <
> >
> http://mail.pm.org/pipermail/dresden-pm/attachments/20120401/6c132f24/attachment-0001.bin
> > >
> >
> > ------------------------------
> >
> > _______________________________________________
> > Dresden-pm mailing list
> > Dresden-pm at pm.org
> > http://mail.pm.org/mailman/listinfo/dresden-pm
> >
> > Ende Dresden-pm Nachrichtensammlung, Band 102, Eintrag 1
> > ********************************************************
> >
> -------------- nächster Teil --------------
> Ein Dateianhang mit HTML-Daten wurde abgetrennt...
> URL: <
> http://mail.pm.org/pipermail/dresden-pm/attachments/20120404/111fbcb8/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 2
> Date: Thu, 05 Apr 2012 07:23:42 +0200
> From: "Steffen Winkler" <steffen.winkler at gmx.net>
> To: dresden-pm at pm.org
> Subject: Re: [Dresden-pm] Dresden-pm Nachrichtensammlung, Band 102,
>        Eintrag 1
> Message-ID: <20120405052342.319160 at gmx.net>
> Content-Type: text/plain; charset="utf-8"
>
> Hallo Sebastian,
>
> bei Test::Output::Tie steht
> - module used by Test::Output to tie STDERR and STDOUT
> - You are probably more interested in reading Test::Output.
>
> Alles klar? Der Code wurde nur in ein extra Modul ausgelagert. Du kannst
> Dir anschauen, wie es funktioniert, nur benutzen sollst Du es nicht direkt.
>
> So etwas gibt's oft und steht auch dabei.
>
> Bei Path::Class steht auch, dass man Path::Class::File und
> Path::Class::Dir nicht direkt benutzen muss, sondern indirekt über "file"
> und "dir", aber man kann. Das ist die moderne Art Files und Verzeichnisse
> zu bearbeiten, solltest Du Dir mal anschauen. Vor allen Dingen funktioniert
> da slurp, was bei File::Slurp kaputt ist.
>
> Es gibt immer wieder etwas neues, in der Verwendung einfacheres. Manchmal
> geht es schief, wie bei File::Slurp, bleibt aber im CPAN. Das ist aber nur
> für die schwer, welche mit niemandem reden.
>
> --Steffen
>
> --
> NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone!
> Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a
>
>
> ------------------------------
>
> _______________________________________________
> Dresden-pm mailing list
> Dresden-pm at pm.org
> http://mail.pm.org/mailman/listinfo/dresden-pm
>
> Ende Dresden-pm Nachrichtensammlung, Band 102, Eintrag 2
> ********************************************************
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://mail.pm.org/pipermail/dresden-pm/attachments/20120411/91286417/attachment-0001.html>


Mehr Informationen über die Mailingliste Dresden-pm