Sha256: ce3a0afd2323df9388a05503480d93586a260aa38b322159a78fc931fb041f1c

Contents?: true

Size: 1005 Bytes

Versions: 3

Compression:

Stored size: 1005 Bytes

Contents

# coding: utf-8

RSpec.describe TTY::Pager::SystemPager, '.page' do
  let(:input)  { StringIO.new }
  let(:output) { StringIO.new }

  it "executes the pager command in a subprocess" do
    text     = "I try all things, I achieve what I can.\n"
    pager    = described_class.new(output: output, input: input)
    read_io  = spy
    write_io = spy

    allow(IO).to receive(:pipe).and_return([read_io, write_io])

    allow(Kernel).to receive(:fork) do |&block|
      allow(input).to receive(:reopen)
      allow(IO).to receive(:select)
      allow(pager).to receive(:pager_command).and_return('less')
      allow(pager).to receive(:exec)
      block.call
    end.and_return(12345)

    status = double(:status, :success? => true)
    allow(Process).to receive(:waitpid2).with(12345).and_return([1, status])

    expect(pager.page(text)).to eq(true)

    expect(IO).to have_received(:select).with([input])
    expect(pager).to have_received(:exec).with('less')
    expect(output.read).to eq('')
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tty-pager-0.4.0 spec/unit/system/page_spec.rb
tty-pager-0.3.0 spec/unit/system/page_spec.rb
tty-pager-0.2.0 spec/unit/system/page_spec.rb