dachary
(Loïc Dachary)
July 13, 2016, 7:35pm
1
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
gerhard
(Gerhard Schlager)
July 13, 2016, 7:58pm
2
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
dachary
(Loïc Dachary)
July 13, 2016, 8:26pm
3
Cool ! How would you manually run the spec of the poll plugin ? My IDE is the CLI
dachary
(Loïc Dachary)
July 13, 2016, 8:33pm
4
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.
gerhard
(Gerhard Schlager)
July 13, 2016, 8:40pm
5
# 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
8 Likes
tgxworld
(Alan Tan)
July 13, 2016, 9:00pm
6
9 Likes
dachary
(Loïc Dachary)
July 13, 2016, 9:14pm
7
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.
dachary
(Loïc Dachary)
July 13, 2016, 9:16pm
8
This does not work for me but
bundle exec rake plugin:spec poll
does.
1 Like
dachary
(Loïc Dachary)
July 13, 2016, 9:27pm
9
I proposed a change to the VAGRANT.md file . Not sure it’s right but… here it is anyway
1 Like
sam
(Sam Saffron)
May 3, 2019, 3:53am
10
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
5 Likes
I was just having issues running plugin specs after running
RAILS_ENV=test bin/rake db:migrate
The migrations in the plugin I was testing, were not being run. I then ran:
LOAD_PLUGINS=1 RAILS_ENV=test bundle exec rake db:migrate
And now my plugin migrations are up!
It is interesting that without LOAD_PLUGINS=1
and in development
environment, plugin migrations ran, but in testing
the migrations were not.
5 Likes
david
(David Taylor)
November 19, 2019, 6:24pm
12
@sam added some magic here, so if you do RAILS_ENV=test /bin/rake db:migrate
then it will automatically load plugins. But I think most people don’t use the bin stubs, so this issue keeps happening to different people. Maybe we need to embed the logic in the db:migrate rake task, rather than in the bin stub
When we run the test suite normally, we don’t want plugins to be loaded - often plugins override functionality and would cause the core tests to fail.
7 Likes
sam
(Sam Saffron)
November 19, 2019, 11:35pm
13
This makes me very sad … binstubs make life much easier, bin/unicorn
has a lot of magic in it for example.
5 Likes
david
(David Taylor)
November 20, 2019, 12:20am
14
I think most people (well, at least me) just use the standard
rails s
Luckily that runs the rails
binstub thanks to some rails magic
# frozen_string_literal: true
require "pathname"
require "rails/version"
module Rails
module AppLoader # :nodoc:
extend self
RUBY = Gem.ruby
EXECUTABLES = ["bin/rails", "script/rails"]
BUNDLER_WARNING = <<EOS
Beginning in Rails 4, Rails ships with a `rails` binstub at ./bin/rails that
should be used instead of the Bundler-generated `rails` binstub.
If you are seeing this message, your binstub at ./bin/rails was generated by
Bundler instead of Rails.
You might need to regenerate your `rails` binstub locally and add it to source
control:
Discourse’s rails binstub launches the unicorn binstub:
# frozen_string_literal: true
if !ENV["RAILS_ENV"] && (ARGV[0] == "s" || ARGV[0] == "server") && Process.respond_to?(:fork)
ENV["UNICORN_PORT"] ||= "3000"
if ARGV[1] == "-p" && (port = ARGV[2].to_i) > 0
ENV["UNICORN_PORT"] = port.to_s
end
ENV["RAILS_LOGS_STDOUT"] ||= "1"
exec File.expand_path("unicorn", __dir__)
end
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'
Unfortunately rake
does not benefit from the same magic
I count 4 extra keystrokes (but yes I could add an alias, or use something like direnv)
7 Likes
system
(system)
Closed
August 5, 2024, 4:48pm
15
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.