2013-03-14 9 views
5

In einer Rails-Anwendung, die ich entwickle (auf OS-X), finde ich, dass die Testsuite immer häufiger über rspec läuft. Es passiert nicht jedes Mal. Ich habe versucht, --format documentation hinzufügen, wenn Sie die Suite ausführen, um zu sehen, ob es jedes Mal am gleichen Ort passiert, und es tut es nicht.Rspec Prozess hängt an verschiedenen Orten, Prozess kann nicht getötet werden. Wie zu diagnostizieren?

Ich habe versucht, den Prozess mit kill -9 zu töten. Dann ändert sich der Name in (ruby) mit einem Prozessstatus von ?E. Diese link schlägt vor, dass der Prozess blockiert ist, warten auf einen Systemaufruf zu beenden. Ich muss meine Maschine jedes Mal neu starten, um diesen Prozess zu beenden.

Ich habe versucht, rvm, ruby, mysql und imagemagick neu zu installieren. Dieses Projekt verwendet den Imagemagick-Edelstein (via mini_magick), und ich vermutete, dass es einer dieser Befehle ist, der rspec blockiert. Ich habe versucht, puts Anweisungen um jeden der Mini_magick-Befehle hinzuzufügen, um sicherzustellen, dass sie ausgeführt werden, und alles sieht gut aus.

Ich bin auf der Suche nach Vorschlägen zur Diagnose dieses Problems.

+0

Verwenden Sie den '-e' Schalter, um nur bestimmte Spezifikationen basierend auf dem Muster, das Sie es geben. Führen Sie 'rspec -h' für weitere Informationen aus. – iain

+0

Das Problem scheint nicht zu passieren, wenn Sie einzelne Spezifikationen oder eine kleine Teilmenge von Spezifikationen (einzelne Datei) ausführen, sondern die gesamte Testsuite ausführen. Ich suche nach einer Möglichkeit zu debuggen, was der Prozess blockiert ist? – MAckerman

+0

Ich denke, dass Sie mindestens einige Ihrer Spezifikationen veröffentlichen müssen, zumindest dann ist es möglich, eine Vorstellung davon zu bekommen, was sie zu tun versuchen. Stellen Sie außerdem sicher, dass Ihre Spezifikationen nicht in einer zufälligen Reihenfolge ausgeführt werden. Wenn Sie RSpec zum Generieren der spec_helper-Datei verwendet haben, wird die zufällige Reihenfolge als Standard hinzugefügt. – iain

Antwort

0

Es ist möglich, dass Ihr Problem ein Auftragsabhängigkeitsfehler ist, Sie können den Samen weitergeben und die Bestellung bleibt konsistent. RSpec gibt die Zufallszahl aus, mit der der Zufallsgenerator erzeugt wurde. Verwenden Sie diese Nummer, um rspec in derselben Reihenfolge auszuführen --order rand:3455

Verwandte Themen