Skip to content

Customize Infinity Test

Tomas D'Stefano edited this page Feb 2, 2026 · 38 revisions

Infinity Test provides cool features including notifications, multi-Ruby testing, test framework configuration and more.

Fun Driven Development :)

Installation

Since this is a release candidate (rc1), install with:

gem install infinity_test --pre

INFINITY_TEST Configuration File

Customize 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.

Ruby Version Managers

Infinity Test supports RVM and RbEnv for testing across multiple Ruby versions.

RVM

  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                                                                                                                                            

RbEnv

  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 Frameworks

Test::Unit / Minitest

Test::Unit is auto-detected when test/ directory exists.

  InfinityTest.setup do |config|                                                                                                                 
    config.test_framework = :test_unit                                                                                                           
  end                                                                                                                                            

RSpec

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                                                                                                                                            

Application Frameworks

Rails

Auto-detected when config/environment.rb exists.

  InfinityTest.setup do |config|                                                                                                                 
    config.framework = :rails                                                                                                                    
  end                                                                                                                                            

Rubygems (Default)

Used for gem development and simple Ruby projects.

  InfinityTest.setup do |config|                                                                                                                 
    config.framework = :rubygems                                                                                                                 
  end                                                                                                                                            

Notifications

macOS

  InfinityTest.setup do |config|                                                                                                                 
    config.notifications = :terminal_notifier  # or :osascript                                                                                   
  end                                                                                                                                            

Linux

  InfinityTest.setup do |config|                                                                                                                 
    config.notifications = :notify_send  # or :dunstify                                                                                          
  end                                                                                                                                            

Image Themes

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         │                                                                                                    
  └────────────────┴────────────────────────┘                                                                                                    

Setting a Theme for notifications

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                                                                                                                                            

Bundler

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

INFINITY_TEST

  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! :)