1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

CLI testing. Not great but integration testing is tough.

This commit is contained in:
Mike Perham 2012-02-12 19:53:34 -08:00
parent 8cd021b4ca
commit 552a4c7f27
3 changed files with 63 additions and 5 deletions

View file

@ -2,15 +2,20 @@ require 'optparse'
require 'sidekiq/version'
require 'sidekiq/util'
require 'sidekiq/redis_connection'
require 'sidekiq/client'
require 'sidekiq/manager'
module Sidekiq
class CLI
include Util
attr_accessor :options, :code
def initialize
parse_options
@code = nil
end
def parse(args=ARGV)
parse_options(args)
validate!
boot_system
end
@ -36,6 +41,10 @@ module Sidekiq
private
def die(code)
exit(code)
end
def detected_environment
@options[:environment] || ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
end
@ -66,11 +75,11 @@ module Sidekiq
log " to load your worker classes with -r [DIR|FILE]."
log "=================================================================="
log @parser
exit(1)
die(1)
end
end
def parse_options(argv=ARGV)
def parse_options(argv)
@options = {
:verbose => false,
:queues => [],
@ -115,7 +124,7 @@ module Sidekiq
@parser.banner = "sidekiq [options]"
@parser.on_tail "-h", "--help", "Show help" do
log @parser
exit 1
die 1
end
@parser.parse!(argv)
end

0
test/fake_env.rb Normal file
View file

49
test/test_cli.rb Normal file
View file

@ -0,0 +1,49 @@
require 'helper'
require 'sidekiq/cli'
class TestCli < MiniTest::Unit::TestCase
describe 'with cli' do
before do
@cli = new_cli
end
it 'blows up with an invalid require' do
assert_raises ArgumentError do
@cli.parse(['sidekiq', '-r', 'foobar'])
end
end
it 'blows up with invalid Ruby' do
@cli.parse(['sidekiq', '-r', './test/fake_env.rb'])
assert($LOADED_FEATURES.any? { |x| x =~ /fake_env/ })
assert @cli.valid?
end
it 'changes concurrency' do
@cli.parse(['sidekiq', '-c', '60', '-r', './test/fake_env.rb'])
assert_equal 60, @cli.options[:processor_count]
end
it 'changes queues' do
@cli.parse(['sidekiq', '-q', 'foo', '-r', './test/fake_env.rb'])
assert_equal ['foo'], @cli.options[:queues]
end
it 'handles weights' do
@cli.parse(['sidekiq', '-q', 'foo,3', '-q', 'bar', '-r', './test/fake_env.rb'])
assert_equal %w(bar foo foo foo), @cli.options[:queues].sort
end
def new_cli
cli = Sidekiq::CLI.new
def cli.die(code)
@code = code
end
def cli.valid?
!@code
end
cli
end
end
end