-
Notifications
You must be signed in to change notification settings - Fork 10
Customize Infinity Test
Infinity Test provides cool features including notifications, multi-Ruby testing, test framework configuration and more.
Since this is a release candidate (rc1), install with:
gem install infinity_test --preCustomize Infinity Test by creating an INFINITY_TEST file in your project root or home directory (./INFINITY_TEST or ~/INFINITY_TEST). Project configuration takes priority over home configuration.
Infinity Test supports RVM and RbEnv for testing across multiple Ruby versions.
InfinityTest.setup do |config|
config.strategy = :rvm
config.rubies = ['3.1.0', '3.2.0', '3.3.0']
end With gemset:
InfinityTest.setup do |config|
config.strategy = :rvm
config.rubies = ['3.1.0', '3.2.0', '3.3.0']
config.gemset = 'my_project'
end InfinityTest.setup do |config|
config.strategy = :rbenv
config.rubies = ['3.1.0', '3.2.0', '3.3.0']
end Note: Make sure all required gems are installed in each Ruby version you want to test.
Test::Unit is auto-detected when test/ directory exists.
InfinityTest.setup do |config|
config.test_framework = :test_unit
end RSpec is auto-detected when spec/ directory exists.
InfinityTest.setup do |config|
config.test_framework = :rspec
end With multiple rubies:
InfinityTest.setup do |config|
config.test_framework = :rspec
config.strategy = :rvm
config.rubies = ['3.1.0', '3.2.0']
end Auto-detected when config/environment.rb exists.
InfinityTest.setup do |config|
config.framework = :rails
end Used for gem development and simple Ruby projects.
InfinityTest.setup do |config|
config.framework = :rubygems
end InfinityTest.setup do |config|
config.notifications = :terminal_notifier # or :osascript
end InfinityTest.setup do |config|
config.notifications = :notify_send # or :dunstify
end Infinity Test includes fun image themes for notifications.
Available Themes
┌────────────────┬────────────────────────┐
│ Theme │ Description │
├────────────────┼────────────────────────┤
│ simpson │ The Simpsons (default) │
├────────────────┼────────────────────────┤
│ mario_bros │ Super Mario │
├────────────────┼────────────────────────┤
│ faces │ Expressive faces │
├────────────────┼────────────────────────┤
│ street_fighter │ Street Fighter │
├────────────────┼────────────────────────┤
│ toy_story │ Toy Story │
├────────────────┼────────────────────────┤
│ rails │ Ruby on Rails │
├────────────────┼────────────────────────┤
│ rubies │ Ruby gemstones │
└────────────────┴────────────────────────┘
You can check the themes in /images folder of the repo.
InfinityTest.setup do |config|
config.notifications = :terminal_notifier
config.mode = :mario_bros
end Custom Images
InfinityTest.setup do |config|
config.success_image = '/path/to/success.png'
config.failure_image = '/path/to/failure.png'
config.pending_image = '/path/to/pending.png'
end Callbacks
# Clear terminal before tests
InfinityTest::Core::Base.before(:all) do
InfinityTest::Core::Base.clear_terminal
end # Run after all tests
InfinityTest::Core::Base.after(:all) do
system('say "Tests finished"')
end
# Before each Ruby version
InfinityTest::Core::Base.before(:each_ruby) do |environment|
puts "Testing Ruby #{environment[:ruby_version]}"
end
# After each Ruby version
InfinityTest::Core::Base.after(:each_ruby) do |environment|
puts "Finished Ruby #{environment[:ruby_version]}"
end Infinity Test auto-detects Gemfile and uses bundle exec. To disable:
InfinityTest.setup do |config|
config.bundler = false
end Or use the --no-bundler flag.
Verbose Mode
InfinityTest.setup do |config|
config.verbose = true
end Command Line Examples
# Run with RSpec
infinity_test --test rspec
# Multiple Ruby versions
infinity_test --ruby rvm --rubies=3.1.0,3.2.0,3.3.0
# Run once and exit (CI mode)
infinity_test -n
# Skip initial run, just watch
infinity_test --just-watch
# Focus on failed tests
infinity_test --focus failures
# Use Mario Bros theme
infinity_test --mode mario_bros Complete Example
InfinityTest.setup do |config|
config.strategy = :rvm
config.rubies = ['3.1.0', '3.2.0', '3.3.0']
config.gemset = 'myapp'
config.test_framework = :rspec
config.framework = :rails
config.notifications = :terminal_notifier
config.mode = :mario_bros
config.verbose = true
end
InfinityTest::Core::Base.before(:all) do
InfinityTest::Core::Base.clear_terminal
end Feedback or Feature Request?
Open an issue at https://github.com/tomas-stefano/infinity_test/issues
Happy Testing! :)