From 04f2b8f7bf16ad37d3c28f0e06eb02d63ab6a731 Mon Sep 17 00:00:00 2001 From: ntalbott Date: Wed, 12 Feb 2003 03:12:14 +0000 Subject: Initial revision git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/runit/assert.rb | 71 +++++++++++++++++++++++++++++++++++++++++++++ lib/runit/cui/testrunner.rb | 51 ++++++++++++++++++++++++++++++++ lib/runit/error.rb | 9 ++++++ lib/runit/testcase.rb | 45 ++++++++++++++++++++++++++++ lib/runit/testresult.rb | 44 ++++++++++++++++++++++++++++ lib/runit/testsuite.rb | 26 +++++++++++++++++ lib/runit/topublic.rb | 8 +++++ 7 files changed, 254 insertions(+) create mode 100644 lib/runit/assert.rb create mode 100644 lib/runit/cui/testrunner.rb create mode 100644 lib/runit/error.rb create mode 100644 lib/runit/testcase.rb create mode 100644 lib/runit/testresult.rb create mode 100644 lib/runit/testsuite.rb create mode 100644 lib/runit/topublic.rb (limited to 'lib/runit') diff --git a/lib/runit/assert.rb b/lib/runit/assert.rb new file mode 100644 index 0000000000..ede7df1c92 --- /dev/null +++ b/lib/runit/assert.rb @@ -0,0 +1,71 @@ +# Author:: Nathaniel Talbott. +# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. +# License:: Ruby license. + +require 'test/unit/assertions' +require 'runit/error' + +module RUNIT + module Assert + include Test::Unit::Assertions + + def setup_assert + end + + def assert_no_exception(*args, &block) + assert_nothing_raised(*args, &block) + end + + # To deal with the fact that RubyUnit does not check that the regular expression + # is, indeed, a regular expression, if it is not, we do our own assertion using + # the same semantics as RubyUnit + def assert_match(actual_string, expected_re, message="") + _wrap_assertion { + full_message = build_message(message, actual_string, expected_re) { + | arg1, arg2 | + "Expected <#{arg1}> to match <#{arg2}>" + } + assert_block(full_message) { + expected_re =~ actual_string + } + Regexp.last_match + } + end + + def assert_not_match(actual_string, expected_re, message="") + assert_no_match(expected_re, actual_string, message) + end + + def assert_matches(*args) + assert_match(*args) + end + + def assert_fail(message="") + flunk(message) + end + + def assert_equal_float(expected, actual, delta, message="") + assert_in_delta(expected, actual, delta, message) + end + + def assert_send(object, method, *args) + super([object, method, *args]) + end + + def assert_exception(exception, message="", &block) + assert_raises(exception, message, &block) + end + + def assert_respond_to(method, object, message="") + if (called_internally?) + super + else + super(object, method, message) + end + end + + def called_internally? + /assertions\.rb/.match(caller[1]) + end + end +end diff --git a/lib/runit/cui/testrunner.rb b/lib/runit/cui/testrunner.rb new file mode 100644 index 0000000000..0106b6c859 --- /dev/null +++ b/lib/runit/cui/testrunner.rb @@ -0,0 +1,51 @@ +# Author:: Nathaniel Talbott. +# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. +# License:: Ruby license. + +require 'test/unit/ui/console/testrunner' +require 'runit/testresult' + +module RUNIT + module CUI + class TestRunner < Test::Unit::UI::Console::TestRunner + @@quiet_mode = false + + def self.run(suite) + self.new().run(suite) + end + + def initialize + super nil + end + + def run(suite, quiet_mode=@@quiet_mode) + @suite = suite + def @suite.suite + self + end + @output_level = (quiet_mode ? PROGRESS_ONLY : NORMAL) + start + end + + def create_mediator(suite) + mediator = Test::Unit::UI::TestRunnerMediator.new(suite) + class << mediator + attr_writer :result_delegate + def create_result + return @result_delegate.create_result + end + end + mediator.result_delegate = self + return mediator + end + + def create_result + return RUNIT::TestResult.new + end + + def self.quiet_mode=(boolean) + @@quiet_mode = boolean + end + end + end +end diff --git a/lib/runit/error.rb b/lib/runit/error.rb new file mode 100644 index 0000000000..4a727fb02b --- /dev/null +++ b/lib/runit/error.rb @@ -0,0 +1,9 @@ +# Author:: Nathaniel Talbott. +# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. +# License:: Ruby license. + +require 'test/unit/assertionfailederror.rb' + +module RUNIT + AssertionFailedError = Test::Unit::AssertionFailedError +end diff --git a/lib/runit/testcase.rb b/lib/runit/testcase.rb new file mode 100644 index 0000000000..4576cb8644 --- /dev/null +++ b/lib/runit/testcase.rb @@ -0,0 +1,45 @@ +# Author:: Nathaniel Talbott. +# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. +# License:: Ruby license. + +require 'runit/testresult' +require 'runit/testsuite' +require 'runit/assert' +require 'runit/error' +require 'test/unit/testcase' + +module RUNIT + class TestCase < Test::Unit::TestCase + include RUNIT::Assert + + def self.suite + method_names = instance_methods(true) + tests = method_names.delete_if { |method_name| method_name !~ /^test/ } + suite = TestSuite.new(name) + tests.each { + |test| + catch(:invalid_test) { + suite << new(test, name) + } + } + return suite + end + + def initialize(test_name, suite_name=self.class.name) + super(test_name) + end + + def assert_equals(*args) + assert_equal(*args) + end + + def name + super.sub(/^(.*?)\((.*)\)$/, '\2#\1') + end + + def run(result, &progress_block) + progress_block = proc {} unless (block_given?) + super(result, &progress_block) + end + end +end diff --git a/lib/runit/testresult.rb b/lib/runit/testresult.rb new file mode 100644 index 0000000000..7f70778171 --- /dev/null +++ b/lib/runit/testresult.rb @@ -0,0 +1,44 @@ +# Author:: Nathaniel Talbott. +# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. +# License:: Ruby license. + +require 'test/unit/testresult' + +module RUNIT + class TestResult < Test::Unit::TestResult + attr_reader(:errors, :failures) + def succeed? + return passed? + end + def failure_size + return failure_count + end + def run_asserts + return assertion_count + end + def error_size + return error_count + end + def run_tests + return run_count + end + def add_failure(failure) + def failure.at + return location + end + def failure.err + return message + end + super(failure) + end + def add_error(error) + def error.at + return location + end + def error.err + return exception + end + super(error) + end + end +end diff --git a/lib/runit/testsuite.rb b/lib/runit/testsuite.rb new file mode 100644 index 0000000000..63baf65707 --- /dev/null +++ b/lib/runit/testsuite.rb @@ -0,0 +1,26 @@ +# Author:: Nathaniel Talbott. +# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. +# License:: Ruby license. + +require 'test/unit/testsuite' + +module RUNIT + class TestSuite < Test::Unit::TestSuite + def add_test(*args) + add(*args) + end + + def add(*args) + self.<<(*args) + end + + def count_test_cases + return size + end + + def run(result, &progress_block) + progress_block = proc {} unless (block_given?) + super(result, &progress_block) + end + end +end diff --git a/lib/runit/topublic.rb b/lib/runit/topublic.rb new file mode 100644 index 0000000000..566f0dd35c --- /dev/null +++ b/lib/runit/topublic.rb @@ -0,0 +1,8 @@ +# Author:: Nathaniel Talbott. +# Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved. +# License:: Ruby license. + +module RUNIT + module ToPublic + end +end -- cgit v1.2.3