Sha256: 8505a5c2c734458e88512eb965822b8df643a76ffd8d5ec28e66059d0ff28c0c

Contents?: true

Size: 1.5 KB

Versions: 12

Compression:

Stored size: 1.5 KB

Contents

require 'spec_helper'
require 'shoryuken/runner'
require 'shoryuken/launcher'

# rubocop:disable Metrics/BlockLength
RSpec.describe Shoryuken::Runner do
  let(:cli) { Shoryuken::Runner.instance }

  before do
    # make sure we do not bail
    allow(cli).to receive(:exit)

    # make sure we do not mess with standard streams
    allow_any_instance_of(IO).to receive(:reopen)
  end

  describe '#run' do
    let(:launcher) { instance_double('Shoryuken::Launcher') }

    before(:each) do
      allow(Shoryuken::Launcher).to receive(:new).and_return(launcher)
      allow(launcher).to receive(:run).and_raise(Interrupt)
      allow(launcher).to receive(:stop)
    end

    it 'does not raise' do
      expect { cli.run({}) }.to_not raise_error
    end

    it 'daemonizes with --daemon --logfile' do
      expect(Process).to receive(:daemon)
      cli.run(daemon: true, logfile: '/dev/null')
    end

    it 'does NOT daemonize with --logfile' do
      expect(Process).to_not receive(:daemon)
      cli.run(logfile: '/dev/null')
    end

    it 'writes PID file with --pidfile' do
      pidfile = instance_double('File')
      expect(File).to receive(:open).with('/dev/null', 'w').and_yield(pidfile)
      expect(pidfile).to receive(:puts).with(Process.pid)
      cli.run(pidfile: '/dev/null')
    end
  end

  describe '#daemonize' do
    it 'calls Process.daemon' do
      args = { daemon: true, logfile: '/dev/null' }
      expect(Process).to receive(:daemon).with(true, true)
      cli.send(:daemonize, args)
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
shoryuken-3.0.11 spec/shoryuken/runner_spec.rb
shoryuken-3.0.10 spec/shoryuken/runner_spec.rb
shoryuken-3.0.9 spec/shoryuken/runner_spec.rb
shoryuken-3.0.8 spec/shoryuken/runner_spec.rb
shoryuken-3.0.7 spec/shoryuken/runner_spec.rb
shoryuken-3.0.6 spec/shoryuken/runner_spec.rb
shoryuken-3.0.5 spec/shoryuken/runner_spec.rb
shoryuken-3.0.4 spec/shoryuken/runner_spec.rb
shoryuken-3.0.3 spec/shoryuken/runner_spec.rb
shoryuken-3.0.2 spec/shoryuken/runner_spec.rb
shoryuken-3.0.1 spec/shoryuken/runner_spec.rb
shoryuken-3.0.0 spec/shoryuken/runner_spec.rb