Ruby testen
Alle unten aufgeführten Befehle setzen voraus, dass Sie sie aus dem Verzeichnis build/ ausführen, das während des Erstellens von Ruby erstellt wurde.
Die meisten unten aufgeführten Befehle sollten mit GNU make (Standard unter Linux und macOS), BSD make und NMAKE funktionieren, sofern nicht anders angegeben.
Testsuiten
Es gibt mehrere Testsuiten im Ruby-Codebestand.
Wir können alle Make-Skripte parallel ausführen, um sie zu beschleunigen.
-
Dies ist eine kleine Testsuite, die auf Miniruby läuft. Wir können sie mit folgenden Befehlen ausführen:
make btest
Um einzelne Bootstrap-Tests auszuführen, können wir entweder eine Liste von Dateinamen angeben oder das Flag
--setsin der VariablenBTESTSverwenden.make btest BTESTS="../bootstraptest/test_string.rb ../bootstraptest/test_class.rb" make btest BTESTS="--sets=string,class"
Um diese Tests mit ausführlicher Protokollierung auszuführen, können wir
-vzu denOPTShinzufügen.make btest OPTS="--sets=string,class -v"
Wenn wir die Bootstrap-Testsuite auf Ruby (nicht Miniruby) ausführen möchten, können wir Folgendes verwenden:
make test
Um diese Tests mit ausführlicher Protokollierung auszuführen, können wir
-vzu denOPTShinzufügen.make test OPTS=-v
(Nur GNU make) Um eine bestimmte Datei auszuführen, können wir Folgendes verwenden:
make ../test/ruby/test_string.rb
Sie können die Testoption
-nverwenden, um einen bestimmten Test mit einem Regex auszuführen.make ../test/ruby/test_string.rb TESTOPTS="-n /test_.*_to_s/"
-
Dies ist eine umfassendere Testsuite, die auf Ruby läuft. Wir können sie mit folgenden Befehlen ausführen:
make test-all
Wir können eine bestimmte Testdatei oder ein bestimmtes Verzeichnis in dieser Suite mit der Option
TESTSausführen, zum Beispiel:make test-all TESTS="../test/ruby/" make test-all TESTS="../test/ruby/test_string.rb"
Wir können einen bestimmten Test in dieser Suite mit der Option
TESTSausführen, indem wir zuerst den Dateinamen und dann den Testnamen mit--namedavor angeben. Zum Beispiel:make test-all TESTS="../test/ruby/test_string.rb --name=TestString#test_to_s"
Um diese Tests mit ausführlicher Protokollierung auszuführen, können wir
-vzuTESTShinzufügen.make test-all TESTS=-v
Wir können die Hilfe der Option
TESTSanzeigen lassen.make test-all TESTS=--help
Wir können alle Tests in
test/,bootstraptest/undspec/(spec/wird in einem späteren Abschnitt erklärt) zusammen mit folgendem Befehl ausführen:make check
-
Dies ist eine Testsuite, die im Ruby-Spec-Repository definiert ist und periodisch in das Verzeichnis
spec/rubydieses Repositorys gespiegelt wird. Sie testet das Verhalten der Ruby-Programmiersprache. Wir können sie mit folgendem Befehl ausführen:make test-spec
Wir können eine bestimmte Testdatei oder ein bestimmtes Verzeichnis in dieser Suite mit der Option
SPECOPTSausführen, zum Beispiel:make test-spec SPECOPTS="../spec/ruby/core/string/" make test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb"
Um einen bestimmten Test auszuführen, können wir das Flag
--exampleverwenden, um gegen den Testnamen abzugleichen.make test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb --example='returns self when self.class == String'"
Um diese Specs mit ausführlicher Protokollierung auszuführen, können wir
-vzuSPECOPTShinzufügen.make test-spec SPECOPTS="../spec/ruby/core/string/to_s_spec.rb -Vfs"
(Nur GNU make) Um eine Ruby-Spec-Datei oder ein Verzeichnis auszuführen, können wir Folgendes verwenden:
make ../spec/ruby/core/string/to_s_spec.rb
-
Die Bundler-Testsuite ist im RubyGems-Repository definiert und wird periodisch in das Verzeichnis
spec/rubydieses Repositorys gespiegelt. Wir können sie mit folgendem Befehl ausführen:make test-bundler
Um eine bestimmte Bundler-Spec-Datei auszuführen, können wir
BUNDLER_SPECSwie folgt verwenden:make test-bundler BUNDLER_SPECS=commands/exec_spec.rb
Fehlerbehebung
Ausführen von Testsuiten auf s390x CPU-Architektur
Wenn wir fehlschlagende Tests im Zusammenhang mit der zlib-Bibliothek auf der s390x CPU-Architektur sehen, können wir die Testsuiten mit DFLTCC=0 ausführen, um sie zu bestehen.
DFLTCC=0 make check
Die Fehler können bei der zlib-Bibliothek auftreten, wenn der Patch madler/zlib#410 angewendet wird, um den Deflate-Algorithmus zu aktivieren, der einen anderen komprimierten Byte-Stream erzeugt. Wir verwalten dieses Problem unter [ruby-core:114942][Bug #19909].