28 lines
973 B
Ruby
28 lines
973 B
Ruby
require "rake"
|
|
|
|
# https://www.eliotsykes.com/test-rails-rake-tasks-with-rspec
|
|
# https://github.com/crismali/fantaskspec#rake-testing-gotchas
|
|
module TaskExampleGroup
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
let(:task_name) { self.class.top_level_description.sub(/\Arake /, "") }
|
|
subject { Rake::Task[task_name] }
|
|
|
|
# Rake tasks can be run by either "invoke" or "execute".
|
|
#
|
|
# "execute" will run the task but not its dependencies.
|
|
# "invoke" will run the task and its dependencies, but the task and its dependencies
|
|
# will be disabled unless we "reenable" them.
|
|
#
|
|
# "invoke" is how Rake behaves on the command line, so let's favor it during tests.
|
|
after do
|
|
subject.all_prerequisite_tasks.each { |prerequisite| Rake::Task[prerequisite].reenable }
|
|
subject.reenable
|
|
end
|
|
|
|
it "depends on the :environment task" do
|
|
expect(subject.all_prerequisite_tasks.map(&:name)).to include("environment")
|
|
end
|
|
end
|
|
end
|