Sha256: c1fa00ba979a3ca6be7c9ef4980887888015840b56125826b5584b4bad9dd41d

Contents?: true

Size: 1.76 KB

Versions: 5

Compression:

Stored size: 1.76 KB

Contents

require 'shellwords'
require 'stringio'
require 'tee' if ENV['CUCUMBER_DEBUG']

module Vendorificator
  module TestSupport
    module ArubaExt
      def last_process
        processes.last.last
      end

      def last_stdout
        unescape last_process.stdout
      end

      def last_stderr
        unescape last_process.stderr
      end

      def last_output
        unescape(last_stdout + last_stderr)
      end

      def without_bundler(cmd)
        cmd = %w[ RUBYOPT BUNDLE_PATH BUNDLE_BIN_PATH BUNDLE_GEMFILE
                ].map { |v| "unset #{v} ; " }.join << cmd
        "sh -c #{Shellwords.escape(cmd)}"
      end

      def with_redirected_stdout(&block)
        redirect_stdout
        yield
      ensure
        bring_back_stdout
      end

      def mock_stdout
        unescape @stdout_cache
      end

      def mock_stderr
        unescape @stderr_cache
      end

      def mock_output
        mock_stdout + mock_stderr
      end

      private

      def redirect_stdout
        @stdout_cache = ''
        @stderr_cache = ''

        @stdout_redirected = true
        @orig_stdout = $stdout
        @orig_stderr = $stderr
        $stdout = @mock_stdout = StringIO.new
        $stderr = @mock_stderr = StringIO.new
        $stdout = Tee.new(STDOUT, @mock_stdout, :stdout => false) if ENV['CUCUMBER_DEBUG']
        $stderr = Tee.new(STDERR, @mock_stderr, :stdout => false) if ENV['CUCUMBER_DEBUG']
      end

      def bring_back_stdout
        @stdout_cache = @mock_stderr.string
        @stderr_cache = @mock_stdout.string

        @stdout_redirected = false
        $stdout = @orig_stdout
        $stderr = @orig_stderr
        @orig_stdout = @mock_stdout = nil
        @orig_stderr = @mock_stderr = nil
      end
    end
  end
end

World(Vendorificator::TestSupport::ArubaExt)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vendorificator-0.6.0 features/support/aruba_ext.rb
vendorificator-0.5.3 features/support/aruba_ext.rb
vendorificator-0.5.2 features/support/aruba_ext.rb
vendorificator-0.5.1 features/support/aruba_ext.rb
vendorificator-0.5.0 features/support/aruba_ext.rb