Sha256: c94019dafa6b78636827b58c82a28bc29e662f00f7c71ac9070fca2c8118d30b

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

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"
    allow(TTY::Pager::SystemPager).to receive(:can?).and_return(true)
    pager    = described_class.new(output: output, input: input)
    read_io  = spy
    write_io = spy

    if !pager.respond_to?(:fork)
      described_class.send :define_method, :fork, lambda { |*args|
        yield if block_given?
      }
    end

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

    allow(pager).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

1 entries across 1 versions & 1 rubygems

Version Path
tty-pager-0.8.0 spec/unit/system/page_spec.rb