Ruby-basierte CLIs mit Aruba und Bundler testen

9

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:

%Vor%

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?

    
Mark Reed 29.08.2016, 20:50
quelle

1 Antwort

1

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.

    
nrako 20.09.2016, 17:35
quelle

Tags und Links