Sha256: 5c1e3060861c718eeeb1963af28985b7ab7590012f39d8f37392455e908797b9

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

module Byebug
  #
  # Custom interface for easier assertions
  #
  class TestInterface < Interface
    attr_reader :input_queue, :output_queue, :error_queue, :confirm_queue

    attr_accessor :test_block

    def initialize
      super()
      @input_queue, @output_queue = [], []
      @error_queue, @confirm_queue = [], []
    end

    def errmsg(*args)
      @error_queue.push(*args)
    end

    def read_command(*)
      return readline(true) unless @input_queue.empty?

      if test_block
        test_block.call
        self.test_block = nil
      end
    end

    def puts(*args)
      @output_queue.push(*args)
    end

    def confirm(message)
      @confirm_queue << message
      readline(false)
    end

    def close
    end

    def inspect
      [
        "input_queue: #{input_queue.inspect}",
        "output_queue: #{output_queue.inspect}",
        "error_queue: #{error_queue.inspect}",
        "confirm_queue: #{confirm_queue.inspect}"
      ].join("\n")
    end

    private

    def readline(hist)
      cmd = @input_queue.shift
      cmd = cmd.is_a?(Proc) ? cmd.call : cmd
      save_history(cmd) unless !hist
      cmd
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
byebug-3.5.0 test/support/test_interface.rb