Skip to content

Instantly share code, notes, and snippets.

@benalavi
Created March 18, 2009 02:55
Show Gist options
  • Save benalavi/80910 to your computer and use it in GitHub Desktop.
Save benalavi/80910 to your computer and use it in GitHub Desktop.
class Test::Unit::TestCase
def self.setup(&block)
setup_blocks << block
end
def setup
self.class.setup_blocks.each do |block|
instance_eval(&block)
end
end
def self.context(name, &block)
subclass = Class.new(self.superclass)
subclass.setup_blocks.unshift(*setup_blocks)
subclass.class_eval(&block)
const_set(context_name(name), subclass)
end
def self.test(name, &block)
define_test 'test', name, &block
end
def self.should(name, &block)
define_test 'should', name, &block
end
private
def self.define_test(prefix, name, &block)
define_method(test_name(name, prefix), &block)
end
def self.setup_blocks
@setup_blocks ||= []
end
def self.context_name(name)
"#{name.gsub(/(^| )(\w)/) { $2.upcase }}Test".to_sym
end
def self.test_name(name, prefix)
"#{prefix}_#{name.gsub(/\s+/,'_')}".to_sym
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment