Skip to content

Instantly share code, notes, and snippets.

@lcpriest
Created May 16, 2018 02:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lcpriest/c6e221b88a47d8ef8c5d4737a99b4f03 to your computer and use it in GitHub Desktop.
Save lcpriest/c6e221b88a47d8ef8c5d4737a99b4f03 to your computer and use it in GitHub Desktop.
Generate missing test files in a rails app
namespace :missing_tests do
def progress(name, x, y)
print "\r #{name}: #{x}/#{y} %6.2f%%" % [x.to_f / y * 100]
end
def generate_files(name)
kind = name.to_s.singularize
collection = Dir.glob Rails.root.join('app', name.to_s, '**', '*').to_s
root = Rails.root.join('app', name.to_s).to_s << '/'
ext = case name
when :controllers then '_controller.rb'
when :models then '.rb'
when :jobs then '_job.rb'
when :mailers then '_mailer.rb'
end
count = collection.count
collection.each_with_index do |filename, index|
`rails g test_unit:#{kind} #{Regexp.last_match(1)} -s` if filename.match(/#{root}(.+)#{ext}/)
progress name, index, count
end
end
task generate_tests: :environment do
generate_files :controllers
generate_files :models
generate_files :jobs
generate_files :mailers
end
end
@lcpriest
Copy link
Author

Usually I will create files in Rails using generators, but sometimes I forget. I use this script to add missing test files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment