Sha256: ee5906adfd508837c7160cf47684547aadde0cf571cf16e87d8bb1e840864535

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

RSpec.describe TTY::Command, '#run' do
  it "times out infinite process without input or output" do
    infinite = fixtures_path('infinite_no_output')
    output = StringIO.new
    cmd = TTY::Command.new(output: output)

    expect {
      cmd.run("ruby #{infinite}", timeout: 0.1)
    }.to raise_error(TTY::Command::TimeoutExceeded)
  end

  it "times out an infite process with constant output" do
    infinite = fixtures_path('infinite_output')
    output = StringIO.new
    cmd = TTY::Command.new(output: output, timeout: 0.1)

    expect {
      cmd.run("ruby #{infinite}")
    }.to raise_error(TTY::Command::TimeoutExceeded)
  end

  it "times out an infinite process with constant input data" do
    cli = fixtures_path('infinite_input')
    output = StringIO.new
    cmd = TTY::Command.new(output: output)

    range = 1..Float::INFINITY
    infinite_input = range.lazy.map { |x| "hello" }.first(100).join("\n")

    expect {
      cmd.run("ruby #{cli}", input: infinite_input, timeout: 0.1)
    }.to raise_error(TTY::Command::TimeoutExceeded)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tty-command-0.9.0 spec/unit/timeout_spec.rb