oktest 1.4.0 → 1.5.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.
- checksums.yaml +4 -4
- data/README.md +42 -5
- data/Rakefile.rb +1 -1
- data/lib/oktest.rb +32 -9
- data/oktest.gemspec +3 -3
- data/test/assertion_test.rb +229 -227
- data/test/filter_test.rb +122 -120
- data/test/fixture_test.rb +33 -32
- data/test/generator_test.rb +20 -19
- data/test/helper_test.rb +280 -274
- data/test/init.rb +44 -0
- data/test/mainapp_test.rb +194 -190
- data/test/matcher_test.rb +156 -126
- data/test/misc_test.rb +31 -30
- data/test/nanot.rb +307 -0
- data/test/node_test.rb +296 -252
- data/test/reporter_test.rb +249 -208
- data/test/runner_test.rb +101 -100
- data/test/util_test.rb +196 -193
- data/test/utilhelper_test.rb +35 -38
- data/test/visitor_test.rb +54 -50
- metadata +10 -10
- data/test/initialize.rb +0 -22
- data/test/tc.rb +0 -128
- /data/test/{run_all.rb → all.rb} +0 -0
    
        data/test/visitor_test.rb
    CHANGED
    
    | @@ -2,15 +2,16 @@ | |
| 2 2 | 
             
            # frozen_string_literal: true
         | 
| 3 3 |  | 
| 4 4 | 
             
            ###
         | 
| 5 | 
            -
            ### $Release: 1. | 
| 5 | 
            +
            ### $Release: 1.5.0 $
         | 
| 6 6 | 
             
            ### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
         | 
| 7 7 | 
             
            ### $License: MIT License $
         | 
| 8 8 | 
             
            ###
         | 
| 9 9 |  | 
| 10 | 
            -
            require_relative './ | 
| 10 | 
            +
            require_relative './init'
         | 
| 11 11 |  | 
| 12 12 |  | 
| 13 | 
            -
            class  | 
| 13 | 
            +
            class Visitor__Test
         | 
| 14 | 
            +
              extend NanoTest
         | 
| 14 15 |  | 
| 15 16 | 
             
              class DummyVisitor0 < Oktest::Visitor
         | 
| 16 17 | 
             
                def initialize
         | 
| @@ -37,7 +38,7 @@ class Visitor_TC < TC | |
| 37 38 | 
             
                end
         | 
| 38 39 | 
             
              end
         | 
| 39 40 |  | 
| 40 | 
            -
              def prepare()
         | 
| 41 | 
            +
              def self.prepare()
         | 
| 41 42 | 
             
                Oktest.scope do
         | 
| 42 43 | 
             
                  topic 'Example1' do
         | 
| 43 44 | 
             
                    topic 'sample1-1' do
         | 
| @@ -48,15 +49,15 @@ class Visitor_TC < TC | |
| 48 49 | 
             
                end
         | 
| 49 50 | 
             
              end
         | 
| 50 51 |  | 
| 51 | 
            -
              def  | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
              def teardown
         | 
| 52 | 
            +
              def self.test_subject(desc, &b)
         | 
| 53 | 
            +
                super
         | 
| 54 | 
            +
              ensure
         | 
| 55 55 | 
             
                Oktest::THE_GLOBAL_SCOPE.clear_children()
         | 
| 56 56 | 
             
              end
         | 
| 57 57 |  | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 58 | 
            +
             | 
| 59 | 
            +
              test_target 'Oktest::Visitor#visit_spec()' do
         | 
| 60 | 
            +
                test_subject "[!9f7i9] do something on spec." do
         | 
| 60 61 | 
             
                  expected = <<'END'
         | 
| 61 62 | 
             
            spec: sample {
         | 
| 62 63 | 
             
            }
         | 
| @@ -64,12 +65,12 @@ END | |
| 64 65 | 
             
                  sp = Oktest::SpecLeaf.new(nil, "sample")
         | 
| 65 66 | 
             
                  visitor = DummyVisitor0.new
         | 
| 66 67 | 
             
                  visitor.visit_spec(sp, 0, nil)
         | 
| 67 | 
            -
                   | 
| 68 | 
            +
                  test_eq? visitor.log.join(), expected
         | 
| 68 69 | 
             
                end
         | 
| 69 70 | 
             
              end
         | 
| 70 71 |  | 
| 71 | 
            -
               | 
| 72 | 
            -
                 | 
| 72 | 
            +
              test_target 'Oktest::Visitor#visit_topic()' do
         | 
| 73 | 
            +
                test_subject "[!mu3fn] visits each child of topic." do
         | 
| 73 74 | 
             
                  expected = <<'END'
         | 
| 74 75 | 
             
            topic: example {
         | 
| 75 76 | 
             
              spec: sample {
         | 
| @@ -80,12 +81,12 @@ END | |
| 80 81 | 
             
                  sp = Oktest::SpecLeaf.new(to, "sample")
         | 
| 81 82 | 
             
                  visitor = DummyVisitor0.new
         | 
| 82 83 | 
             
                  visitor.visit_topic(to, 0, nil)
         | 
| 83 | 
            -
                   | 
| 84 | 
            +
                  test_eq? visitor.log.join(), expected
         | 
| 84 85 | 
             
                end
         | 
| 85 86 | 
             
              end
         | 
| 86 87 |  | 
| 87 | 
            -
               | 
| 88 | 
            -
                 | 
| 88 | 
            +
              test_target 'Oktest::Visitor#visit_scope()' do
         | 
| 89 | 
            +
                test_subject "[!hebhz] visits each child scope." do
         | 
| 89 90 | 
             
                  expected = <<'END'
         | 
| 90 91 | 
             
            scope: file.rb {
         | 
| 91 92 | 
             
              topic: example {
         | 
| @@ -99,12 +100,12 @@ END | |
| 99 100 | 
             
                  sp = Oktest::SpecLeaf.new(sc, "sample")
         | 
| 100 101 | 
             
                  visitor = DummyVisitor0.new
         | 
| 101 102 | 
             
                  visitor.visit_scope(sc, 0, nil)
         | 
| 102 | 
            -
                   | 
| 103 | 
            +
                  test_eq? visitor.log.join(), expected
         | 
| 103 104 | 
             
                end
         | 
| 104 105 | 
             
              end
         | 
| 105 106 |  | 
| 106 | 
            -
               | 
| 107 | 
            -
                 | 
| 107 | 
            +
              test_target 'Oktest::Visitor#start()' do
         | 
| 108 | 
            +
                test_subject "[!8h8qf] start visiting tree." do
         | 
| 108 109 | 
             
                  expected = <<'END'
         | 
| 109 110 | 
             
            scope: test/visitor_test.rb {
         | 
| 110 111 | 
             
              topic: Example1 {
         | 
| @@ -120,14 +121,15 @@ END | |
| 120 121 | 
             
                  prepare()
         | 
| 121 122 | 
             
                  visitor = DummyVisitor0.new
         | 
| 122 123 | 
             
                  visitor.start()
         | 
| 123 | 
            -
                   | 
| 124 | 
            +
                  test_eq? visitor.log.join(), expected
         | 
| 124 125 | 
             
                end
         | 
| 125 126 | 
             
              end
         | 
| 126 127 |  | 
| 127 128 | 
             
            end
         | 
| 128 129 |  | 
| 129 130 |  | 
| 130 | 
            -
            class  | 
| 131 | 
            +
            class Traverser__Test
         | 
| 132 | 
            +
              extend NanoTest
         | 
| 131 133 |  | 
| 132 134 | 
             
              class MyTraverser < Oktest::Traverser
         | 
| 133 135 | 
             
                def on_scope(filename, tag, depth)
         | 
| @@ -159,7 +161,7 @@ class Traverser_TC < TC | |
| 159 161 | 
             
                end
         | 
| 160 162 | 
             
              end
         | 
| 161 163 |  | 
| 162 | 
            -
              def prepare()
         | 
| 164 | 
            +
              def self.prepare()
         | 
| 163 165 | 
             
                Oktest.scope do
         | 
| 164 166 | 
             
                  topic 'Example' do
         | 
| 165 167 | 
             
                    topic Integer, tag: 'cls' do
         | 
| @@ -180,13 +182,15 @@ class Traverser_TC < TC | |
| 180 182 | 
             
                end
         | 
| 181 183 | 
             
              end
         | 
| 182 184 |  | 
| 183 | 
            -
              def  | 
| 185 | 
            +
              def self.test_subject(desc, &b)
         | 
| 186 | 
            +
                super
         | 
| 187 | 
            +
              ensure
         | 
| 184 188 | 
             
                Oktest::THE_GLOBAL_SCOPE.clear_children()
         | 
| 185 189 | 
             
              end
         | 
| 186 190 |  | 
| 187 191 |  | 
| 188 | 
            -
               | 
| 189 | 
            -
                 | 
| 192 | 
            +
              test_target 'Oktest::Traverser#start()' do
         | 
| 193 | 
            +
                test_subject "[!5zonp] visits topics and specs and calls callbacks." do
         | 
| 190 194 | 
             
                  expected = <<'END'
         | 
| 191 195 | 
             
            * scope: test/visitor_test.rb
         | 
| 192 196 | 
             
              + topic: Example
         | 
| @@ -202,22 +206,22 @@ class Traverser_TC < TC | |
| 202 206 | 
             
                  - spec: 1/1 should be 1. (tag: err)
         | 
| 203 207 | 
             
            END
         | 
| 204 208 | 
             
                  prepare()
         | 
| 205 | 
            -
                  sout, serr =  | 
| 206 | 
            -
                   | 
| 207 | 
            -
                   | 
| 209 | 
            +
                  sout, serr = capture_output! { MyTraverser.new.start() }
         | 
| 210 | 
            +
                  test_eq? sout, expected
         | 
| 211 | 
            +
                  test_eq? serr, ""
         | 
| 208 212 | 
             
                end
         | 
| 209 | 
            -
                 | 
| 213 | 
            +
                test_subject "[!gkopz] doesn't change Oktest::THE_GLOBAL_SCOPE." do
         | 
| 210 214 | 
             
                  prepare()
         | 
| 211 215 | 
             
                  n = Oktest::THE_GLOBAL_SCOPE.each_child.to_a.length
         | 
| 212 | 
            -
                  sout, serr =  | 
| 216 | 
            +
                  sout, serr = capture_output! do
         | 
| 213 217 | 
             
                    MyTraverser.new.start()
         | 
| 214 218 | 
             
                  end
         | 
| 215 | 
            -
                   | 
| 219 | 
            +
                  test_eq? Oktest::THE_GLOBAL_SCOPE.each_child.to_a.length, n
         | 
| 216 220 | 
             
                end
         | 
| 217 221 | 
             
              end
         | 
| 218 222 |  | 
| 219 | 
            -
               | 
| 220 | 
            -
                 | 
| 223 | 
            +
              test_target 'Oktest::Traverser#visit_scope()' do
         | 
| 224 | 
            +
                test_subject "[!ledj3] calls on_scope() callback on scope." do
         | 
| 221 225 | 
             
                  expected = <<'END'
         | 
| 222 226 | 
             
            * scope: test/visitor_test.rb
         | 
| 223 227 | 
             
            * scope: test/visitor_test.rb
         | 
| @@ -226,14 +230,14 @@ END | |
| 226 230 | 
             
                  end
         | 
| 227 231 | 
             
                  Oktest.scope do
         | 
| 228 232 | 
             
                  end
         | 
| 229 | 
            -
                  sout, serr =  | 
| 230 | 
            -
                   | 
| 231 | 
            -
                   | 
| 233 | 
            +
                  sout, serr = capture_output! { MyTraverser.new.start() }
         | 
| 234 | 
            +
                  test_eq? sout, expected
         | 
| 235 | 
            +
                  test_eq? serr, ""
         | 
| 232 236 | 
             
                end
         | 
| 233 237 | 
             
              end
         | 
| 234 238 |  | 
| 235 | 
            -
               | 
| 236 | 
            -
                 | 
| 239 | 
            +
              test_target 'Oktest::Traverser#visit_topic()' do
         | 
| 240 | 
            +
                test_subject "[!x8r9w] calls on_topic() callback on topic." do
         | 
| 237 241 | 
             
                  expected = <<'END'
         | 
| 238 242 | 
             
            * scope: test/visitor_test.rb
         | 
| 239 243 | 
             
              + topic: Parent
         | 
| @@ -245,11 +249,11 @@ END | |
| 245 249 | 
             
                      end
         | 
| 246 250 | 
             
                    end
         | 
| 247 251 | 
             
                  end
         | 
| 248 | 
            -
                  sout, serr =  | 
| 249 | 
            -
                   | 
| 250 | 
            -
                   | 
| 252 | 
            +
                  sout, serr = capture_output! { MyTraverser.new.start() }
         | 
| 253 | 
            +
                  test_eq? sout, expected
         | 
| 254 | 
            +
                  test_eq? serr, ""
         | 
| 251 255 | 
             
                end
         | 
| 252 | 
            -
                 | 
| 256 | 
            +
                test_subject "[!qh0q3] calls on_case() callback on case_when or case_else." do
         | 
| 253 257 | 
             
                  expected = <<'END'
         | 
| 254 258 | 
             
            * scope: test/visitor_test.rb
         | 
| 255 259 | 
             
              + topic: Parent
         | 
| @@ -264,14 +268,14 @@ END | |
| 264 268 | 
             
                      end
         | 
| 265 269 | 
             
                    end
         | 
| 266 270 | 
             
                  end
         | 
| 267 | 
            -
                  sout, serr =  | 
| 268 | 
            -
                   | 
| 269 | 
            -
                   | 
| 271 | 
            +
                  sout, serr = capture_output! { MyTraverser.new.start() }
         | 
| 272 | 
            +
                  test_eq? sout, expected
         | 
| 273 | 
            +
                  test_eq? serr, ""
         | 
| 270 274 | 
             
                end
         | 
| 271 275 | 
             
              end
         | 
| 272 276 |  | 
| 273 | 
            -
               | 
| 274 | 
            -
                 | 
| 277 | 
            +
              test_target 'Oktest::Traverser#visit_spec()' do
         | 
| 278 | 
            +
                test_subject "[!41uyj] calls on_spec() callback." do
         | 
| 275 279 | 
             
                  expected = <<'END'
         | 
| 276 280 | 
             
            * scope: test/visitor_test.rb
         | 
| 277 281 | 
             
              + topic: Example
         | 
| @@ -284,9 +288,9 @@ END | |
| 284 288 | 
             
                      spec "sample #2" do ok {1-1} == 0 end
         | 
| 285 289 | 
             
                    end
         | 
| 286 290 | 
             
                  end
         | 
| 287 | 
            -
                  sout, serr =  | 
| 288 | 
            -
                   | 
| 289 | 
            -
                   | 
| 291 | 
            +
                  sout, serr = capture_output! { MyTraverser.new.start() }
         | 
| 292 | 
            +
                  test_eq? sout, expected
         | 
| 293 | 
            +
                  test_eq? serr, ""
         | 
| 290 294 | 
             
                end
         | 
| 291 295 | 
             
              end
         | 
| 292 296 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: oktest
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - kwatch
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2024-10- | 
| 11 | 
            +
            date: 2024-10-12 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: diff-lcs
         | 
| @@ -76,20 +76,20 @@ files: | |
| 76 76 | 
             
            - bin/oktest
         | 
| 77 77 | 
             
            - lib/oktest.rb
         | 
| 78 78 | 
             
            - oktest.gemspec
         | 
| 79 | 
            +
            - test/all.rb
         | 
| 79 80 | 
             
            - test/assertion_test.rb
         | 
| 80 81 | 
             
            - test/filter_test.rb
         | 
| 81 82 | 
             
            - test/fixture_test.rb
         | 
| 82 83 | 
             
            - test/generator_test.rb
         | 
| 83 84 | 
             
            - test/helper_test.rb
         | 
| 84 | 
            -
            - test/ | 
| 85 | 
            +
            - test/init.rb
         | 
| 85 86 | 
             
            - test/mainapp_test.rb
         | 
| 86 87 | 
             
            - test/matcher_test.rb
         | 
| 87 88 | 
             
            - test/misc_test.rb
         | 
| 89 | 
            +
            - test/nanot.rb
         | 
| 88 90 | 
             
            - test/node_test.rb
         | 
| 89 91 | 
             
            - test/reporter_test.rb
         | 
| 90 | 
            -
            - test/run_all.rb
         | 
| 91 92 | 
             
            - test/runner_test.rb
         | 
| 92 | 
            -
            - test/tc.rb
         | 
| 93 93 | 
             
            - test/util_test.rb
         | 
| 94 94 | 
             
            - test/utilhelper_test.rb
         | 
| 95 95 | 
             
            - test/visitor_test.rb
         | 
| @@ -97,7 +97,7 @@ homepage: https://github.com/kwatch/oktest/tree/ruby/ruby | |
| 97 97 | 
             
            licenses:
         | 
| 98 98 | 
             
            - MIT
         | 
| 99 99 | 
             
            metadata: {}
         | 
| 100 | 
            -
            post_install_message: | 
| 100 | 
            +
            post_install_message:
         | 
| 101 101 | 
             
            rdoc_options: []
         | 
| 102 102 | 
             
            require_paths:
         | 
| 103 103 | 
             
            - lib
         | 
| @@ -112,9 +112,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 112 112 | 
             
                - !ruby/object:Gem::Version
         | 
| 113 113 | 
             
                  version: '0'
         | 
| 114 114 | 
             
            requirements: []
         | 
| 115 | 
            -
            rubygems_version: 3. | 
| 116 | 
            -
            signing_key: | 
| 115 | 
            +
            rubygems_version: 3.4.19
         | 
| 116 | 
            +
            signing_key:
         | 
| 117 117 | 
             
            specification_version: 4
         | 
| 118 118 | 
             
            summary: a new style testing library
         | 
| 119 119 | 
             
            test_files:
         | 
| 120 | 
            -
            - test/ | 
| 120 | 
            +
            - test/all.rb
         | 
    
        data/test/initialize.rb
    DELETED
    
    | @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            -
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            ###
         | 
| 5 | 
            -
            ### $Release: 1.4.0 $
         | 
| 6 | 
            -
            ### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
         | 
| 7 | 
            -
            ### $License: MIT License $
         | 
| 8 | 
            -
            ###
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            File.class_eval do
         | 
| 11 | 
            -
              $LOAD_PATH << join(dirname(dirname(expand_path(__FILE__))), 'lib')
         | 
| 12 | 
            -
            end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            require_relative './tc'
         | 
| 15 | 
            -
            require 'oktest'
         | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
            # for Ruby 2.4 or older
         | 
| 19 | 
            -
            require 'set'
         | 
| 20 | 
            -
            unless Set.instance_methods(false).include?(:===)
         | 
| 21 | 
            -
              class Set; alias === include?; end
         | 
| 22 | 
            -
            end
         | 
    
        data/test/tc.rb
    DELETED
    
    | @@ -1,128 +0,0 @@ | |
| 1 | 
            -
            # -*- coding: utf-8 -*-
         | 
| 2 | 
            -
            # frozen_string_literal: true
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            ## micro test case class
         | 
| 5 | 
            -
            class TC
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              COUNTS = {:ok => 0, :fail => 0, :error => 0}
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              def self.report_result()
         | 
| 10 | 
            -
                ok, fail, error = COUNTS[:ok], COUNTS[:fail], COUNTS[:error]
         | 
| 11 | 
            -
                COUNTS.keys.each {|k| COUNTS[k] = 0 }
         | 
| 12 | 
            -
                red = proc {|s| "\033[0;31m#{s}\033[0m" }
         | 
| 13 | 
            -
                fail_s  = "fail: #{fail}"   ; fail_s  = red.call(fail_s)  if fail > 0
         | 
| 14 | 
            -
                error_s = "error: #{error}" ; error_s = red.call(error_s) if error > 0
         | 
| 15 | 
            -
                STDOUT.puts "## total: #{ok+fail+error} (ok: #{ok}, #{fail_s}, #{error_s})"
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              def self.describe(target, &b)
         | 
| 19 | 
            -
                prev, @curr_target = @curr_target, target
         | 
| 20 | 
            -
                yield
         | 
| 21 | 
            -
              ensure
         | 
| 22 | 
            -
                @curr_target = prev
         | 
| 23 | 
            -
              end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
              def self.curr_target()
         | 
| 26 | 
            -
                @curr_target
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              def self.it(spec, &b)
         | 
| 30 | 
            -
                t = @curr_target
         | 
| 31 | 
            -
                print "[#{self.name}#{t ? ' > ' : ''}#{t}] #{spec} ... " unless ENV['TC_QUIET']
         | 
| 32 | 
            -
                obj = self.new
         | 
| 33 | 
            -
                obj.setup()
         | 
| 34 | 
            -
                begin
         | 
| 35 | 
            -
                  obj.instance_eval(&b)
         | 
| 36 | 
            -
                rescue => exc
         | 
| 37 | 
            -
                  if exc.is_a?(AssertionFailed)
         | 
| 38 | 
            -
                    COUNTS[:fail]  += 1; puts "\e[31mFAILED!\e[0m" unless ENV['TC_QUIET']
         | 
| 39 | 
            -
                  else
         | 
| 40 | 
            -
                    COUNTS[:error] += 1; puts "\e[31mERROR!\e[0m"  unless ENV['TC_QUIET']
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
                  puts "  #{exc.class.name}: #{exc.message}"
         | 
| 43 | 
            -
                  exc.backtrace.each do |bt|
         | 
| 44 | 
            -
                    puts "    #{bt}" if bt.index(__FILE__) == nil
         | 
| 45 | 
            -
                  end
         | 
| 46 | 
            -
                else
         | 
| 47 | 
            -
                  COUNTS[:ok] += 1; puts "ok." unless ENV['TC_QUIET']
         | 
| 48 | 
            -
                ensure
         | 
| 49 | 
            -
                  obj.teardown()
         | 
| 50 | 
            -
                end
         | 
| 51 | 
            -
              end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
              def setup
         | 
| 54 | 
            -
              end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
              def teardown
         | 
| 57 | 
            -
              end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
              class AssertionFailed < StandardError
         | 
| 60 | 
            -
              end
         | 
| 61 | 
            -
             | 
| 62 | 
            -
              def assert(cond, msg="assertion failed")
         | 
| 63 | 
            -
                raise msg unless cond
         | 
| 64 | 
            -
              end
         | 
| 65 | 
            -
             | 
| 66 | 
            -
              def assert_eq(actual, expected)
         | 
| 67 | 
            -
                return if actual == expected
         | 
| 68 | 
            -
                multiline_p = actual.is_a?(String) && actual =~ /\n/ \
         | 
| 69 | 
            -
                            && expected.is_a?(String) && expected =~ /\n/
         | 
| 70 | 
            -
                errmsg = (multiline_p \
         | 
| 71 | 
            -
                          ? "$<actual> == $<expected> : failed.\n" +
         | 
| 72 | 
            -
                            "    $<actual>:   <<END\n#{actual}END\n" +
         | 
| 73 | 
            -
                            "    $<expected>: <<END\n#{expected}END"
         | 
| 74 | 
            -
                          : "$<actual> == $<expected> : failed.\n" +
         | 
| 75 | 
            -
                            "    $<actual>:   #{actual.inspect}\n" +
         | 
| 76 | 
            -
                            "    $<expected>: #{expected.inspect}")
         | 
| 77 | 
            -
                raise AssertionFailed, errmsg
         | 
| 78 | 
            -
              end
         | 
| 79 | 
            -
             | 
| 80 | 
            -
              def assert_exc(errcls, errmsg=nil, &b)
         | 
| 81 | 
            -
                begin
         | 
| 82 | 
            -
                  yield
         | 
| 83 | 
            -
                rescue NoMemoryError, SystemExit, SyntaxError, SignalException
         | 
| 84 | 
            -
                  raise
         | 
| 85 | 
            -
                rescue Exception => exc
         | 
| 86 | 
            -
                  exc.class == errcls  or
         | 
| 87 | 
            -
                    raise AssertionFailed, "#{errcls} should be raised but got #{exc.inspect}"
         | 
| 88 | 
            -
                  errmsg.nil? || errmsg === exc.message  or
         | 
| 89 | 
            -
                    raise AssertionFailed, ("invalid error message.\n"\
         | 
| 90 | 
            -
                                            "  $<actual>:   #{exc.message.inspect}\n"\
         | 
| 91 | 
            -
                                            "  $<expected>: #{errmsg.inspect}")
         | 
| 92 | 
            -
                  return exc
         | 
| 93 | 
            -
                else
         | 
| 94 | 
            -
                  raise AssertionFailed, "#{errcls.name} should be raised but not."
         | 
| 95 | 
            -
                end
         | 
| 96 | 
            -
              end
         | 
| 97 | 
            -
             | 
| 98 | 
            -
              def capture(input="", tty: true, &b)
         | 
| 99 | 
            -
                require 'stringio' unless defined?(StringIO)
         | 
| 100 | 
            -
                stdin, stdout, stderr = $stdin, $stdout, $stderr
         | 
| 101 | 
            -
                $stdin  = sin  = StringIO.new(input)
         | 
| 102 | 
            -
                $stdout = sout = StringIO.new
         | 
| 103 | 
            -
                $stderr = serr = StringIO.new
         | 
| 104 | 
            -
                def sin.tty? ; true; end if tty
         | 
| 105 | 
            -
                def sout.tty?; true; end if tty
         | 
| 106 | 
            -
                def sout.tty?; true; end if tty
         | 
| 107 | 
            -
                yield
         | 
| 108 | 
            -
                return sout.string, serr.string
         | 
| 109 | 
            -
              ensure
         | 
| 110 | 
            -
                $stdin, $stdout, $stderr = stdin, stdout, stderr
         | 
| 111 | 
            -
              end
         | 
| 112 | 
            -
             | 
| 113 | 
            -
              def plain2colored(str)
         | 
| 114 | 
            -
                str = str.gsub(/<R>(.*?)<\/R>/) { Oktest::Color.red($1) }
         | 
| 115 | 
            -
                str = str.gsub(/<G>(.*?)<\/G>/) { Oktest::Color.green($1) }
         | 
| 116 | 
            -
                str = str.gsub(/<B>(.*?)<\/B>/) { Oktest::Color.blue($1) }
         | 
| 117 | 
            -
                str = str.gsub(/<C>(.*?)<\/C>/) { Oktest::Color.cyan($1) }
         | 
| 118 | 
            -
                str = str.gsub(/<M>(.*?)<\/M>/) { Oktest::Color.magenta($1) }
         | 
| 119 | 
            -
                str = str.gsub(/<Y>(.*?)<\/Y>/) { Oktest::Color.yellow($1) }
         | 
| 120 | 
            -
                str = str.gsub(/<b>(.*?)<\/b>/) { Oktest::Color.bold($1) }
         | 
| 121 | 
            -
                str = str.gsub(/<E>(.*?)<\/E>/) { Oktest::Color.red_b($1) }
         | 
| 122 | 
            -
                return str
         | 
| 123 | 
            -
              end
         | 
| 124 | 
            -
             | 
| 125 | 
            -
            end
         | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
            at_exit { TC.report_result() }
         | 
    
        /data/test/{run_all.rb → all.rb}
    RENAMED
    
    | 
            File without changes
         |