test-unit 2.0.9 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +56 -0
 - data/GPL +340 -0
 - data/History.txt +7 -3
 - data/Manifest.txt +27 -2
 - data/PSFL +271 -0
 - data/README.txt +18 -0
 - data/Rakefile +18 -5
 - data/html/bar.png +0 -0
 - data/html/bar.svg +153 -0
 - data/html/developer.png +0 -0
 - data/html/developer.svg +469 -0
 - data/html/famfamfam-logo.png +0 -0
 - data/html/favicon.ico +0 -0
 - data/html/favicon.png +0 -0
 - data/html/favicon.svg +82 -0
 - data/html/heading-mark.png +0 -0
 - data/html/heading-mark.svg +393 -0
 - data/html/index.html +235 -13
 - data/html/index.html.ja +258 -15
 - data/html/install.png +0 -0
 - data/html/install.svg +636 -0
 - data/html/jp.png +0 -0
 - data/html/kinotan-failure.png +0 -0
 - data/html/kinotan-pass.png +0 -0
 - data/html/logo.png +0 -0
 - data/html/logo.svg +483 -0
 - data/html/reference.png +0 -0
 - data/html/rubyforge.png +0 -0
 - data/html/tango-logo.png +0 -0
 - data/html/test-unit.css +339 -0
 - data/html/tutorial.png +0 -0
 - data/html/tutorial.svg +559 -0
 - data/html/us.png +0 -0
 - data/lib/test/unit.rb +6 -1
 - data/lib/test/unit/assertions.rb +36 -0
 - data/lib/test/unit/autorunner.rb +5 -2
 - data/lib/test/unit/collector/load.rb +1 -1
 - data/lib/test/unit/color-scheme.rb +1 -1
 - data/lib/test/unit/diff.rb +7 -0
 - data/lib/test/unit/testcase.rb +5 -0
 - data/lib/test/unit/testresult.rb +34 -2
 - data/lib/test/unit/ui/console/testrunner.rb +9 -45
 - data/lib/test/unit/ui/tap/testrunner.rb +0 -9
 - data/lib/test/unit/ui/testrunner.rb +25 -0
 - data/lib/test/unit/version.rb +1 -1
 - data/test/test-color-scheme.rb +1 -1
 - data/test/test_assertions.rb +27 -3
 - metadata +53 -14
 - data/html/classic.html +0 -15
 - data/html/test-unit-classic.png +0 -0
 
    
        data/html/us.png
    ADDED
    
    | 
         Binary file 
     | 
    
        data/lib/test/unit.rb
    CHANGED
    
    | 
         @@ -90,8 +90,13 @@ module Test # :nodoc: 
     | 
|
| 
       90 
90 
     | 
    
         
             
              # 
         
     | 
| 
       91 
91 
     | 
    
         
             
              # Test::Unit is copyright (c) 2000-2003 Nathaniel Talbott. It is free
         
     | 
| 
       92 
92 
     | 
    
         
             
              # software, and is distributed under the Ruby license. See the COPYING
         
     | 
| 
       93 
     | 
    
         
            -
              # file 
     | 
| 
      
 93 
     | 
    
         
            +
              # file.
         
     | 
| 
       94 
94 
     | 
    
         
             
              # 
         
     | 
| 
      
 95 
     | 
    
         
            +
              # Exception: lib/test/unit/diff.rb is copyright (c)
         
     | 
| 
      
 96 
     | 
    
         
            +
              # 2008-2010 Kouhei Sutou and 2001-2008 Python Software
         
     | 
| 
      
 97 
     | 
    
         
            +
              # Foundation. It is free software, and is distributed
         
     | 
| 
      
 98 
     | 
    
         
            +
              # under the Ruby license and/or the PSF license. See the
         
     | 
| 
      
 99 
     | 
    
         
            +
              # COPYING file and PSFL file.
         
     | 
| 
       95 
100 
     | 
    
         
             
              # 
         
     | 
| 
       96 
101 
     | 
    
         
             
              # == Warranty
         
     | 
| 
       97 
102 
     | 
    
         
             
              # 
         
     | 
    
        data/lib/test/unit/assertions.rb
    CHANGED
    
    | 
         @@ -914,6 +914,42 @@ EOT 
     | 
|
| 
       914 
914 
     | 
    
         
             
                    end
         
     | 
| 
       915 
915 
     | 
    
         
             
                  end
         
     | 
| 
       916 
916 
     | 
    
         | 
| 
      
 917 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 918 
     | 
    
         
            +
                  # Passes if +path+ exists.
         
     | 
| 
      
 919 
     | 
    
         
            +
                  #
         
     | 
| 
      
 920 
     | 
    
         
            +
                  # Example:
         
     | 
| 
      
 921 
     | 
    
         
            +
                  #   assert_path_exist("/tmp")          # -> pass
         
     | 
| 
      
 922 
     | 
    
         
            +
                  #   assert_path_exist("/bin/sh")       # -> pass
         
     | 
| 
      
 923 
     | 
    
         
            +
                  #   assert_path_exist("/nonexistent")  # -> fail
         
     | 
| 
      
 924 
     | 
    
         
            +
                  def assert_path_exist(path, message=nil)
         
     | 
| 
      
 925 
     | 
    
         
            +
                    _wrap_assertion do
         
     | 
| 
      
 926 
     | 
    
         
            +
                      failure_message = build_message(message,
         
     | 
| 
      
 927 
     | 
    
         
            +
                                                      "<?> expected to exist",
         
     | 
| 
      
 928 
     | 
    
         
            +
                                                      path)
         
     | 
| 
      
 929 
     | 
    
         
            +
                      assert_block(failure_message) do
         
     | 
| 
      
 930 
     | 
    
         
            +
                        File.exist?(path)
         
     | 
| 
      
 931 
     | 
    
         
            +
                      end
         
     | 
| 
      
 932 
     | 
    
         
            +
                    end
         
     | 
| 
      
 933 
     | 
    
         
            +
                  end
         
     | 
| 
      
 934 
     | 
    
         
            +
             
     | 
| 
      
 935 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 936 
     | 
    
         
            +
                  # Passes if +path+ doesn't exist.
         
     | 
| 
      
 937 
     | 
    
         
            +
                  #
         
     | 
| 
      
 938 
     | 
    
         
            +
                  # Example:
         
     | 
| 
      
 939 
     | 
    
         
            +
                  #   assert_path_not_exist("/nonexistent")  # -> pass
         
     | 
| 
      
 940 
     | 
    
         
            +
                  #   assert_path_not_exist("/tmp")          # -> fail
         
     | 
| 
      
 941 
     | 
    
         
            +
                  #   assert_path_not_exist("/bin/sh")       # -> fail
         
     | 
| 
      
 942 
     | 
    
         
            +
                  def assert_path_not_exist(path, message=nil)
         
     | 
| 
      
 943 
     | 
    
         
            +
                    _wrap_assertion do
         
     | 
| 
      
 944 
     | 
    
         
            +
                      failure_message = build_message(message,
         
     | 
| 
      
 945 
     | 
    
         
            +
                                                      "<?> expected to not exist",
         
     | 
| 
      
 946 
     | 
    
         
            +
                                                      path)
         
     | 
| 
      
 947 
     | 
    
         
            +
                      assert_block(failure_message) do
         
     | 
| 
      
 948 
     | 
    
         
            +
                        not File.exist?(path)
         
     | 
| 
      
 949 
     | 
    
         
            +
                      end
         
     | 
| 
      
 950 
     | 
    
         
            +
                    end
         
     | 
| 
      
 951 
     | 
    
         
            +
                  end
         
     | 
| 
      
 952 
     | 
    
         
            +
             
     | 
| 
       917 
953 
     | 
    
         
             
                  ##
         
     | 
| 
       918 
954 
     | 
    
         
             
                  # Builds a failure message.  +head+ is added before the +template+ and
         
     | 
| 
       919 
955 
     | 
    
         
             
                  # +arguments+ replaces the '?'s positionally in the template.
         
     | 
    
        data/lib/test/unit/autorunner.rb
    CHANGED
    
    | 
         @@ -99,7 +99,7 @@ module Test 
     | 
|
| 
       99 
99 
     | 
    
         | 
| 
       100 
100 
     | 
    
         
             
                  attr_reader :suite, :runner_options
         
     | 
| 
       101 
101 
     | 
    
         
             
                  attr_accessor :filters, :to_run, :pattern, :exclude, :base, :workdir
         
     | 
| 
       102 
     | 
    
         
            -
                  attr_accessor :color_scheme
         
     | 
| 
      
 102 
     | 
    
         
            +
                  attr_accessor :color_scheme, :listeners
         
     | 
| 
       103 
103 
     | 
    
         
             
                  attr_writer :runner, :collector
         
     | 
| 
       104 
104 
     | 
    
         | 
| 
       105 
105 
     | 
    
         
             
                  def initialize(standalone)
         
     | 
| 
         @@ -113,6 +113,7 @@ module Test 
     | 
|
| 
       113 
113 
     | 
    
         
             
                    @runner_options = {}
         
     | 
| 
       114 
114 
     | 
    
         
             
                    @default_arguments = []
         
     | 
| 
       115 
115 
     | 
    
         
             
                    @workdir = nil
         
     | 
| 
      
 116 
     | 
    
         
            +
                    @listeners = []
         
     | 
| 
       116 
117 
     | 
    
         
             
                    config_file = "test-unit.yml"
         
     | 
| 
       117 
118 
     | 
    
         
             
                    if File.exist?(config_file)
         
     | 
| 
       118 
119 
     | 
    
         
             
                      load_config(config_file)
         
     | 
| 
         @@ -300,6 +301,8 @@ module Test 
     | 
|
| 
       300 
301 
     | 
    
         
             
                    runner = @runner[self]
         
     | 
| 
       301 
302 
     | 
    
         
             
                    return false if runner.nil?
         
     | 
| 
       302 
303 
     | 
    
         
             
                    @runner_options[:color_scheme] ||= @color_scheme
         
     | 
| 
      
 304 
     | 
    
         
            +
                    @runner_options[:listeners] ||= []
         
     | 
| 
      
 305 
     | 
    
         
            +
                    @runner_options[:listeners].concat(@listeners)
         
     | 
| 
       303 
306 
     | 
    
         
             
                    Dir.chdir(@workdir) if @workdir
         
     | 
| 
       304 
307 
     | 
    
         
             
                    runner.run(suite, @runner_options).passed?
         
     | 
| 
       305 
308 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -342,7 +345,7 @@ module Test 
     | 
|
| 
       342 
345 
     | 
    
         
             
                  end
         
     | 
| 
       343 
346 
     | 
    
         | 
| 
       344 
347 
     | 
    
         
             
                  def global_config_file
         
     | 
| 
       345 
     | 
    
         
            -
                    File.expand_path("~/.test-unit. 
     | 
| 
      
 348 
     | 
    
         
            +
                    File.expand_path("~/.test-unit.yml")
         
     | 
| 
       346 
349 
     | 
    
         
             
                  rescue ArgumentError
         
     | 
| 
       347 
350 
     | 
    
         
             
                    nil
         
     | 
| 
       348 
351 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -95,7 +95,7 @@ module Test 
     | 
|
| 
       95 
95 
     | 
    
         | 
| 
       96 
96 
     | 
    
         
             
                    def collect_file(path, test_suites, already_gathered)
         
     | 
| 
       97 
97 
     | 
    
         
             
                      @program_file ||= File.expand_path($0)
         
     | 
| 
       98 
     | 
    
         
            -
                      return if @program_file == path.to_s
         
     | 
| 
      
 98 
     | 
    
         
            +
                      return if @program_file == path.expand_path.to_s
         
     | 
| 
       99 
99 
     | 
    
         
             
                      add_load_path(path.expand_path.dirname) do
         
     | 
| 
       100 
100 
     | 
    
         
             
                        require(path.to_s)
         
     | 
| 
       101 
101 
     | 
    
         
             
                        find_test_cases(already_gathered).each do |test_case|
         
     | 
    
        data/lib/test/unit/diff.rb
    CHANGED
    
    | 
         @@ -1,4 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # port of Python's difflib.
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Copyright (c) 2001-2008 Python Software Foundation; All Rights Reserved
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Copyright (c) 2008-2010 Kouhei Sutou; All Rights Reserved
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # It is free software, and is distributed under the Ruby
         
     | 
| 
      
 7 
     | 
    
         
            +
            # license and/or the PSF license. See the COPYING file and
         
     | 
| 
      
 8 
     | 
    
         
            +
            # PSFL file.
         
     | 
| 
       2 
9 
     | 
    
         | 
| 
       3 
10 
     | 
    
         
             
            module Test
         
     | 
| 
       4 
11 
     | 
    
         
             
              module Unit
         
     | 
    
        data/lib/test/unit/testcase.rb
    CHANGED
    
    | 
         @@ -450,6 +450,7 @@ module Test 
     | 
|
| 
       450 
450 
     | 
    
         
             
                      notify("#{self.class}\##{@method_name} was redefined")
         
     | 
| 
       451 
451 
     | 
    
         
             
                    end
         
     | 
| 
       452 
452 
     | 
    
         
             
                    __send__(@method_name)
         
     | 
| 
      
 453 
     | 
    
         
            +
                    add_pass
         
     | 
| 
       453 
454 
     | 
    
         
             
                  end
         
     | 
| 
       454 
455 
     | 
    
         | 
| 
       455 
456 
     | 
    
         
             
                  def handle_exception(exception)
         
     | 
| 
         @@ -473,6 +474,10 @@ module Test 
     | 
|
| 
       473 
474 
     | 
    
         
             
                  def add_assertion
         
     | 
| 
       474 
475 
     | 
    
         
             
                    current_result.add_assertion
         
     | 
| 
       475 
476 
     | 
    
         
             
                  end
         
     | 
| 
      
 477 
     | 
    
         
            +
             
     | 
| 
      
 478 
     | 
    
         
            +
                  def add_pass
         
     | 
| 
      
 479 
     | 
    
         
            +
                    current_result.add_pass
         
     | 
| 
      
 480 
     | 
    
         
            +
                  end
         
     | 
| 
       476 
481 
     | 
    
         
             
                end
         
     | 
| 
       477 
482 
     | 
    
         
             
              end
         
     | 
| 
       478 
483 
     | 
    
         
             
            end
         
     | 
    
        data/lib/test/unit/testresult.rb
    CHANGED
    
    | 
         @@ -34,11 +34,11 @@ module Test 
     | 
|
| 
       34 
34 
     | 
    
         
             
                  CHANGED = "CHANGED"
         
     | 
| 
       35 
35 
     | 
    
         
             
                  FAULT = "FAULT"
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                  attr_reader :run_count, :assertion_count, :faults
         
     | 
| 
      
 37 
     | 
    
         
            +
                  attr_reader :run_count, :pass_count, :assertion_count, :faults
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                  # Constructs a new, empty TestResult.
         
     | 
| 
       40 
40 
     | 
    
         
             
                  def initialize
         
     | 
| 
       41 
     | 
    
         
            -
                    @run_count, @assertion_count = 0, 0
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @run_count, @pass_count, @assertion_count = 0, 0, 0
         
     | 
| 
       42 
42 
     | 
    
         
             
                    @summary_generators = []
         
     | 
| 
       43 
43 
     | 
    
         
             
                    @problem_checkers = []
         
     | 
| 
       44 
44 
     | 
    
         
             
                    @faults = []
         
     | 
| 
         @@ -51,6 +51,10 @@ module Test 
     | 
|
| 
       51 
51 
     | 
    
         
             
                    notify_changed
         
     | 
| 
       52 
52 
     | 
    
         
             
                  end
         
     | 
| 
       53 
53 
     | 
    
         | 
| 
      
 54 
     | 
    
         
            +
                  def add_pass
         
     | 
| 
      
 55 
     | 
    
         
            +
                    @pass_count += 1
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
       54 
58 
     | 
    
         
             
                  # Records an individual assertion.
         
     | 
| 
       55 
59 
     | 
    
         
             
                  def add_assertion
         
     | 
| 
       56 
60 
     | 
    
         
             
                    @assertion_count += 1
         
     | 
| 
         @@ -65,6 +69,25 @@ module Test 
     | 
|
| 
       65 
69 
     | 
    
         
             
                     *@summary_generators.collect {|generator| send(generator)}].join(", ")
         
     | 
| 
       66 
70 
     | 
    
         
             
                  end
         
     | 
| 
       67 
71 
     | 
    
         | 
| 
      
 72 
     | 
    
         
            +
                  # Returnes a string that shows result status.
         
     | 
| 
      
 73 
     | 
    
         
            +
                  def status
         
     | 
| 
      
 74 
     | 
    
         
            +
                    if passed?
         
     | 
| 
      
 75 
     | 
    
         
            +
                      if pending_count > 0
         
     | 
| 
      
 76 
     | 
    
         
            +
                        "pending"
         
     | 
| 
      
 77 
     | 
    
         
            +
                      elsif omission_count > 0
         
     | 
| 
      
 78 
     | 
    
         
            +
                        "omission"
         
     | 
| 
      
 79 
     | 
    
         
            +
                      elsif notification_count > 0
         
     | 
| 
      
 80 
     | 
    
         
            +
                        "notification"
         
     | 
| 
      
 81 
     | 
    
         
            +
                      else
         
     | 
| 
      
 82 
     | 
    
         
            +
                        "pass"
         
     | 
| 
      
 83 
     | 
    
         
            +
                      end
         
     | 
| 
      
 84 
     | 
    
         
            +
                    elsif error_count > 0
         
     | 
| 
      
 85 
     | 
    
         
            +
                      "error"
         
     | 
| 
      
 86 
     | 
    
         
            +
                    elsif failure_count > 0
         
     | 
| 
      
 87 
     | 
    
         
            +
                      "failure"
         
     | 
| 
      
 88 
     | 
    
         
            +
                    end
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       68 
91 
     | 
    
         
             
                  def to_s
         
     | 
| 
       69 
92 
     | 
    
         
             
                    summary
         
     | 
| 
       70 
93 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -75,6 +98,15 @@ module Test 
     | 
|
| 
       75 
98 
     | 
    
         
             
                    @problem_checkers.all? {|checker| not send(checker)}
         
     | 
| 
       76 
99 
     | 
    
         
             
                  end
         
     | 
| 
       77 
100 
     | 
    
         | 
| 
      
 101 
     | 
    
         
            +
                  def pass_percentage
         
     | 
| 
      
 102 
     | 
    
         
            +
                    n_tests = @run_count - omission_count
         
     | 
| 
      
 103 
     | 
    
         
            +
                    if n_tests.zero?
         
     | 
| 
      
 104 
     | 
    
         
            +
                      0
         
     | 
| 
      
 105 
     | 
    
         
            +
                    else
         
     | 
| 
      
 106 
     | 
    
         
            +
                      100.0 * (@pass_count / n_tests.to_f)
         
     | 
| 
      
 107 
     | 
    
         
            +
                    end
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
       78 
110 
     | 
    
         
             
                  private
         
     | 
| 
       79 
111 
     | 
    
         
             
                  def notify_changed
         
     | 
| 
       80 
112 
     | 
    
         
             
                    notify_listeners(CHANGED, self)
         
     | 
| 
         @@ -38,23 +38,14 @@ module Test 
     | 
|
| 
       38 
38 
     | 
    
         
             
                        @progress_row_max = @options[:progress_row_max]
         
     | 
| 
       39 
39 
     | 
    
         
             
                        @progress_row_max ||= guess_progress_row_max
         
     | 
| 
       40 
40 
     | 
    
         
             
                        @already_outputted = false
         
     | 
| 
       41 
     | 
    
         
            -
                        @n_successes = 0
         
     | 
| 
       42 
     | 
    
         
            -
                        @n_omissions = 0
         
     | 
| 
       43 
41 
     | 
    
         
             
                        @indent = 0
         
     | 
| 
       44 
42 
     | 
    
         
             
                        @top_level = true
         
     | 
| 
       45 
43 
     | 
    
         
             
                        @faults = []
         
     | 
| 
       46 
44 
     | 
    
         
             
                      end
         
     | 
| 
       47 
45 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                      # Begins the test run.
         
     | 
| 
       49 
     | 
    
         
            -
                      def start
         
     | 
| 
       50 
     | 
    
         
            -
                        setup_mediator
         
     | 
| 
       51 
     | 
    
         
            -
                        attach_to_mediator
         
     | 
| 
       52 
     | 
    
         
            -
                        return start_mediator
         
     | 
| 
       53 
     | 
    
         
            -
                      end
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
46 
     | 
    
         
             
                      private
         
     | 
| 
       56 
47 
     | 
    
         
             
                      def setup_mediator
         
     | 
| 
       57 
     | 
    
         
            -
                         
     | 
| 
      
 48 
     | 
    
         
            +
                        super
         
     | 
| 
       58 
49 
     | 
    
         
             
                        output_setup_end
         
     | 
| 
       59 
50 
     | 
    
         
             
                      end
         
     | 
| 
       60 
51 
     | 
    
         | 
| 
         @@ -64,10 +55,6 @@ module Test 
     | 
|
| 
       64 
55 
     | 
    
         
             
                        output("Loaded suite #{suite_name}")
         
     | 
| 
       65 
56 
     | 
    
         
             
                      end
         
     | 
| 
       66 
57 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                      def create_mediator(suite)
         
     | 
| 
       68 
     | 
    
         
            -
                        return TestRunnerMediator.new(suite)
         
     | 
| 
       69 
     | 
    
         
            -
                      end
         
     | 
| 
       70 
     | 
    
         
            -
                      
         
     | 
| 
       71 
58 
     | 
    
         
             
                      def attach_to_mediator
         
     | 
| 
       72 
59 
     | 
    
         
             
                        @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
         
     | 
| 
       73 
60 
     | 
    
         
             
                        @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
         
     | 
| 
         @@ -78,14 +65,9 @@ module Test 
     | 
|
| 
       78 
65 
     | 
    
         
             
                        @mediator.add_listener(TestSuite::FINISHED, &method(:test_suite_finished))
         
     | 
| 
       79 
66 
     | 
    
         
             
                      end
         
     | 
| 
       80 
67 
     | 
    
         | 
| 
       81 
     | 
    
         
            -
                      def start_mediator
         
     | 
| 
       82 
     | 
    
         
            -
                        return @mediator.run_suite
         
     | 
| 
       83 
     | 
    
         
            -
                      end
         
     | 
| 
       84 
     | 
    
         
            -
                      
         
     | 
| 
       85 
68 
     | 
    
         
             
                      def add_fault(fault)
         
     | 
| 
       86 
69 
     | 
    
         
             
                        @faults << fault
         
     | 
| 
       87 
70 
     | 
    
         
             
                        output_progress(fault.single_character_display, fault_color(fault))
         
     | 
| 
       88 
     | 
    
         
            -
                        @n_omissions += 1 if fault.is_a?(Omission)
         
     | 
| 
       89 
71 
     | 
    
         
             
                        @already_outputted = true if fault.critical?
         
     | 
| 
       90 
72 
     | 
    
         
             
                      end
         
     | 
| 
       91 
73 
     | 
    
         | 
| 
         @@ -109,13 +91,7 @@ module Test 
     | 
|
| 
       109 
91 
     | 
    
         
             
                        output("Finished in #{elapsed_time} seconds.")
         
     | 
| 
       110 
92 
     | 
    
         
             
                        nl
         
     | 
| 
       111 
93 
     | 
    
         
             
                        output(@result, result_color)
         
     | 
| 
       112 
     | 
    
         
            -
                         
     | 
| 
       113 
     | 
    
         
            -
                        if n_tests.zero?
         
     | 
| 
       114 
     | 
    
         
            -
                          pass_percentage = 0
         
     | 
| 
       115 
     | 
    
         
            -
                        else
         
     | 
| 
       116 
     | 
    
         
            -
                          pass_percentage = 100.0 * (@n_successes / n_tests.to_f)
         
     | 
| 
       117 
     | 
    
         
            -
                        end
         
     | 
| 
       118 
     | 
    
         
            -
                        output("%g%% passed" % pass_percentage, result_color)
         
     | 
| 
      
 94 
     | 
    
         
            +
                        output("%g%% passed" % @result.pass_percentage, result_color)
         
     | 
| 
       119 
95 
     | 
    
         
             
                      end
         
     | 
| 
       120 
96 
     | 
    
         | 
| 
       121 
97 
     | 
    
         
             
                      def output_fault(fault)
         
     | 
| 
         @@ -159,7 +135,7 @@ module Test 
     | 
|
| 
       159 
135 
     | 
    
         
             
                      def output_fault_message(fault)
         
     | 
| 
       160 
136 
     | 
    
         
             
                        output(fault.user_message) if fault.user_message
         
     | 
| 
       161 
137 
     | 
    
         
             
                        output_single("<")
         
     | 
| 
       162 
     | 
    
         
            -
                        output_single(fault.inspected_expected, color(" 
     | 
| 
      
 138 
     | 
    
         
            +
                        output_single(fault.inspected_expected, color("pass"))
         
     | 
| 
       163 
139 
     | 
    
         
             
                        output("> expected but was")
         
     | 
| 
       164 
140 
     | 
    
         
             
                        output_single("<")
         
     | 
| 
       165 
141 
     | 
    
         
             
                        output_single(fault.inspected_actual, color("failure"))
         
     | 
| 
         @@ -195,8 +171,7 @@ module Test 
     | 
|
| 
       195 
171 
     | 
    
         | 
| 
       196 
172 
     | 
    
         
             
                      def test_finished(name)
         
     | 
| 
       197 
173 
     | 
    
         
             
                        unless @already_outputted
         
     | 
| 
       198 
     | 
    
         
            -
                           
     | 
| 
       199 
     | 
    
         
            -
                          output_progress(".", color("success"))
         
     | 
| 
      
 174 
     | 
    
         
            +
                          output_progress(".", color("pass"))
         
     | 
| 
       200 
175 
     | 
    
         
             
                        end
         
     | 
| 
       201 
176 
     | 
    
         
             
                        @already_outputted = false
         
     | 
| 
       202 
177 
     | 
    
         | 
| 
         @@ -272,7 +247,10 @@ module Test 
     | 
|
| 
       272 
247 
     | 
    
         
             
                      end
         
     | 
| 
       273 
248 
     | 
    
         | 
| 
       274 
249 
     | 
    
         
             
                      def color(name)
         
     | 
| 
       275 
     | 
    
         
            -
                        @color_scheme[name] 
     | 
| 
      
 250 
     | 
    
         
            +
                        _color = @color_scheme[name]
         
     | 
| 
      
 251 
     | 
    
         
            +
                        _color ||= @color_scheme["success"] if name == "pass"
         
     | 
| 
      
 252 
     | 
    
         
            +
                        _color ||= ColorScheme.default[name]
         
     | 
| 
      
 253 
     | 
    
         
            +
                        _color
         
     | 
| 
       276 
254 
     | 
    
         
             
                      end
         
     | 
| 
       277 
255 
     | 
    
         | 
| 
       278 
256 
     | 
    
         
             
                      def fault_color(fault)
         
     | 
| 
         @@ -280,21 +258,7 @@ module Test 
     | 
|
| 
       280 
258 
     | 
    
         
             
                      end
         
     | 
| 
       281 
259 
     | 
    
         | 
| 
       282 
260 
     | 
    
         
             
                      def result_color
         
     | 
| 
       283 
     | 
    
         
            -
                         
     | 
| 
       284 
     | 
    
         
            -
                          if @result.pending_count > 0
         
     | 
| 
       285 
     | 
    
         
            -
                            color("pending")
         
     | 
| 
       286 
     | 
    
         
            -
                          elsif @result.omission_count > 0
         
     | 
| 
       287 
     | 
    
         
            -
                            color("omission")
         
     | 
| 
       288 
     | 
    
         
            -
                          elsif @result.notification_count > 0
         
     | 
| 
       289 
     | 
    
         
            -
                            color("notification")
         
     | 
| 
       290 
     | 
    
         
            -
                          else
         
     | 
| 
       291 
     | 
    
         
            -
                            color("success")
         
     | 
| 
       292 
     | 
    
         
            -
                          end
         
     | 
| 
       293 
     | 
    
         
            -
                        elsif @result.error_count > 0
         
     | 
| 
       294 
     | 
    
         
            -
                          color("error")
         
     | 
| 
       295 
     | 
    
         
            -
                        elsif @result.failure_count > 0
         
     | 
| 
       296 
     | 
    
         
            -
                          color("failure")
         
     | 
| 
       297 
     | 
    
         
            -
                        end
         
     | 
| 
      
 261 
     | 
    
         
            +
                        color(@result.status)
         
     | 
| 
       298 
262 
     | 
    
         
             
                      end
         
     | 
| 
       299 
263 
     | 
    
         | 
| 
       300 
264 
     | 
    
         
             
                      def guess_color_availability
         
     | 
| 
         @@ -33,11 +33,6 @@ module Test 
     | 
|
| 
       33 
33 
     | 
    
         
             
                      end
         
     | 
| 
       34 
34 
     | 
    
         | 
| 
       35 
35 
     | 
    
         
             
                      private
         
     | 
| 
       36 
     | 
    
         
            -
                      def setup_mediator
         
     | 
| 
       37 
     | 
    
         
            -
                        @mediator = TestRunnerMediator.new(@suite)
         
     | 
| 
       38 
     | 
    
         
            -
                        attach_to_mediator
         
     | 
| 
       39 
     | 
    
         
            -
                      end
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
36 
     | 
    
         
             
                      def attach_to_mediator
         
     | 
| 
       42 
37 
     | 
    
         
             
                        @mediator.add_listener(TestResult::FAULT, &method(:add_fault))
         
     | 
| 
       43 
38 
     | 
    
         
             
                        @mediator.add_listener(TestRunnerMediator::STARTED, &method(:started))
         
     | 
| 
         @@ -46,10 +41,6 @@ module Test 
     | 
|
| 
       46 
41 
     | 
    
         
             
                        @mediator.add_listener(TestCase::FINISHED, &method(:test_finished))
         
     | 
| 
       47 
42 
     | 
    
         
             
                      end
         
     | 
| 
       48 
43 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                      def start_mediator
         
     | 
| 
       50 
     | 
    
         
            -
                        @mediator.run_suite
         
     | 
| 
       51 
     | 
    
         
            -
                      end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
44 
     | 
    
         
             
                      def add_fault(fault)
         
     | 
| 
       54 
45 
     | 
    
         
             
                        puts("not ok #{@n_tests} - #{fault.short_display}")
         
     | 
| 
       55 
46 
     | 
    
         
             
                        fault.long_display.each_line do |line|
         
     | 
| 
         @@ -6,6 +6,7 @@ module Test 
     | 
|
| 
       6 
6 
     | 
    
         
             
                  class TestRunner
         
     | 
| 
       7 
7 
     | 
    
         
             
                    extend TestRunnerUtilities
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
                    attr_reader :listeners
         
     | 
| 
       9 
10 
     | 
    
         
             
                    def initialize(suite, options={})
         
     | 
| 
       10 
11 
     | 
    
         
             
                      if suite.respond_to?(:suite)
         
     | 
| 
       11 
12 
     | 
    
         
             
                        @suite = suite.suite
         
     | 
| 
         @@ -13,6 +14,30 @@ module Test 
     | 
|
| 
       13 
14 
     | 
    
         
             
                        @suite = suite
         
     | 
| 
       14 
15 
     | 
    
         
             
                      end
         
     | 
| 
       15 
16 
     | 
    
         
             
                      @options = options
         
     | 
| 
      
 17 
     | 
    
         
            +
                      @listeners = @options[:listeners] || []
         
     | 
| 
      
 18 
     | 
    
         
            +
                    end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                    # Begins the test run.
         
     | 
| 
      
 21 
     | 
    
         
            +
                    def start
         
     | 
| 
      
 22 
     | 
    
         
            +
                      setup_mediator
         
     | 
| 
      
 23 
     | 
    
         
            +
                      attach_to_mediator
         
     | 
| 
      
 24 
     | 
    
         
            +
                      attach_listeners
         
     | 
| 
      
 25 
     | 
    
         
            +
                      start_mediator
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                    private
         
     | 
| 
      
 29 
     | 
    
         
            +
                    def setup_mediator
         
     | 
| 
      
 30 
     | 
    
         
            +
                      @mediator = TestRunnerMediator.new(@suite)
         
     | 
| 
      
 31 
     | 
    
         
            +
                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    def attach_listeners
         
     | 
| 
      
 34 
     | 
    
         
            +
                      @listeners.each do |listener|
         
     | 
| 
      
 35 
     | 
    
         
            +
                        listener.attach_to_mediator(@mediator)
         
     | 
| 
      
 36 
     | 
    
         
            +
                      end
         
     | 
| 
      
 37 
     | 
    
         
            +
                    end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                    def start_mediator
         
     | 
| 
      
 40 
     | 
    
         
            +
                      @mediator.run_suite
         
     | 
| 
       16 
41 
     | 
    
         
             
                    end
         
     | 
| 
       17 
42 
     | 
    
         | 
| 
       18 
43 
     | 
    
         
             
                    def diff_target_string?(string)
         
     | 
    
        data/lib/test/unit/version.rb
    CHANGED
    
    
    
        data/test/test-color-scheme.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class TestUnitColorScheme < Test::Unit::TestCase
         
     | 
| 
       2 
2 
     | 
    
         
             
              def test_default
         
     | 
| 
       3 
3 
     | 
    
         
             
                assert_equal({
         
     | 
| 
       4 
     | 
    
         
            -
                               " 
     | 
| 
      
 4 
     | 
    
         
            +
                               "pass" => color("green", :foreground => false) +
         
     | 
| 
       5 
5 
     | 
    
         
             
                                            color("white", :bold => true),
         
     | 
| 
       6 
6 
     | 
    
         
             
                               "failure" => color("red", :foreground => false) +
         
     | 
| 
       7 
7 
     | 
    
         
             
                                            color("white", :bold => true),
         
     | 
    
        data/test/test_assertions.rb
    CHANGED
    
    | 
         @@ -837,9 +837,10 @@ EOM 
     | 
|
| 
       837 
837 
     | 
    
         
             
                      assert_in_delta(0.5, 0.4, 0.05, "message")
         
     | 
| 
       838 
838 
     | 
    
         
             
                    }
         
     | 
| 
       839 
839 
     | 
    
         
             
                    object = Object.new
         
     | 
| 
      
 840 
     | 
    
         
            +
                    inspected_object = AssertionMessage.convert(object)
         
     | 
| 
       840 
841 
     | 
    
         
             
                    check_fails("The arguments must respond to to_f; " +
         
     | 
| 
       841 
842 
     | 
    
         
             
                                "the first float did not.\n" +
         
     | 
| 
       842 
     | 
    
         
            -
                                "<#{ 
     | 
| 
      
 843 
     | 
    
         
            +
                                "<#{inspected_object}>.respond_to?(:to_f) expected\n" +
         
     | 
| 
       843 
844 
     | 
    
         
             
                                "(Class: <Object>)") {
         
     | 
| 
       844 
845 
     | 
    
         
             
                      assert_in_delta(object, 0.4, 0.1)
         
     | 
| 
       845 
846 
     | 
    
         
             
                    }
         
     | 
| 
         @@ -1143,17 +1144,40 @@ EOM 
     | 
|
| 
       1143 
1144 
     | 
    
         
             
                      assert_alias_method(object, :other, :original_method)
         
     | 
| 
       1144 
1145 
     | 
    
         
             
                    end
         
     | 
| 
       1145 
1146 
     | 
    
         | 
| 
       1146 
     | 
    
         
            -
                     
     | 
| 
      
 1147 
     | 
    
         
            +
                    inspected_object = AssertionMessage.convert(object)
         
     | 
| 
      
 1148 
     | 
    
         
            +
                    check_fails("<#{inspected_object}>.nonexistent doesn't exist\n" +
         
     | 
| 
       1147 
1149 
     | 
    
         
             
                                "(Class: <Object>)") do
         
     | 
| 
       1148 
1150 
     | 
    
         
             
                      assert_alias_method(object, :nonexistent, :original_method)
         
     | 
| 
       1149 
1151 
     | 
    
         
             
                    end
         
     | 
| 
       1150 
1152 
     | 
    
         | 
| 
       1151 
     | 
    
         
            -
                    check_fails("<#{ 
     | 
| 
      
 1153 
     | 
    
         
            +
                    check_fails("<#{inspected_object}>.nonexistent doesn't exist\n" +
         
     | 
| 
       1152 
1154 
     | 
    
         
             
                                "(Class: <Object>)") do
         
     | 
| 
       1153 
1155 
     | 
    
         
             
                      assert_alias_method(object, :alias_method, :nonexistent)
         
     | 
| 
       1154 
1156 
     | 
    
         
             
                    end
         
     | 
| 
       1155 
1157 
     | 
    
         
             
                  end
         
     | 
| 
       1156 
1158 
     | 
    
         | 
| 
      
 1159 
     | 
    
         
            +
                  def test_assert_path_exist
         
     | 
| 
      
 1160 
     | 
    
         
            +
                    check_nothing_fails do
         
     | 
| 
      
 1161 
     | 
    
         
            +
                      assert_path_exist(__FILE__)
         
     | 
| 
      
 1162 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1163 
     | 
    
         
            +
             
     | 
| 
      
 1164 
     | 
    
         
            +
                    nonexistent_file = __FILE__ + ".nonexistent"
         
     | 
| 
      
 1165 
     | 
    
         
            +
                    check_fails("<#{nonexistent_file.inspect}> expected to exist") do
         
     | 
| 
      
 1166 
     | 
    
         
            +
                      assert_path_exist(nonexistent_file)
         
     | 
| 
      
 1167 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1168 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1169 
     | 
    
         
            +
             
     | 
| 
      
 1170 
     | 
    
         
            +
                  def test_assert_path_not_exist
         
     | 
| 
      
 1171 
     | 
    
         
            +
                    nonexistent_file = __FILE__ + ".nonexistent"
         
     | 
| 
      
 1172 
     | 
    
         
            +
                    check_nothing_fails do
         
     | 
| 
      
 1173 
     | 
    
         
            +
                      assert_path_not_exist(nonexistent_file)
         
     | 
| 
      
 1174 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1175 
     | 
    
         
            +
             
     | 
| 
      
 1176 
     | 
    
         
            +
                    check_fails("<#{__FILE__.inspect}> expected to not exist") do
         
     | 
| 
      
 1177 
     | 
    
         
            +
                      assert_path_not_exist(__FILE__)
         
     | 
| 
      
 1178 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1179 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1180 
     | 
    
         
            +
             
     | 
| 
       1157 
1181 
     | 
    
         
             
                  private
         
     | 
| 
       1158 
1182 
     | 
    
         
             
                  def add_failure(message, location=caller, options=nil)
         
     | 
| 
       1159 
1183 
     | 
    
         
             
                    unless @catch_assertions
         
     |