Revision: 793 http://trac.macosforge.org/projects/ruby/changeset/793 Author: eloy.de.enige@gmail.com Date: 2009-01-15 08:33:16 -0800 (Thu, 15 Jan 2009) Log Message: ----------- Moved test/spec extensions into mini-test-spec.rb and added Kernel::describe which allows test cases to be created with a human readable description. Modified Paths: -------------- MacRuby/trunk/test-macruby/cases/objc_test.rb MacRuby/trunk/test-macruby/test_helper/temp_dir_helper.rb MacRuby/trunk/test-macruby/test_helper/test_unit_helper.rb Added Paths: ----------- MacRuby/trunk/test-macruby/test_helper/mini-test-spec.rb Modified: MacRuby/trunk/test-macruby/cases/objc_test.rb =================================================================== --- MacRuby/trunk/test-macruby/cases/objc_test.rb 2009-01-15 15:28:56 UTC (rev 792) +++ MacRuby/trunk/test-macruby/cases/objc_test.rb 2009-01-15 16:33:16 UTC (rev 793) @@ -155,6 +155,8 @@ @pure_objc_instance = PureObjCSubclass.alloc.init end + include TempDirHelper + it "should be possible to use a Ruby String as dictionary key and pass the dictionary of into Objective-C land" do key = String.new("foo") value = Object.new Added: MacRuby/trunk/test-macruby/test_helper/mini-test-spec.rb =================================================================== --- MacRuby/trunk/test-macruby/test_helper/mini-test-spec.rb (rev 0) +++ MacRuby/trunk/test-macruby/test_helper/mini-test-spec.rb 2009-01-15 16:33:16 UTC (rev 793) @@ -0,0 +1,52 @@ +require "test/unit" + +# The following are just some simple hacks to be able to write tests with a +# spec like description. This should ease the process of moving tests to run +# with mspec for instance. + +module Test::Unit + class TestCase + class << self + # Runs before each test case. + def before(&block) + define_method("setup", &block) + end + + # Runs after each test case. + def after(&block) + define_method("teardown", &block) + end + + # Defines a test case. + def it(name, &block) + define_method("test_#{name}", &block) + end + end + end + + class Failure + # Return the failure message in a more spec like way. + def long_display + file_location, method_name = @location.first.split(':in `') + "#{@test_name} `#{method_name.sub(/^test_/, '')} [#{file_location}]\n#{@message}" + end + end +end + +module Kernel + private + + # Defines a new test case with the given +description+ and optionally a test + # case superclass. + # + # describe "Foo in general" do + # it "should instantiate" do + # assert Foo.new.nil? + # end + # end + def describe(description, superclass = Test::Unit::TestCase, &definition) + klass = Class.new(superclass, &definition) + klass.class_eval "def name; '#{description}' end" + klass + end +end \ No newline at end of file Modified: MacRuby/trunk/test-macruby/test_helper/temp_dir_helper.rb =================================================================== --- MacRuby/trunk/test-macruby/test_helper/temp_dir_helper.rb 2009-01-15 15:28:56 UTC (rev 792) +++ MacRuby/trunk/test-macruby/test_helper/temp_dir_helper.rb 2009-01-15 16:33:16 UTC (rev 793) @@ -1,6 +1,13 @@ require "fileutils" module TempDirHelper + def self.included(klass) + klass.class_eval do + alias_method :setup, :setup_temp_dir! unless instance_methods(false).include?(:setup) + alias_method :teardown, :teardown_temp_dir! unless instance_methods(false).include?(:teardown) + end + end + def ensure_dir!(path) FileUtils.mkdir_p(path) unless File.exist?(path) end Modified: MacRuby/trunk/test-macruby/test_helper/test_unit_helper.rb =================================================================== --- MacRuby/trunk/test-macruby/test_helper/test_unit_helper.rb 2009-01-15 15:28:56 UTC (rev 792) +++ MacRuby/trunk/test-macruby/test_helper/test_unit_helper.rb 2009-01-15 16:33:16 UTC (rev 793) @@ -1,25 +1,6 @@ -# The following is just a simple hack to be able to write tests with a spec description. -# This should ease the process of moving tests to run with mspec for instance. +require File.expand_path('../mini-test-spec', __FILE__) + class Test::Unit::TestCase - class << self - # Runs before each test case. - def before(&block) - define_method("setup", &block) - end - - # Runs after each test case. - def after(&block) - define_method("teardown", &block) - end - - # Defines a test case. - def it(name, &block) - define_method("test_#{name}", &block) - end - end - - private - # Returns the path to a file in +FIXTURE_PATH+. def fixture(name) File.join(FIXTURE_PATH, name)