Sha256: 9083a723f38194ec3a57c592f52c82c1a0a81eb4190bc0bc369033be15bd7de0

Contents?: true

Size: 1.85 KB

Versions: 10

Compression:

Stored size: 1.85 KB

Contents

require 'spec_helper'
require 'image_optim/cmd'

describe ImageOptim::Cmd do
  before do
    stub_const('Cmd', ImageOptim::Cmd)
  end

  def expect_int_exception(&block)
    expect(&block).to raise_error(SignalException) do |error|
      expect(error.message.to_s).to match(/INT|#{Signal.list['INT']}/)
    end
  end

  describe :run do
    it 'calls system and returns result' do
      status = double
      expect(Cmd).to receive(:system).with('cmd', 'arg').and_return(status)
      allow(Cmd).to receive(:check_status!)
      expect(Cmd.run('cmd', 'arg')).to eq(status)
    end

    it 'returns process success status' do
      expect(Cmd.run('sh -c exit\ 0')).to eq(true)
      expect($CHILD_STATUS.exitstatus).to eq(0)

      expect(Cmd.run('sh -c exit\ 1')).to eq(false)
      expect($CHILD_STATUS.exitstatus).to eq(1)

      expect(Cmd.run('sh -c exit\ 66')).to eq(false)
      expect($CHILD_STATUS.exitstatus).to eq(66)
    end

    it 'raises SignalException if process terminates after signal' do
      expect_int_exception do
        Cmd.run('kill -s INT $$')
      end
    end
  end

  describe :capture do
    it 'calls ` and returns result' do
      output = double
      expect(Cmd).to receive(:`).with('cmd arg arg+').and_return(output)
      allow(Cmd).to receive(:check_status!)
      expect(Cmd.capture('cmd arg arg+')).to eq(output)
    end

    it 'returns output' do
      expect(Cmd.capture('echo test')).to eq("test\n")
      expect($CHILD_STATUS.exitstatus).to eq(0)

      expect(Cmd.capture('printf more; sh -c exit\ 1')).to eq('more')
      expect($CHILD_STATUS.exitstatus).to eq(1)

      expect(Cmd.capture('sh -c exit\ 66')).to eq('')
      expect($CHILD_STATUS.exitstatus).to eq(66)
    end

    it 'raises SignalException if process terminates after signal' do
      expect_int_exception do
        Cmd.capture('kill -s INT $$')
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
image_optim-0.22.1 spec/image_optim/cmd_spec.rb
image_optim-0.22.0 spec/image_optim/cmd_spec.rb
openstreetmap-image_optim-0.21.0.1 spec/image_optim/cmd_spec.rb
image_optim-0.21.0 spec/image_optim/cmd_spec.rb
image_optim-0.20.2 spec/image_optim/cmd_spec.rb
image_optim-0.20.1 spec/image_optim/cmd_spec.rb
image_optim-0.20.0 spec/image_optim/cmd_spec.rb
image_optim-0.19.1 spec/image_optim/cmd_spec.rb
image_optim-0.19.0 spec/image_optim/cmd_spec.rb
image_optim-0.18.0 spec/image_optim/cmd_spec.rb