Ich habe eine RSpec-Suite, die über Bundler läuft und eine Reihe verschiedener Kommandozeilen-Anwendungen mit Aruba testet. Es funktioniert gut ... solange der zu testende Befehl nicht selbst in Ruby mit Bundler geschrieben wird. Aber ich kann nicht herausfinden, wie verhindert werden kann, dass die Bundler-Konfiguration der RSpec-Suite die Ausführung von Befehlen stört, die selbst Bundler verwenden - zumindest nicht ohne extreme Maßnahmen.
Ich habe verschiedene Permutationen von unset_bundler_env_vars
und with_clean_env
ausprobiert, ohne Erfolg. Hier ist ein Beispiel für eine Technik, von der ich dachte, dass sie funktionieren würde:
Ich probierte auch unset_bundler_env_vars
ohne with_clean_env
und umgekehrt, falls sie sich gegenseitig störten. Kein Würfel.
Der einzige Weg, wie ich es zum Laufen gebracht habe, ist, Arubas Kopie der Umgebung manuell so zu massieren:
%Vor% Es muss einen besseren Weg geben. Weder die Testsuite noch der zu testende Befehl sollten wissen oder sich darum kümmern, in welcher Sprache der andere geschrieben ist. Und mein Testcode, der Aruba und Bundler verwendet, sollte nicht wissen müssen, wie bundle exec
die Prozessumgebung beeinflusst.
Was mache ich falsch? Wie soll ich das machen?
Es sieht so aus, als ob unset_bundler_env_vars
veraltet ist und durch delete_by_environment_variable
ersetzt wird, was a erfordert String-Parameter ( Quelle ).
Sie könnten before :each { delete_environment_variable('BUNDLE_GEMFILE') }
in Ihrer Spezifikation ausprobieren. Wenn das nicht funktioniert, müssen Sie möglicherweise die PATH-Variablenliste durchlaufen, um alle zu löschen.
In der Abnormitätsbenachrichtigung gibt es einen Workaround, obwohl ich mir nicht sicher bin, wie brüchig sich das entwickeln würde.
%Vor%Hoffe, das hilft.