Created
February 18, 2010 13:29
-
-
Save defunkt/307649 to your computer and use it in GitHub Desktop.
test/spec/mini 5 - nested contexts, stacked setups
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## | |
# test/spec/mini 5 | |
# http://gist.github.com/307649 | |
# [email protected] | |
# | |
def context(*args, &block) | |
return super unless (name = args.first) && block | |
require 'test/unit' | |
klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do | |
def self.test(name, &block) | |
define_method("test_#{name.to_s.gsub(/\W/,'_')}", &block) if block | |
end | |
def self.xtest(*args) end | |
def self.context(*args, &block) instance_eval(&block) end | |
def self.setup(&block) | |
define_method(:setup) { self.class.setups.each { |s| instance_eval(&s) } } | |
setups << block | |
end | |
def self.setups; @setups ||= [] end | |
def self.teardown(&block) define_method(:teardown, &block) end | |
end | |
(class << klass; self end).send(:define_method, :name) { name.gsub(/\W/,'_') } | |
klass.class_eval &block | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'test/spec/mini' | |
context "It's test/spec/mini!" do | |
setup do | |
@name = "Chris" | |
end | |
setup do | |
puts "Stacked setups!" | |
end | |
teardown do | |
@name = nil | |
end | |
test "with Test::Unit" do | |
assert (self.class < Test::Unit::TestCase) | |
end | |
test "body-less test cases" | |
test :symbol_test_names do | |
assert true | |
end | |
xtest "disabled tests" do | |
assert disabled! | |
end | |
context "and of course" do | |
test "nested contexts!" do | |
assert_equal "Chris", @name | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment