Wie führe ich nur discourse/plugins/poll/spec aus?

Hi,

I’d like to only run the tests at discourse/plugins/poll/spec instead of the whole suite with bundle exec rake autospec p l=5. How can I do that ?

Ideally that would not be necessary if autospec detected changes made to plugins but my understanding is that it’s not yet able to do so.

Thanks in advance for your help :slight_smile:

Not sure how it works with autospec since I’m running the specs manually most of the time.
In order to run the plugin specs I’m always setting an environment variable in my IDE: LOAD_PLUGINS=1

Cool ! How would you manually run the spec of the poll plugin ? My IDE is the CLI :slight_smile:

I tried

bundle exec rake autospec plugins/poll/spec/*

but it shows

Randomized with seed 8681 ……*…

etc. which suggests it runs more than what I’d expect.

# this runs just the specs in one file
LOAD_PLUGINS=1 bundle exec rspec plugins/poll/spec/controllers/posts_controller_spec.rb

# this runs all the specs of the poll plugin
LOAD_PLUGINS=1 bundle exec rspec plugins/poll/spec

Another way to do it is via the rake task

bundle exec rake plugin:spec["poll"]

It works, thanks ! Where would be the most relevant topic for this information ? Or maybe there is a file in the git repository that should be updated ? The closest thing I found is the Beginner’s Guide to Creating Discourse Plugins Part 6: Acceptance Tests but it only covers part of the qunit tests.

This does not work for me but

bundle exec rake plugin:spec poll

does.

I proposed a change to the VAGRANT.md file. Not sure it’s right but… here it is anyway :wink:

The best way to do this is use autospec, it now works properly even with symlinked plugins

bin/rake autospec

Save plugin.rb file or plugin spec file and it will run.

Be sure to run all plugin migrations with (which will happen magically if you run)

RAILS_ENV=test bin/rake db:migrate

Ich hatte gerade Probleme, Plugin-Specs auszuführen, nachdem ich

RAILS_ENV=test bin/rake db:migrate

ausgeführt hatte.

Die Migrationen im Plugin, das ich getestet habe, wurden nicht ausgeführt. Anschließend habe ich folgendes ausgeführt:

LOAD_PLUGINS=1 RAILS_ENV=test bundle exec rake db:migrate

Und jetzt sind meine Plugin-Migrationen aktualisiert!

Interessant ist, dass ohne LOAD_PLUGINS=1 und in der development-Umgebung die Plugin-Migrationen ausgeführt wurden, in testing jedoch nicht.

@sam hat hier etwas Magie hinzugefügt, sodass bei der Ausführung von RAILS_ENV=test /bin/rake db:migrate Plugins automatisch geladen werden. Ich denke jedoch, dass die meisten Leute die bin-Stubs nicht verwenden, weshalb dieses Problem weiterhin bei verschiedenen Personen auftritt. Vielleicht müssen wir die Logik in den db:migrate Rake-Task einbetten, anstatt in den bin-Stub :thinking:

Wenn wir die Testsuite normal ausführen, möchten wir nicht, dass Plugins geladen werden – oft überschreiben Plugins Funktionen und würden dazu führen, dass die Core-Tests fehlschlagen.

Das macht mich sehr traurig … Binstubs machen das Leben viel einfacher, bin/unicorn enthält beispielsweise viel Magie.

Ich denke, die meisten Leute (zumindest ich) verwenden einfach den Standard

rails s

Zum Glück wird dank einiger Rails-Magie der rails-Binstub ausgeführt.

Der Rails-Binstub von Discourse startet den Unicorn-Binstub:

Leider profitiert rake nicht von derselben Magie.

Das sind nur 4 zusätzliche Tastenanschläge :stuck_out_tongue: (aber ja, ich könnte ein Alias hinzufügen oder etwas wie direnv verwenden).