¿Cómo ejecuto solo discourse/plugins/poll/spec?

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

Estaba teniendo problemas para ejecutar las pruebas de plugins después de ejecutar

RAILS_ENV=test bin/rake db:migrate

Las migraciones del plugin que estaba probando no se estaban ejecutando. Luego ejecuté:

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

¡Y ahora las migraciones de mi plugin están actualizadas!

Es interesante que sin LOAD_PLUGINS=1 y en el entorno development, las migraciones de los plugins se ejecutaron, pero en testing no se ejecutaron.

@sam agregó algo de magia aquí, así que si ejecutas RAILS_ENV=test /bin/rake db:migrate, se cargarán automáticamente los complementos. Pero creo que la mayoría de la gente no usa los scripts binarios, por lo que este problema sigue ocurriendo a diferentes personas. Quizás debamos integrar la lógica en la tarea rake db:migrate, en lugar de en el script binario :thinking:

Cuando ejecutamos la suite de pruebas normalmente, no queremos que se carguen los complementos; a menudo estos sobrescriben funcionalidades y causarían que las pruebas principales fallen.

Esto me pone muy triste… los binstubs hacen la vida mucho más fácil, bin/unicorn tiene, por ejemplo, mucha magia en su interior.

Creo que la mayoría de la gente (bueno, al menos yo) simplemente usa el estándar

rails s

Afortunadamente, eso ejecuta el binstub de rails gracias a cierta magia de Rails

El binstub de rails de Discourse lanza el binstub de unicorn:

Desafortunadamente, rake no se beneficia de la misma magia

Cuento 4 pulsaciones de tecla extra :stuck_out_tongue: (pero sí, podría agregar un alias o usar algo como direnv)