41 lines
1.2 KiB
Ruby
Executable File
41 lines
1.2 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
require 'fileutils'
|
|
|
|
def usage(msg = nil)
|
|
puts "Error: #{msg}" if msg
|
|
puts if msg
|
|
puts "Usage: #{File.basename(__FILE__)} normal_test_file.rb"
|
|
puts
|
|
puts "Will convert an existing test file with names like "
|
|
puts
|
|
puts " def test_should_do_stuff"
|
|
puts " ..."
|
|
puts " end"
|
|
puts
|
|
puts "to one using the new syntax: "
|
|
puts
|
|
puts " should \"be super cool\" do"
|
|
puts " ..."
|
|
puts " end"
|
|
puts
|
|
puts "A copy of the old file will be left under /tmp/ in case this script just seriously screws up"
|
|
puts
|
|
exit (msg ? 2 : 0)
|
|
end
|
|
|
|
usage("Wrong number of arguments.") unless ARGV.size == 1
|
|
usage("This system doesn't have a /tmp directory. wtf?") unless File.directory?('/tmp')
|
|
|
|
file = ARGV.shift
|
|
tmpfile = "/tmp/#{File.basename(file)}"
|
|
usage("File '#{file}' doesn't exist") unless File.exists?(file)
|
|
|
|
FileUtils.cp(file, tmpfile)
|
|
contents = File.read(tmpfile)
|
|
contents.gsub!(/def test_should_(.*)\s*$/, 'should "\1" do')
|
|
contents.gsub!(/def test_(.*)\s*$/, 'should "RENAME ME: test \1" do')
|
|
contents.gsub!(/should ".*" do$/) {|line| line.tr!('_', ' ')}
|
|
File.open(file, 'w') { |f| f.write(contents) }
|
|
|
|
puts "File '#{file}' has been converted to 'should' syntax. Old version has been stored in '#{tmpfile}'"
|