Sha256: 200f33c46ac835c0784d41dd349fc69efd280023f3598be441e79bc31263228a

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

module StartingBlocks

  class Contract

    attr_reader :options

    def initialize options
      @options = options
    end

    def self.inherited klass
      @contract_types ||= []
      @contract_types << klass
    end

    def file_clues
      ["test", "spec"]
    end

    def extensions
      []
    end

    def filter_these_files files
      files
    end

    def execute_these_files files
      raise 'You have to define how to execute these files.'
    end

    def self.for options
      @contract_types.last.new options
    end

  end

  class MinitestContract < Contract

    def file_clues
      ["_test", "test_", "_spec"]
    end

    def extensions
      ['.rb']
    end

    def filter_these_files files
      files.select { |x| options[:include_vendor] || x.include?('/vendor/') == false }
    end

    def execute_these_files files
      requires = files.map { |x| "require '#{x}'" }.join("\n")
      if options[:use_bundler]
        Bash.run "bundle exec ruby -e \"#{requires}\""
      else
        Bash.run "ruby -e \"#{requires}\""
      end
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
starting_blocks-1.3.0 lib/starting_blocks/minitest_contract.rb