Sha256: 957800ac9f4377a50ca2583113d8cd6dd7812189248afc139c2e4e62454b2291

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require 'logger'
require 'cucumber/pro/formatter'
require 'cucumber/pro/web_socket/session'
require 'cucumber/pro/errors'

module Cucumber
  module Pro

    class << self
      def new(runtime, output, options)
        create_logger(output)
        session = WebSocket::Session.new(url, logger, timeout: config.timeout)
        Formatter.new(session)
      end

      def configure
        yield config
      end

      private

      attr_reader :logger
      private :logger

      def config
        @config ||= Config.new
      end

      def url
        config.url + "?token=#{token}"
      end

      def create_logger(output)
        @logger = config.logger || Logger.new(output)
      end

      def token
        result = (config.token || '')
        raise(Error::MissingToken.new) if result.empty?
        result
      end
    end

    class Config
      attr_accessor :url, :logger, :token, :timeout
    end

    # Default config
    configure do |config|
      config.url     = ENV['CUCUMBER_PRO_URL'] || 'wss://results.cucumber.pro/ws'
      config.token   = ENV['CUCUMBER_PRO_TOKEN']
      config.timeout = 5
      if file = ENV['CUCUMBER_PRO_LOG_FILE']
        config.logger = Logger.new(file)
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cucumber-pro-0.0.12 lib/cucumber/pro.rb