Proctor =========== Classes and functions to support feature testing. ## Installation Add this line to your application's Gemfile: ```ruby gem 'govdelivery-proctor' ``` And then execute: $ bundle Or install it yourself as: $ gem install govdelivery-proctor ## Usage Include it: `require 'govdelivery-proctor'` ### backoff_check `GovDelivery::Proctor.backoff_check` will run a provided block, over and over with longer and longer waits between runs, until the provided block either returns a truthy value or exceeds a provided max time to wait. At the end of each unsuccessful run - a run that does not return a truthy value - a message will be written to the log based on the provided message string. ``` tomorrow = Time.new.day + 1.day GovDelivery::Proctor.backoff_check(24.hours, "Waiting for tomorrow") do Time.new.day == tomorrow end ``` ### accelerating_check `GovDelivery::Proctor.accelerating_check` will run a provided block, over and over with shorter and shorter waits between runs, until the provided block either returns a truthy value or exceeds a provided max time to wait. At the end of each unsuccessful run - a run that does not return a truthy value - a message will be written to the log based on the provided message string. ### steady_check `GovDelivery::Proctor.steady_check` will run a provided block, over and over with the specified wait between every run, until the provided block either returns a truthy value or exceeds a provided max time to wait. At the end of each unsuccessful run - a run that does not return a truthy value - a message will be written to the log based on the provided message string. ### log Returns a logger object for logging/outputing. By default, this logger object will print to `STDOUT` and have a level of `INFO`. These can be set via the environment variables `TEST_LOG_FILE` and `TEST_LOG_LEVEL` respectively. ``` GovDelivery::Proctor.log.info('Nothing is real') unless 1 == 1 ``` ### suppress Runs a provided block and ignores if a specified exception is thrown. ``` GovDelivery::Proctor.suppress(ZeroDivisionError) do 1/0 puts 'Nothing wrong here' end ``` ## Development ### Get Dev Dependencies $ bundle install ### Build $ gem build proctor.gemspec ### Install locally $ gem install govdelivery-proctor-1.3.1.gem ### Test $ rake test ### Push to rubygems $ gem push govdelivery-proctor-1.3.1.gem