2012-04-02 10 views
0

Ich fahre SeleniumRC und eine Seite hängt, also habe ich Strg-C gedrückt, um den Test zu stoppen und das Problem zu beheben. Wenn ich eine txt-Datei über die Befehlszeile übergeben wie so:Wenn ich einen absterbenden Perl-Testlauf mit dem Befehl -v beende, werden die Ergebnisse nicht über STDOUT in einer Textdatei gespeichert?

prove -v some.t :: data.csv > testresults.txt 

... ich entweder bekommen nichts oder "Terminate Batch-Job (Y/N)?" In der Textdatei. Beachten Sie, dass die Ergebnisse wie erwartet durchlaufen, wenn ich keine Datei für die Ausgabe über die Befehlszeile übergebe.

Gibt es eine Option, in eine Datei über stdout zu schreiben, die nicht -v ist?

Dieses Problem tritt auf, wenn ich $| = 1; in einer seiner Formen zu prove.pm oder some.t hinzufügen. Gibt es etwas im Test oder Test :: Harness, das meine Autoflush-Einstellung überschreibt?

Ich habe auch versucht, diese Variation: prove -v some.t > testresults.txt :: data.csv

Antwort

2

Klingt wie Sie aus Pufferung leiden. Die Ausgabe wird gepuffert (wenn sie nicht an ein Terminal gesendet wird) und diese Puffer werden nicht geleert, wenn Sie die Anwendung mit Strg-C füllen. Wenn die Ausgabe von einem Perl-Skript stammt, versuchen Sie, $| = 1; hinzuzufügen.

+0

Hmm .. Ich kann dies nicht für mich arbeiten, Ereignis nach 'wählen (STDOUT)' – kyoob

+0

Hinzugefügt zu 'proove'? – ikegami

+0

Ah. Ich bin ein Dope. Werde es wieder versuchen, wenn ich wieder im Büro bin. – kyoob