Sha256: 92587ae5f8f4e03f373ce2013f4a1b8a41d55d84b34d53093333a701d60f7117

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

require 'rake'
require 'pathname'

module SolidusDevSupport
  class RakeTasks
    include Rake::DSL

    def self.install(*args)
      new(*args).tap(&:install)
    end

    def initialize(root: Dir.pwd)
      @root = Pathname(root)
      @test_app_path = @root.join(ENV['DUMMY_PATH'] || 'spec/dummy')
      @gemspec = Bundler.load_gemspec(@root.glob("{,*}.gemspec").first)
    end

    attr_reader :test_app_path, :root, :gemspec

    def install
      install_test_app_task
      install_rspec_task
    end

    def install_test_app_task
      require 'rake/clean'
      require 'spree/testing_support/extension_rake'

      ENV['DUMMY_PATH'] = test_app_path.to_s
      ENV['LIB_NAME'] = gemspec.name

      ::CLOBBER.include test_app_path

      namespace :extension do
        # We need to go back to the gem root since the upstream
        # extension:test_app changes the working directory to be the dummy app.
        task :test_app do
          Rake::Task['extension:test_app'].invoke
          cd root
        end

        directory ENV['DUMMY_PATH'] do
          Rake::Task['extension:test_app'].invoke
        end
      end
    end

    def install_rspec_task
      require 'rspec/core/rake_task'

      namespace :extension do
        ::RSpec::Core::RakeTask.new(:specs, [] => FileList[ENV['DUMMY_PATH']]) do |t|
          # Ref: https://circleci.com/docs/2.0/configuration-reference#store_test_results
          # Ref: https://github.com/solidusio/circleci-orbs-extensions#test-results-rspec
          if ENV['TEST_RESULTS_PATH']
            t.rspec_opts =
              "--format progress " \
              "--format RspecJunitFormatter --out #{ENV['TEST_RESULTS_PATH']}"
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solidus_dev_support-0.6.0 lib/solidus_dev_support/rake_tasks.rb