* Refactor CLI test
Extracted 3 main parts:
- parse
- run
- signal handling
* Move demonization and pid write from parse to run phase
* Move queues default from validate to setup options phase
* Add pry-byebug gem
* Drop Sidekiq::Test
* Require launcher in CLI
* Remove TODOs
In addition to requiring 'sidekiq/testing' and 'sidekiq/testing/inline',
a user can also call the following methods to control the test harness:
Sidekiq::Testing.fake!
Sidekiq::Testing.inline!
Sidekiq::Testing.disable!
Each of the above methods also accepts a block to execute within that
context before reverting to the state present before method invocation.
To query the current state, use the following methods:
Sidekiq::Testing.enabled?
Sidekiq::Testing.disabled?
Sidekiq::Testing.fake?
Sidekiq::Testing.inline?
Closes#1053
If you are passing arguments like time objects that serialize to strings
but don't deserialize back automatically, inline testing was passing the
objects through raw meaning different behavior in tests vs. production.
Now the inline wrapper does a round trip through json.
Allows sidekiq jobs to run inline in test mode without having to modify
the production code. In other words production code can still call the
`perform_async` method and tests can still verify that functionality is
run inline.