Sha256: ea44cecc9b56810193c5396b4a27e1005d353f14c3635c09b656632d525c0420

Contents?: true

Size: 1.6 KB

Versions: 1

Compression:

Stored size: 1.6 KB

Contents

require 'open-uri'
require 'teabag/environment'

module Teabag
  class Console

    def initialize(options = nil, files = [])
      @options = options || {}
      @files = files

      Teabag::Environment.load(@options)
      require "teabag/server"
      Rails.application.config.assets.debug = false if Teabag.configuration.driver == 'phantomjs'
      start_server
    end

    def execute(options = {}, files = [])
      @options = @options.merge(options) if options.present?
      @files = files unless files.blank?

      failure_count = 0
      suites.each do |suite|
        STDOUT.print "Teabag running #{suite} suite at #{url(suite)}\n" unless Teabag.configuration.suppress_log
        failure_count += run_specs(suite)
      end
      failure_count > 0
    rescue Teabag::Failure
      true
    rescue Teabag::RunnerException
      true
    end

    def run_specs(suite)
      driver.run_specs(suite, url(suite))
    end

    protected

    def start_server
      @server = Teabag::Server.new
      @server.start
    end

    def suites
      @options[:suite].present? ? [@options[:suite]] : Teabag.configuration.suites.keys
    end

    def driver
      @driver ||= Teabag::Drivers.const_get("#{Teabag.configuration.driver.to_s.camelize}Driver").new
    end

    def filter
      parts = []
      parts << "grep=#{URI::encode(@options[:filter])}" if @options[:filter].present?
      @files.each { |file| parts << "file[]=#{URI::encode(file)}" }
      "?#{parts.join('&')}" if parts.present?
    end

    def url(suite)
      ["#{@server.url}#{Teabag.configuration.mount_at}", suite, filter].compact.join("/")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
teabag-0.5.3 lib/teabag/console.rb