Sha256: f9ea37936f261cd7a1d68140e6eeb57c0a7a66dd1fc7b2af7d065507e00a17bd

Contents?: true

Size: 1.85 KB

Versions: 33

Compression:

Stored size: 1.85 KB

Contents

# frozen_string_literal: true

# File: spec/support/tasks.rb
require "rake"

# Task names should be used in the top-level describe, with an optional
# "rake "-prefix for better documentation. Both of these will work:
#
# 1) describe "foo:bar" do ... end
#
# 2) describe "rake foo:bar" do ... end
#
# Favor including "rake "-prefix as in the 2nd example above as it produces
# doc output that makes it clear a rake task is under test and how it is
# invoked.
module TaskExampleGroup
  extend ActiveSupport::Concern

  included do
    # Make the Rake task available as `task` in your examples:
    subject(:task) { tasks[task_name] }

    let(:task_name) { self.class.top_level_description.sub(/\Arake /, "") }
    let(:tasks) { Rake::Task }
  end
end

# A collection of methods to help dealing with rake tasks output.
module RakeTaskOutputHelpers
  extend ActiveSupport::Concern

  included do
    let!(:original_stdout) { $stdout }

    # rubocop:disable RSpec/ExpectOutput
    before do
      $stdout = StringIO.new
    end

    after do
      $stdout = original_stdout
    end
    # rubocop:enable RSpec/ExpectOutput
  end

  def check_no_errors_have_been_printed
    expect($stdout.string).not_to include("ERROR:")
  end

  def check_some_errors_have_been_printed
    expect($stdout.string).to include("ERROR:")
  end

  def check_error_printed(type)
    expect($stdout.string).to include("ERROR: [#{type}]")
  end

  def check_message_printed(message)
    expect($stdout.string).to include(message)
  end
end

RSpec.configure do |config|
  # Tag Rake specs with `:task` metadata or put them in the spec/tasks dir
  config.define_derived_metadata(file_path: %r{/spec/tasks/}) do |metadata|
    metadata[:type] = :task
  end

  config.include TaskExampleGroup, type: :task
  config.include RakeTaskOutputHelpers, type: :task

  config.before(:suite) do
    Rails.application.load_tasks
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
decidim-dev-0.26.10 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.9 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.8 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.7 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.5 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.4 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.3 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.2 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.1 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.0 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.0.rc2 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.26.0.rc1 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.25.2 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.25.1 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.25.0 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.25.0.rc4 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.25.0.rc3 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.25.0.rc2 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.25.0.rc1 lib/decidim/dev/test/rspec_support/rake_tasks.rb
decidim-dev-0.24.3 lib/decidim/dev/test/rspec_support/rake_tasks.rb