Ruby-gem-Tests vor der Bereitstellung
Frage
Ich erstelle ein Juwel, das hat
- mehrere Skripte im Verzeichnis bin
- die utility-Klassen im lib-Verzeichnis
- und mehrere tests im test-Verzeichnis
supertool bin toolA toolB lib supertool supertool.rb helper.rb test tc_main.rb tc_etc.rb
Nun, um die tests auszuführen, bevor ich überhaupt installieren Sie das Juwel, ich habe das folgende snippet an der Spitze meiner tests:
base = File.basename(Dir.pwd)
if base == 'test' || base =~ /supertool/
Dir.chdir('..') if base == 'test'
$LOAD_PATH.unshift(Dir.pwd + '/lib')
Dir.chdir('test') if base =~ /supertool/
end
Dies scheint langweilig, obwohl, vor allem, wenn ich diese in die Skripte im Verzeichnis bin zu.Gibt es eine bessere Art und Weise der Einrichtung der Umgebung, so dass wir können test die Edelsteine, bevor Sie installiert werden?Ich bin sicher, dass es etwas einfaches ist, das kann ich einfach nicht finden.Ein einfacher link auf die richtige Stelle würde helfen, eine Menge :)
Lösung
Ich bin mir nicht sicher, was Sie zu erreichen versuchen, mit diesem Skript.Es scheint nicht, etwas zu tun haben mit Edelsteinen...
Ist es so, dass können Sie laufen ruby tc_main.rb
aus in das Verzeichnis test (oder ruby test/tc_main.rb
aus dem base-dir), und legen Sie den Pfad zum laden richtig?Wenn ja, hier ist eine viel schönere Weg:
In Ihrem Verzeichnis test erstellen test_helper.rb
Datei.In dieser Datei, stellen Sie diese
$LOAD_PATH << File.expand_path( File.dirname(__FILE__) + '/../lib' )
Und in alle Ihre test-Dateien, legen Sie die erste Zeile zu
require 'test_helper'
Wenn Sie Unterverzeichnisse in Ihrem test dir, dann werden die Dateien in diese Unterverzeichnisse können Sie einfach tun
require '../test_helper'
Andere Tipps
Werfen Sie einen Blick auf Hacke Schmuckstück, es ist ein Helfer für andere Edelsteine.