oktest 1.1.1 → 1.2.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 +197 -22
 - data/Rakefile.rb +5 -2
 - data/benchmark/Rakefile.rb +4 -0
 - data/lib/oktest.rb +170 -58
 - data/oktest.gemspec +3 -3
 - data/test/assertion_test.rb +1 -1
 - data/test/filter_test.rb +1 -1
 - data/test/fixture_test.rb +14 -1
 - data/test/generator_test.rb +1 -1
 - data/test/helper_test.rb +3 -3
 - data/test/initialize.rb +1 -1
 - data/test/mainapp_test.rb +59 -43
 - data/test/matcher_test.rb +1 -1
 - data/test/misc_test.rb +5 -5
 - data/test/node_test.rb +27 -4
 - data/test/reporter_test.rb +30 -31
 - data/test/runner_test.rb +8 -17
 - data/test/tc.rb +12 -0
 - data/test/util_test.rb +71 -1
 - data/test/utilhelper_test.rb +84 -0
 - data/test/visitor_test.rb +1 -1
 - metadata +4 -3
 
    
        data/test/mainapp_test.rb
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ###
         
     | 
| 
       2 
     | 
    
         
            -
            ### $Release: 1. 
     | 
| 
      
 2 
     | 
    
         
            +
            ### $Release: 1.2.0 $
         
     | 
| 
       3 
3 
     | 
    
         
             
            ### $Copyright: copyright(c) 2011-2021 kuwata-lab.com all rights reserved $
         
     | 
| 
       4 
4 
     | 
    
         
             
            ### $License: MIT License $
         
     | 
| 
       5 
5 
     | 
    
         
             
            ###
         
     | 
| 
         @@ -73,15 +73,6 @@ end 
     | 
|
| 
       73 
73 
     | 
    
         | 
| 
       74 
74 
     | 
    
         
             
            END
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
              def plain2colored(str)
         
     | 
| 
       77 
     | 
    
         
            -
                str = str.gsub(/<R>(.*?)<\/R>/) { Oktest::Color.red($1) }
         
     | 
| 
       78 
     | 
    
         
            -
                str = str.gsub(/<G>(.*?)<\/G>/) { Oktest::Color.green($1) }
         
     | 
| 
       79 
     | 
    
         
            -
                str = str.gsub(/<B>(.*?)<\/B>/) { Oktest::Color.blue($1) }
         
     | 
| 
       80 
     | 
    
         
            -
                str = str.gsub(/<Y>(.*?)<\/Y>/) { Oktest::Color.yellow($1) }
         
     | 
| 
       81 
     | 
    
         
            -
                str = str.gsub(/<b>(.*?)<\/b>/) { Oktest::Color.bold($1) }
         
     | 
| 
       82 
     | 
    
         
            -
                return str
         
     | 
| 
       83 
     | 
    
         
            -
              end
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
76 
     | 
    
         
             
              def edit_actual(output)
         
     | 
| 
       86 
77 
     | 
    
         
             
                bkup = output.dup
         
     | 
| 
       87 
78 
     | 
    
         
             
                output = output.gsub(/^.*\r/, '')
         
     | 
| 
         @@ -165,7 +156,7 @@ END 
     | 
|
| 
       165 
156 
     | 
    
         | 
| 
       166 
157 
     | 
    
         
             
                it "[!18qpe] runs test scripts." do
         
     | 
| 
       167 
158 
     | 
    
         
             
                  expected = <<'END'
         
     | 
| 
       168 
     | 
    
         
            -
            ## total:8 (< 
     | 
| 
      
 159 
     | 
    
         
            +
            ## total:8 (<C>pass:4</C>, <R>fail:1</R>, <E>error:1</E>, <Y>skip:1</Y>, <Y>todo:1</Y>) in 0.000s
         
     | 
| 
       169 
160 
     | 
    
         
             
            END
         
     | 
| 
       170 
161 
     | 
    
         
             
                  ret, sout, serr = run(@testfile)
         
     | 
| 
       171 
162 
     | 
    
         
             
                  assert_eq ret, 2
         
     | 
| 
         @@ -180,7 +171,7 @@ END 
     | 
|
| 
       180 
171 
     | 
    
         | 
| 
       181 
172 
     | 
    
         
             
                it "[!hiu5b] finds test scripts in directory and runs them." do
         
     | 
| 
       182 
173 
     | 
    
         
             
                  expected = <<'END'
         
     | 
| 
       183 
     | 
    
         
            -
            ## total:8 (< 
     | 
| 
      
 174 
     | 
    
         
            +
            ## total:8 (<C>pass:4</C>, <R>fail:1</R>, <E>error:1</E>, <Y>skip:1</Y>, <Y>todo:1</Y>) in 0.000s
         
     | 
| 
       184 
175 
     | 
    
         
             
            END
         
     | 
| 
       185 
176 
     | 
    
         
             
                  dir = "_tmpdir.d"
         
     | 
| 
       186 
177 
     | 
    
         
             
                  dirs = [dir, "#{dir}/d1", "#{dir}/d1/d2"]
         
     | 
| 
         @@ -196,6 +187,32 @@ END 
     | 
|
| 
       196 
187 
     | 
    
         
             
                  end
         
     | 
| 
       197 
188 
     | 
    
         
             
                end
         
     | 
| 
       198 
189 
     | 
    
         | 
| 
      
 190 
     | 
    
         
            +
                it "[!v5xie] parses $OKTEST_RB environment variable." do
         
     | 
| 
      
 191 
     | 
    
         
            +
                  ret, sout, serr = run(@testfile, tty: false)
         
     | 
| 
      
 192 
     | 
    
         
            +
                  expected = plain2colored(<<'END')
         
     | 
| 
      
 193 
     | 
    
         
            +
            ## _tmp_test.rb
         
     | 
| 
      
 194 
     | 
    
         
            +
            * <b>Parent</b>
         
     | 
| 
      
 195 
     | 
    
         
            +
              * <b>Child1</b>
         
     | 
| 
      
 196 
     | 
    
         
            +
                - [<C>pass</C>] 1+1 should be 2
         
     | 
| 
      
 197 
     | 
    
         
            +
                - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
      
 198 
     | 
    
         
            +
            END
         
     | 
| 
      
 199 
     | 
    
         
            +
                  assert sout.start_with?(expected), "expected verbose-style, but not."
         
     | 
| 
      
 200 
     | 
    
         
            +
                  #
         
     | 
| 
      
 201 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 202 
     | 
    
         
            +
                    ENV['OKTEST_RB'] = "-ss"
         
     | 
| 
      
 203 
     | 
    
         
            +
                    ret, sout, serr = run(@testfile, tty: false)
         
     | 
| 
      
 204 
     | 
    
         
            +
                    expected = plain2colored(<<'END')
         
     | 
| 
      
 205 
     | 
    
         
            +
            ## _tmp_test.rb
         
     | 
| 
      
 206 
     | 
    
         
            +
            * <b>Parent</b>: <C>.</C><C>.</C>
         
     | 
| 
      
 207 
     | 
    
         
            +
              * <b>Child1</b>: <C>.</C><C>.</C>
         
     | 
| 
      
 208 
     | 
    
         
            +
              * <b>Child2</b>: <R>f</R><E>E</E>
         
     | 
| 
      
 209 
     | 
    
         
            +
            END
         
     | 
| 
      
 210 
     | 
    
         
            +
                    assert sout.start_with?(expected), "expected simple-style, but not."
         
     | 
| 
      
 211 
     | 
    
         
            +
                  ensure
         
     | 
| 
      
 212 
     | 
    
         
            +
                    ENV.delete('OKTEST_RB')
         
     | 
| 
      
 213 
     | 
    
         
            +
                  end
         
     | 
| 
      
 214 
     | 
    
         
            +
                end
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
       199 
216 
     | 
    
         
             
                #HELP_MESSAGE = Oktest::MainApp::HELP_MESSAGE % {command: File.basename($0)}
         
     | 
| 
       200 
217 
     | 
    
         
             
                HELP_MESSAGE = <<"END"
         
     | 
| 
       201 
218 
     | 
    
         
             
            Usage: #{File.basename($0)} [<options>] [<file-or-directory>...]
         
     | 
| 
         @@ -204,9 +221,8 @@ Usage: #{File.basename($0)} [<options>] [<file-or-directory>...] 
     | 
|
| 
       204 
221 
     | 
    
         
             
              -s <REPORT-STYLE>      : verbose/simple/compact/plain/quiet, or v/s/c/p/q
         
     | 
| 
       205 
222 
     | 
    
         
             
              -F <PATTERN>           : filter topic or spec with pattern (see below)
         
     | 
| 
       206 
223 
     | 
    
         
             
                  --color[={on|off}] : enable/disable output coloring forcedly
         
     | 
| 
       207 
     | 
    
         
            -
              - 
     | 
| 
      
 224 
     | 
    
         
            +
              -S, --skeleton         : print test code skeleton
         
     | 
| 
       208 
225 
     | 
    
         
             
              -G, --generate         : generate test code skeleton from ruby file
         
     | 
| 
       209 
     | 
    
         
            -
                  --faster           : make 'ok{}' faster (for very large project)
         
     | 
| 
       210 
226 
     | 
    
         | 
| 
       211 
227 
     | 
    
         
             
            Filter examples:
         
     | 
| 
       212 
228 
     | 
    
         
             
              $ oktest -F topic=Hello            # filter by topic
         
     | 
| 
         @@ -241,7 +257,7 @@ END 
     | 
|
| 
       241 
257 
     | 
    
         
             
                end
         
     | 
| 
       242 
258 
     | 
    
         | 
| 
       243 
259 
     | 
    
         
             
                it "[!qqizl] '--version' option prints version number." do
         
     | 
| 
       244 
     | 
    
         
            -
                  expected = '$Release: 1. 
     | 
| 
      
 260 
     | 
    
         
            +
                  expected = '$Release: 1.2.0 $'.split()[1] + "\n"
         
     | 
| 
       245 
261 
     | 
    
         
             
                  #
         
     | 
| 
       246 
262 
     | 
    
         
             
                  ret, sout, serr = run("--version")
         
     | 
| 
       247 
263 
     | 
    
         
             
                  assert_eq ret, 0
         
     | 
| 
         @@ -254,11 +270,11 @@ END 
     | 
|
| 
       254 
270 
     | 
    
         
             
            ## _tmp_test.rb
         
     | 
| 
       255 
271 
     | 
    
         
             
            * <b>Parent</b>
         
     | 
| 
       256 
272 
     | 
    
         
             
              * <b>Child1</b>
         
     | 
| 
       257 
     | 
    
         
            -
                - [< 
     | 
| 
       258 
     | 
    
         
            -
                - [< 
     | 
| 
      
 273 
     | 
    
         
            +
                - [<C>pass</C>] 1+1 should be 2
         
     | 
| 
      
 274 
     | 
    
         
            +
                - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
       259 
275 
     | 
    
         
             
              * <b>Child2</b>
         
     | 
| 
       260 
276 
     | 
    
         
             
                - [<R>Fail</R>] 1*1 should be 1
         
     | 
| 
       261 
     | 
    
         
            -
                - [< 
     | 
| 
      
 277 
     | 
    
         
            +
                - [<E>ERROR</E>] 1/1 should be 1
         
     | 
| 
       262 
278 
     | 
    
         
             
            ----------------------------------------------------------------------
         
     | 
| 
       263 
279 
     | 
    
         
             
            END
         
     | 
| 
       264 
280 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -276,9 +292,9 @@ END 
     | 
|
| 
       276 
292 
     | 
    
         
             
                it "[!zfdr5] '-s simple' or '-ss' option prints test results in simple mode." do
         
     | 
| 
       277 
293 
     | 
    
         
             
                  expected = <<END
         
     | 
| 
       278 
294 
     | 
    
         
             
            ## _tmp_test.rb
         
     | 
| 
       279 
     | 
    
         
            -
            * <b>Parent</b>: < 
     | 
| 
       280 
     | 
    
         
            -
              * <b>Child1</b>: < 
     | 
| 
       281 
     | 
    
         
            -
              * <b>Child2</b>: <R>f</R>< 
     | 
| 
      
 295 
     | 
    
         
            +
            * <b>Parent</b>: <C>.</C><C>.</C>
         
     | 
| 
      
 296 
     | 
    
         
            +
              * <b>Child1</b>: <C>.</C><C>.</C>
         
     | 
| 
      
 297 
     | 
    
         
            +
              * <b>Child2</b>: <R>f</R><E>E</E>
         
     | 
| 
       282 
298 
     | 
    
         
             
            ----------------------------------------------------------------------
         
     | 
| 
       283 
299 
     | 
    
         
             
            END
         
     | 
| 
       284 
300 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -295,7 +311,7 @@ END 
     | 
|
| 
       295 
311 
     | 
    
         | 
| 
       296 
312 
     | 
    
         
             
                it "[!ef5v7] '-s compact' or '-sc' option prints test results in compact mode." do
         
     | 
| 
       297 
313 
     | 
    
         
             
                  expected = <<END
         
     | 
| 
       298 
     | 
    
         
            -
            #{@testfile}: < 
     | 
| 
      
 314 
     | 
    
         
            +
            #{@testfile}: <C>.</C><C>.</C><R>f</R><E>E</E><Y>s</Y><Y>t</Y><C>.</C><C>.</C>
         
     | 
| 
       299 
315 
     | 
    
         
             
            ----------------------------------------------------------------------
         
     | 
| 
       300 
316 
     | 
    
         
             
            END
         
     | 
| 
       301 
317 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -312,7 +328,7 @@ END 
     | 
|
| 
       312 
328 
     | 
    
         | 
| 
       313 
329 
     | 
    
         
             
                it "[!244te] '-s plain' or '-sp' option prints test results in plain mode." do
         
     | 
| 
       314 
330 
     | 
    
         
             
                  expected = <<END
         
     | 
| 
       315 
     | 
    
         
            -
            < 
     | 
| 
      
 331 
     | 
    
         
            +
            <C>.</C><C>.</C><R>f</R><E>E</E><Y>s</Y><Y>t</Y><C>.</C><C>.</C>
         
     | 
| 
       316 
332 
     | 
    
         
             
            ----------------------------------------------------------------------
         
     | 
| 
       317 
333 
     | 
    
         
             
            END
         
     | 
| 
       318 
334 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -329,7 +345,7 @@ END 
     | 
|
| 
       329 
345 
     | 
    
         | 
| 
       330 
346 
     | 
    
         
             
                it "[!ai61w] '-s quiet' or '-sq' option prints test results in quiet mode." do
         
     | 
| 
       331 
347 
     | 
    
         
             
                  expected = <<END
         
     | 
| 
       332 
     | 
    
         
            -
            <R>f</R>< 
     | 
| 
      
 348 
     | 
    
         
            +
            <R>f</R><E>E</E><Y>s</Y><Y>t</Y>
         
     | 
| 
       333 
349 
     | 
    
         
             
            ----------------------------------------------------------------------
         
     | 
| 
       334 
350 
     | 
    
         
             
            END
         
     | 
| 
       335 
351 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -349,9 +365,9 @@ END 
     | 
|
| 
       349 
365 
     | 
    
         
             
            ## _tmp_test.rb
         
     | 
| 
       350 
366 
     | 
    
         
             
            * <b>Parent</b>
         
     | 
| 
       351 
367 
     | 
    
         
             
              * <b>Child1</b>
         
     | 
| 
       352 
     | 
    
         
            -
                - [< 
     | 
| 
       353 
     | 
    
         
            -
                - [< 
     | 
| 
       354 
     | 
    
         
            -
            ## total:2 (< 
     | 
| 
      
 368 
     | 
    
         
            +
                - [<C>pass</C>] 1+1 should be 2
         
     | 
| 
      
 369 
     | 
    
         
            +
                - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
      
 370 
     | 
    
         
            +
            ## total:2 (<C>pass:2</C>, fail:0, error:0, skip:0, todo:0) in 0.000s
         
     | 
| 
       355 
371 
     | 
    
         
             
            END
         
     | 
| 
       356 
372 
     | 
    
         
             
                  #
         
     | 
| 
       357 
373 
     | 
    
         
             
                  ret, sout, serr = run("-F", "topic=Child1", @testfile)
         
     | 
| 
         @@ -365,8 +381,8 @@ END 
     | 
|
| 
       365 
381 
     | 
    
         
             
            ## _tmp_test.rb
         
     | 
| 
       366 
382 
     | 
    
         
             
            * <b>Parent</b>
         
     | 
| 
       367 
383 
     | 
    
         
             
              * <b>Child1</b>
         
     | 
| 
       368 
     | 
    
         
            -
                - [< 
     | 
| 
       369 
     | 
    
         
            -
            ## total:1 (< 
     | 
| 
      
 384 
     | 
    
         
            +
                - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
      
 385 
     | 
    
         
            +
            ## total:1 (<C>pass:1</C>, fail:0, error:0, skip:0, todo:0) in 0.000s
         
     | 
| 
       370 
386 
     | 
    
         
             
            END
         
     | 
| 
       371 
387 
     | 
    
         
             
                  #
         
     | 
| 
       372 
388 
     | 
    
         
             
                  ret, sout, serr = run("-F", "spec=*1-1*", @testfile)
         
     | 
| 
         @@ -380,13 +396,13 @@ END 
     | 
|
| 
       380 
396 
     | 
    
         
             
            ## _tmp_test.rb
         
     | 
| 
       381 
397 
     | 
    
         
             
            * <b>Parent</b>
         
     | 
| 
       382 
398 
     | 
    
         
             
              * <b>Child1</b>
         
     | 
| 
       383 
     | 
    
         
            -
                - [< 
     | 
| 
      
 399 
     | 
    
         
            +
                - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
       384 
400 
     | 
    
         
             
              * <b>Child3</b>
         
     | 
| 
       385 
401 
     | 
    
         
             
                - [<Y>Skip</Y>] skip example <Y>(reason: a certain condition)</Y>
         
     | 
| 
       386 
402 
     | 
    
         
             
                - [<Y>TODO</Y>] todo example
         
     | 
| 
       387 
403 
     | 
    
         
             
              - <b>When x is negative</b>
         
     | 
| 
       388 
     | 
    
         
            -
                - [< 
     | 
| 
       389 
     | 
    
         
            -
            ## total:4 (< 
     | 
| 
      
 404 
     | 
    
         
            +
                - [<C>pass</C>] [!6hs1j] x*x is positive.
         
     | 
| 
      
 405 
     | 
    
         
            +
            ## total:4 (<C>pass:2</C>, fail:0, error:0, <Y>skip:1</Y>, <Y>todo:1</Y>) in 0.000s
         
     | 
| 
       390 
406 
     | 
    
         
             
            END
         
     | 
| 
       391 
407 
     | 
    
         
             
                  #
         
     | 
| 
       392 
408 
     | 
    
         
             
                  ret, sout, serr = run("-F", "tag={new,exp}", @testfile)
         
     | 
| 
         @@ -400,8 +416,8 @@ END 
     | 
|
| 
       400 
416 
     | 
    
         
             
            ## _tmp_test.rb
         
     | 
| 
       401 
417 
     | 
    
         
             
            * <b>Parent</b>
         
     | 
| 
       402 
418 
     | 
    
         
             
              - <b>When x is negative</b>
         
     | 
| 
       403 
     | 
    
         
            -
                - [< 
     | 
| 
       404 
     | 
    
         
            -
            ## total:1 (< 
     | 
| 
      
 419 
     | 
    
         
            +
                - [<C>pass</C>] [!6hs1j] x*x is positive.
         
     | 
| 
      
 420 
     | 
    
         
            +
            ## total:1 (<C>pass:1</C>, fail:0, error:0, skip:0, todo:0) in 0.000s
         
     | 
| 
       405 
421 
     | 
    
         
             
            END
         
     | 
| 
       406 
422 
     | 
    
         
             
                  #
         
     | 
| 
       407 
423 
     | 
    
         
             
                  ret, sout, serr = run("-F", "sid=6hs1j", @testfile)
         
     | 
| 
         @@ -415,11 +431,11 @@ END 
     | 
|
| 
       415 
431 
     | 
    
         
             
            ## _tmp_test.rb
         
     | 
| 
       416 
432 
     | 
    
         
             
            * <b>Parent</b>
         
     | 
| 
       417 
433 
     | 
    
         
             
              * <b>Child1</b>
         
     | 
| 
       418 
     | 
    
         
            -
                - [< 
     | 
| 
       419 
     | 
    
         
            -
                - [< 
     | 
| 
      
 434 
     | 
    
         
            +
                - [<C>pass</C>] 1+1 should be 2
         
     | 
| 
      
 435 
     | 
    
         
            +
                - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
       420 
436 
     | 
    
         
             
              - <b>Else</b>
         
     | 
| 
       421 
     | 
    
         
            -
                - [< 
     | 
| 
       422 
     | 
    
         
            -
            ## total:3 (< 
     | 
| 
      
 437 
     | 
    
         
            +
                - [<C>pass</C>] [!pwiq7] x*x is also positive.
         
     | 
| 
      
 438 
     | 
    
         
            +
            ## total:3 (<C>pass:3</C>, fail:0, error:0, skip:0, todo:0) in 0.000s
         
     | 
| 
       423 
439 
     | 
    
         
             
            END
         
     | 
| 
       424 
440 
     | 
    
         
             
                  #
         
     | 
| 
       425 
441 
     | 
    
         
             
                  ret, sout, serr = run("-F", "tag!={fail,err,exp}", @testfile)
         
     | 
| 
         @@ -450,7 +466,7 @@ END 
     | 
|
| 
       450 
466 
     | 
    
         
             
                    [true, false].each do |tty|
         
     | 
| 
       451 
467 
     | 
    
         
             
                      Oktest::Config.color_enabled = bool
         
     | 
| 
       452 
468 
     | 
    
         
             
                      _, sout, serr = run("--color=on", @testfile, tty: tty)
         
     | 
| 
       453 
     | 
    
         
            -
                      assert sout.include?(edit_expected("[< 
     | 
| 
      
 469 
     | 
    
         
            +
                      assert sout.include?(edit_expected("[<C>pass</C>]")), "should contain blue string"
         
     | 
| 
       454 
470 
     | 
    
         
             
                      assert sout.include?(edit_expected("[<R>Fail</R>]")), "should contain red string"
         
     | 
| 
       455 
471 
     | 
    
         
             
                      assert sout.include?(edit_expected("[<Y>Skip</Y>]")), "should contain yellos string"
         
     | 
| 
       456 
472 
     | 
    
         
             
                      assert_eq serr, ""
         
     | 
| 
         @@ -463,7 +479,7 @@ END 
     | 
|
| 
       463 
479 
     | 
    
         
             
                    [true, false].each do |tty|
         
     | 
| 
       464 
480 
     | 
    
         
             
                      Oktest::Config.color_enabled = bool
         
     | 
| 
       465 
481 
     | 
    
         
             
                      _, sout, serr = run("--color", @testfile, tty: tty)
         
     | 
| 
       466 
     | 
    
         
            -
                      assert sout.include?(edit_expected("[< 
     | 
| 
      
 482 
     | 
    
         
            +
                      assert sout.include?(edit_expected("[<C>pass</C>]")), "should contain blue string"
         
     | 
| 
       467 
483 
     | 
    
         
             
                      assert sout.include?(edit_expected("[<R>Fail</R>]")), "should contain red string"
         
     | 
| 
       468 
484 
     | 
    
         
             
                      assert sout.include?(edit_expected("[<Y>Skip</Y>]")), "should contain yellos string"
         
     | 
| 
       469 
485 
     | 
    
         
             
                      assert_eq serr, ""
         
     | 
| 
         @@ -476,7 +492,7 @@ END 
     | 
|
| 
       476 
492 
     | 
    
         
             
                    [true, false].each do |tty|
         
     | 
| 
       477 
493 
     | 
    
         
             
                      Oktest::Config.color_enabled = bool
         
     | 
| 
       478 
494 
     | 
    
         
             
                      _, sout, serr = run("--color=off", @testfile, tty: tty)
         
     | 
| 
       479 
     | 
    
         
            -
                      assert !sout.include?(edit_expected("[< 
     | 
| 
      
 495 
     | 
    
         
            +
                      assert !sout.include?(edit_expected("[<C>pass</C>]")), "should not contain blue string"
         
     | 
| 
       480 
496 
     | 
    
         
             
                      assert !sout.include?(edit_expected("[<R>Fail</R>]")), "should not contain red string"
         
     | 
| 
       481 
497 
     | 
    
         
             
                      assert !sout.include?(edit_expected("[<Y>Skip</Y>]")), "should not contain yellos string"
         
     | 
| 
       482 
498 
     | 
    
         
             
                      assert_eq serr, ""
         
     | 
| 
         @@ -490,8 +506,8 @@ END 
     | 
|
| 
       490 
506 
     | 
    
         
             
                  end
         
     | 
| 
       491 
507 
     | 
    
         
             
                end
         
     | 
| 
       492 
508 
     | 
    
         | 
| 
       493 
     | 
    
         
            -
                it "[!dk8eg] '- 
     | 
| 
       494 
     | 
    
         
            -
                  ret, sout, serr = run("- 
     | 
| 
      
 509 
     | 
    
         
            +
                it "[!dk8eg] '-S' or '--skeleton' option prints test code skeleton." do
         
     | 
| 
      
 510 
     | 
    
         
            +
                  ret, sout, serr = run("-S")
         
     | 
| 
       495 
511 
     | 
    
         
             
                  assert_eq ret, 0
         
     | 
| 
       496 
512 
     | 
    
         
             
                  assert_eq sout, Oktest::MainApp::SKELETON
         
     | 
| 
       497 
513 
     | 
    
         
             
                  assert_eq serr, ""
         
     | 
    
        data/test/matcher_test.rb
    CHANGED
    
    
    
        data/test/misc_test.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- coding: utf-8 -*-
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ###
         
     | 
| 
       4 
     | 
    
         
            -
            ### $Release: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
            ### $Release: 1.2.0 $
         
     | 
| 
       5 
5 
     | 
    
         
             
            ### $Copyright: copyright(c) 2011-2021 kuwata-lab.com all rights reserved $
         
     | 
| 
       6 
6 
     | 
    
         
             
            ### $License: MIT License $
         
     | 
| 
       7 
7 
     | 
    
         
             
            ###
         
     | 
| 
         @@ -69,11 +69,11 @@ class Color_TC < TC 
     | 
|
| 
       69 
69 
     | 
    
         | 
| 
       70 
70 
     | 
    
         
             
              describe '.status()' do
         
     | 
| 
       71 
71 
     | 
    
         
             
                it "[!yev5y] returns string containing color escape sequence." do
         
     | 
| 
       72 
     | 
    
         
            -
                  assert_eq Oktest::Color.status(:PASS , "Pass" ), "\e[ 
     | 
| 
       73 
     | 
    
         
            -
                  assert_eq Oktest::Color.status(:FAIL , "Fail" ), "\e[ 
     | 
| 
      
 72 
     | 
    
         
            +
                  assert_eq Oktest::Color.status(:PASS , "Pass" ), "\e[0;36mPass\e[0m"
         
     | 
| 
      
 73 
     | 
    
         
            +
                  assert_eq Oktest::Color.status(:FAIL , "Fail" ), "\e[0;31mFail\e[0m"
         
     | 
| 
       74 
74 
     | 
    
         
             
                  assert_eq Oktest::Color.status(:ERROR, "Error"), "\e[1;31mError\e[0m"
         
     | 
| 
       75 
     | 
    
         
            -
                  assert_eq Oktest::Color.status(:SKIP , "Skip" ), "\e[ 
     | 
| 
       76 
     | 
    
         
            -
                  assert_eq Oktest::Color.status(:TODO , "Todo" ), "\e[ 
     | 
| 
      
 75 
     | 
    
         
            +
                  assert_eq Oktest::Color.status(:SKIP , "Skip" ), "\e[0;33mSkip\e[0m"
         
     | 
| 
      
 76 
     | 
    
         
            +
                  assert_eq Oktest::Color.status(:TODO , "Todo" ), "\e[0;33mTodo\e[0m"
         
     | 
| 
       77 
77 
     | 
    
         
             
                end
         
     | 
| 
       78 
78 
     | 
    
         
             
              end
         
     | 
| 
       79 
79 
     | 
    
         | 
    
        data/test/node_test.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- coding: utf-8 -*-
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ###
         
     | 
| 
       4 
     | 
    
         
            -
            ### $Release: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
            ### $Release: 1.2.0 $
         
     | 
| 
       5 
5 
     | 
    
         
             
            ### $Copyright: copyright(c) 2011-2021 kuwata-lab.com all rights reserved $
         
     | 
| 
       6 
6 
     | 
    
         
             
            ### $License: MIT License $
         
     | 
| 
       7 
7 
     | 
    
         
             
            ###
         
     | 
| 
         @@ -315,13 +315,25 @@ class ScopeFunctions_TC < TC 
     | 
|
| 
       315 
315 
     | 
    
         
             
                Oktest::THE_GLOBAL_SCOPE.clear_children()
         
     | 
| 
       316 
316 
     | 
    
         
             
              end
         
     | 
| 
       317 
317 
     | 
    
         | 
| 
      
 318 
     | 
    
         
            +
              class DummyLocation # < Thread::Backtrace::Location
         
     | 
| 
      
 319 
     | 
    
         
            +
                def initialize(string)
         
     | 
| 
      
 320 
     | 
    
         
            +
                  string =~ /([^:]+):(\d+)/
         
     | 
| 
      
 321 
     | 
    
         
            +
                  @path = $1
         
     | 
| 
      
 322 
     | 
    
         
            +
                  @lineno = $2
         
     | 
| 
      
 323 
     | 
    
         
            +
                end
         
     | 
| 
      
 324 
     | 
    
         
            +
                attr_reader :path, :lineno
         
     | 
| 
      
 325 
     | 
    
         
            +
              end
         
     | 
| 
      
 326 
     | 
    
         
            +
             
     | 
| 
       318 
327 
     | 
    
         
             
              def with_dummy_location(location)
         
     | 
| 
       319 
328 
     | 
    
         
             
                $_dummy_location = location
         
     | 
| 
       320 
329 
     | 
    
         
             
                Oktest.module_eval do
         
     | 
| 
       321 
330 
     | 
    
         
             
                  class << self
         
     | 
| 
       322 
     | 
    
         
            -
                    def caller(n)
         
     | 
| 
      
 331 
     | 
    
         
            +
                    def caller(n, len=nil)
         
     | 
| 
       323 
332 
     | 
    
         
             
                      return [$_dummy_location]
         
     | 
| 
       324 
333 
     | 
    
         
             
                    end
         
     | 
| 
      
 334 
     | 
    
         
            +
                    def caller_locations(n, len=nil)
         
     | 
| 
      
 335 
     | 
    
         
            +
                      return [DummyLocation.new($_dummy_location)]
         
     | 
| 
      
 336 
     | 
    
         
            +
                    end
         
     | 
| 
       325 
337 
     | 
    
         
             
                  end
         
     | 
| 
       326 
338 
     | 
    
         
             
                end
         
     | 
| 
       327 
339 
     | 
    
         
             
                yield
         
     | 
| 
         @@ -329,6 +341,7 @@ class ScopeFunctions_TC < TC 
     | 
|
| 
       329 
341 
     | 
    
         
             
                Oktest.module_eval do
         
     | 
| 
       330 
342 
     | 
    
         
             
                  class << self
         
     | 
| 
       331 
343 
     | 
    
         
             
                    remove_method :caller
         
     | 
| 
      
 344 
     | 
    
         
            +
                    remove_method :caller_locations
         
     | 
| 
       332 
345 
     | 
    
         
             
                  end
         
     | 
| 
       333 
346 
     | 
    
         
             
                end
         
     | 
| 
       334 
347 
     | 
    
         
             
                $_dummy_location = nil
         
     | 
| 
         @@ -533,6 +546,16 @@ class Context_TC < TC 
     | 
|
| 
       533 
546 
     | 
    
         
             
                  assert_eq sp.tag, "exp"
         
     | 
| 
       534 
547 
     | 
    
         
             
                  assert_eq sp._prefix, "-"
         
     | 
| 
       535 
548 
     | 
    
         
             
                end
         
     | 
| 
      
 549 
     | 
    
         
            +
                it "[!4vkbl] error when `fixture:` keyword arg is not a Hash object." do
         
     | 
| 
      
 550 
     | 
    
         
            +
                  new_node_with() do
         
     | 
| 
      
 551 
     | 
    
         
            +
                    spec "example #2", fixture: {x: 1} do end   # not raise anything
         
     | 
| 
      
 552 
     | 
    
         
            +
                  end
         
     | 
| 
      
 553 
     | 
    
         
            +
                  assert_exc(ArgumentError, 'spec(fixture: "x: 1"): fixture argument should be a Hash object, but got String object.') do
         
     | 
| 
      
 554 
     | 
    
         
            +
                    new_node_with() do
         
     | 
| 
      
 555 
     | 
    
         
            +
                      spec "example #2", fixture: "x: 1" do end
         
     | 
| 
      
 556 
     | 
    
         
            +
                    end
         
     | 
| 
      
 557 
     | 
    
         
            +
                  end
         
     | 
| 
      
 558 
     | 
    
         
            +
                end
         
     | 
| 
       536 
559 
     | 
    
         
             
                it "[!ala78] provides raising TodoException block if block not given." do
         
     | 
| 
       537 
560 
     | 
    
         
             
                  node = new_node_with() do
         
     | 
| 
       538 
561 
     | 
    
         
             
                    spec "example #3"
         
     | 
| 
         @@ -552,7 +575,7 @@ class Context_TC < TC 
     | 
|
| 
       552 
575 
     | 
    
         
             
                  sp1, sp2 = node.each_child.to_a
         
     | 
| 
       553 
576 
     | 
    
         
             
                  assert_eq sp1.location, nil
         
     | 
| 
       554 
577 
     | 
    
         
             
                  assert sp2.location != nil, "not nil"
         
     | 
| 
       555 
     | 
    
         
            -
                  assert sp2.location.start_with?("#{__FILE__}:#{lineno}:in")
         
     | 
| 
      
 578 
     | 
    
         
            +
                  assert sp2.location.to_s.start_with?("#{__FILE__}:#{lineno}:in")
         
     | 
| 
       556 
579 
     | 
    
         
             
                end
         
     | 
| 
       557 
580 
     | 
    
         
             
              end
         
     | 
| 
       558 
581 
     | 
    
         | 
| 
         @@ -568,7 +591,7 @@ class Context_TC < TC 
     | 
|
| 
       568 
591 
     | 
    
         
             
                  assert    node.fixtures.key?(:alice), "key not registerd"
         
     | 
| 
       569 
592 
     | 
    
         
             
                  assert    node.fixtures[:alice][0].is_a?(Proc), "block expected"
         
     | 
| 
       570 
593 
     | 
    
         
             
                  assert_eq node.fixtures[:alice][1], nil
         
     | 
| 
       571 
     | 
    
         
            -
                  assert    node.fixtures[:alice][2].start_with?("#{__FILE__}:#{lineno}:in ")
         
     | 
| 
      
 594 
     | 
    
         
            +
                  assert    node.fixtures[:alice][2].to_s.start_with?("#{__FILE__}:#{lineno}:in ")
         
     | 
| 
       572 
595 
     | 
    
         
             
                end
         
     | 
| 
       573 
596 
     | 
    
         
             
                it "[!y3ks3] retrieves block parameter names." do
         
     | 
| 
       574 
597 
     | 
    
         
             
                  node = new_node_with() do
         
     | 
    
        data/test/reporter_test.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- coding: utf-8 -*-
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ###
         
     | 
| 
       4 
     | 
    
         
            -
            ### $Release: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
            ### $Release: 1.2.0 $
         
     | 
| 
       5 
5 
     | 
    
         
             
            ### $Copyright: copyright(c) 2011-2021 kuwata-lab.com all rights reserved $
         
     | 
| 
       6 
6 
     | 
    
         
             
            ### $License: MIT License $
         
     | 
| 
       7 
7 
     | 
    
         
             
            ###
         
     | 
| 
         @@ -11,15 +11,6 @@ require_relative './initialize' 
     | 
|
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
            module ReporterTestHelper
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
              def plain2colored(str)
         
     | 
| 
       15 
     | 
    
         
            -
                str = str.gsub(/<R>(.*?)<\/R>/) { Oktest::Color.red($1) }
         
     | 
| 
       16 
     | 
    
         
            -
                str = str.gsub(/<G>(.*?)<\/G>/) { Oktest::Color.green($1) }
         
     | 
| 
       17 
     | 
    
         
            -
                str = str.gsub(/<B>(.*?)<\/B>/) { Oktest::Color.blue($1) }
         
     | 
| 
       18 
     | 
    
         
            -
                str = str.gsub(/<Y>(.*?)<\/Y>/) { Oktest::Color.yellow($1) }
         
     | 
| 
       19 
     | 
    
         
            -
                str = str.gsub(/<b>(.*?)<\/b>/) { Oktest::Color.bold($1) }
         
     | 
| 
       20 
     | 
    
         
            -
                return str
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
14 
     | 
    
         
             
              def edit_actual(output)
         
     | 
| 
       24 
15 
     | 
    
         
             
                bkup = output.dup
         
     | 
| 
       25 
16 
     | 
    
         
             
                output = output.gsub(/^.*\r/, '')
         
     | 
| 
         @@ -145,7 +136,11 @@ class BaseReporter_TC < TC 
     | 
|
| 
       145 
136 
     | 
    
         
             
                  sout, serr = capture do
         
     | 
| 
       146 
137 
     | 
    
         
             
                    r.__send__(:print_exc_message, exc, :FAIL)
         
     | 
| 
       147 
138 
     | 
    
         
             
                  end
         
     | 
| 
       148 
     | 
    
         
            -
                  assert_eq sout,  
     | 
| 
      
 139 
     | 
    
         
            +
                  assert_eq sout, plain2colored(<<END)
         
     | 
| 
      
 140 
     | 
    
         
            +
            <R>something failed</R>
         
     | 
| 
      
 141 
     | 
    
         
            +
              expect: foo
         
     | 
| 
      
 142 
     | 
    
         
            +
              actual: bar
         
     | 
| 
      
 143 
     | 
    
         
            +
            END
         
     | 
| 
       149 
144 
     | 
    
         
             
                  assert_eq serr, ""
         
     | 
| 
       150 
145 
     | 
    
         
             
                end
         
     | 
| 
       151 
146 
     | 
    
         
             
                it "[!pd41p] prints detail of exception." do
         
     | 
| 
         @@ -155,7 +150,11 @@ class BaseReporter_TC < TC 
     | 
|
| 
       155 
150 
     | 
    
         
             
                  sout, serr = capture do
         
     | 
| 
       156 
151 
     | 
    
         
             
                    r.__send__(:print_exc_message, exc, :ERROR)
         
     | 
| 
       157 
152 
     | 
    
         
             
                  end
         
     | 
| 
       158 
     | 
    
         
            -
                  assert_eq sout,  
     | 
| 
      
 153 
     | 
    
         
            +
                  assert_eq sout, plain2colored(<<END)
         
     | 
| 
      
 154 
     | 
    
         
            +
            <R>Oktest::AssertionFailed: something failed</R>
         
     | 
| 
      
 155 
     | 
    
         
            +
              expect: foo
         
     | 
| 
      
 156 
     | 
    
         
            +
              actual: bar
         
     | 
| 
      
 157 
     | 
    
         
            +
            END
         
     | 
| 
       159 
158 
     | 
    
         
             
                  assert_eq serr, ""
         
     | 
| 
       160 
159 
     | 
    
         
             
                end
         
     | 
| 
       161 
160 
     | 
    
         
             
              end
         
     | 
| 
         @@ -246,7 +245,7 @@ END 
     | 
|
| 
       246 
245 
     | 
    
         
             
                  end
         
     | 
| 
       247 
246 
     | 
    
         
             
                  #
         
     | 
| 
       248 
247 
     | 
    
         
             
                  expected = <<END
         
     | 
| 
       249 
     | 
    
         
            -
            [< 
     | 
| 
      
 248 
     | 
    
         
            +
            [<E>ERROR</E>] <b>Example > Array > When some condition > 1+1 shoould be 2.</b>
         
     | 
| 
       250 
249 
     | 
    
         
             
                #{__FILE__}:#{lineno}:in `/'
         
     | 
| 
       251 
250 
     | 
    
         
             
                    1/0
         
     | 
| 
       252 
251 
     | 
    
         
             
            END
         
     | 
| 
         @@ -283,7 +282,7 @@ END 
     | 
|
| 
       283 
282 
     | 
    
         
             
                  r = new_reporter_with_exceptions(exc)
         
     | 
| 
       284 
283 
     | 
    
         
             
                  sep = "----------------------------------------------------------------------\n"
         
     | 
| 
       285 
284 
     | 
    
         
             
                  expected1 = "[<R>Fail</R>] <b>Example > Array > When some condition > 1+1 shoould be 2.</b>\n"
         
     | 
| 
       286 
     | 
    
         
            -
                  expected2 = "[< 
     | 
| 
      
 285 
     | 
    
         
            +
                  expected2 = "[<E>ERROR</E>] <b>Example > Array > When some condition > 1+1 shoould be 2.</b>\n"
         
     | 
| 
       287 
286 
     | 
    
         
             
                  #
         
     | 
| 
       288 
287 
     | 
    
         
             
                  sout, serr = capture { r.__send__(:print_exceptions) }
         
     | 
| 
       289 
288 
     | 
    
         
             
                  assert sout.start_with?(sep + plain2colored(expected1)), "not matched"
         
     | 
| 
         @@ -349,7 +348,7 @@ END 
     | 
|
| 
       349 
348 
     | 
    
         
             
                end
         
     | 
| 
       350 
349 
     | 
    
         | 
| 
       351 
350 
     | 
    
         
             
                it "[!gx0n2] builds footer line." do
         
     | 
| 
       352 
     | 
    
         
            -
                  expected = "## total:15 (< 
     | 
| 
      
 351 
     | 
    
         
            +
                  expected = "## total:15 (<C>pass:5</C>, <R>fail:4</R>, <E>error:3</E>, <Y>skip:2</Y>, <Y>todo:1</Y>) in 0.500s"
         
     | 
| 
       353 
352 
     | 
    
         
             
                  assert new_footer(), plain2colored(expected)
         
     | 
| 
       354 
353 
     | 
    
         
             
                end
         
     | 
| 
       355 
354 
     | 
    
         
             
              end
         
     | 
| 
         @@ -434,49 +433,49 @@ END 
     | 
|
| 
       434 
433 
     | 
    
         
             
                _test.tmp:18:in `block (4 levels) in <top (required)>'
         
     | 
| 
       435 
434 
     | 
    
         
             
                    ok {1*1} == 2
         
     | 
| 
       436 
435 
     | 
    
         
             
            %%%
         
     | 
| 
       437 
     | 
    
         
            -
             
     | 
| 
      
 436 
     | 
    
         
            +
            <R>$<actual> == $<expected>: failed.</R>
         
     | 
| 
       438 
437 
     | 
    
         
             
                $<actual>:   1
         
     | 
| 
       439 
438 
     | 
    
         
             
                $<expected>: 2
         
     | 
| 
       440 
439 
     | 
    
         
             
            ----------------------------------------------------------------------
         
     | 
| 
       441 
     | 
    
         
            -
            [< 
     | 
| 
      
 440 
     | 
    
         
            +
            [<E>ERROR</E>] <b>Parent > Child2 > 1/1 should be 1</b>
         
     | 
| 
       442 
441 
     | 
    
         
             
                _test.tmp:21:in `/'
         
     | 
| 
       443 
442 
     | 
    
         
             
                    ok {1/0} == 1
         
     | 
| 
       444 
443 
     | 
    
         
             
            %%%
         
     | 
| 
       445 
     | 
    
         
            -
            ZeroDivisionError: divided by 0
         
     | 
| 
      
 444 
     | 
    
         
            +
            <R>ZeroDivisionError: divided by 0</R>
         
     | 
| 
       446 
445 
     | 
    
         
             
            ----------------------------------------------------------------------
         
     | 
| 
       447 
446 
     | 
    
         
             
            END
         
     | 
| 
       448 
447 
     | 
    
         | 
| 
       449 
448 
     | 
    
         
             
              FOOTER = <<'END'
         
     | 
| 
       450 
     | 
    
         
            -
            ## total:9 (< 
     | 
| 
      
 449 
     | 
    
         
            +
            ## total:9 (<C>pass:5</C>, <R>fail:1</R>, <E>error:1</E>, <Y>skip:1</Y>, <Y>todo:1</Y>) in 0.000s
         
     | 
| 
       451 
450 
     | 
    
         
             
            END
         
     | 
| 
       452 
451 
     | 
    
         | 
| 
       453 
452 
     | 
    
         
             
              VERBOSE_PART = <<'END'
         
     | 
| 
       454 
453 
     | 
    
         
             
            ## _test.tmp
         
     | 
| 
       455 
454 
     | 
    
         
             
            * <b>Parent</b>
         
     | 
| 
       456 
455 
     | 
    
         
             
              * <b>Child1</b>
         
     | 
| 
       457 
     | 
    
         
            -
                - [< 
     | 
| 
       458 
     | 
    
         
            -
                - [< 
     | 
| 
      
 456 
     | 
    
         
            +
                - [<C>pass</C>] 1+1 should be 2
         
     | 
| 
      
 457 
     | 
    
         
            +
                - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
       459 
458 
     | 
    
         
             
              * <b>Child2</b>
         
     | 
| 
       460 
459 
     | 
    
         
             
                - [<R>Fail</R>] 1*1 should be 1
         
     | 
| 
       461 
     | 
    
         
            -
                - [< 
     | 
| 
      
 460 
     | 
    
         
            +
                - [<E>ERROR</E>] 1/1 should be 1
         
     | 
| 
       462 
461 
     | 
    
         
             
            END
         
     | 
| 
       463 
462 
     | 
    
         
             
              VERBOSE_PART2 = <<'END'
         
     | 
| 
       464 
463 
     | 
    
         
             
              * <b>Child3</b>
         
     | 
| 
       465 
464 
     | 
    
         
             
                - [<Y>Skip</Y>] skip example <Y>(reason: a certain condition)</Y>
         
     | 
| 
       466 
465 
     | 
    
         
             
                - [<Y>TODO</Y>] todo example
         
     | 
| 
       467 
466 
     | 
    
         
             
              - <b>When x is negative</b>
         
     | 
| 
       468 
     | 
    
         
            -
                - [< 
     | 
| 
      
 467 
     | 
    
         
            +
                - [<C>pass</C>] x*x is positive.
         
     | 
| 
       469 
468 
     | 
    
         
             
              - <b>Else</b>
         
     | 
| 
       470 
     | 
    
         
            -
                - [< 
     | 
| 
       471 
     | 
    
         
            -
              - [< 
     | 
| 
      
 469 
     | 
    
         
            +
                - [<C>pass</C>] x*x is also positive.
         
     | 
| 
      
 470 
     | 
    
         
            +
              - [<C>pass</C>] last spec
         
     | 
| 
       472 
471 
     | 
    
         
             
            END
         
     | 
| 
       473 
472 
     | 
    
         
             
              VERBOSE_OUTPUT = VERBOSE_PART + ERROR_PART + VERBOSE_PART2 + FOOTER
         
     | 
| 
       474 
473 
     | 
    
         | 
| 
       475 
474 
     | 
    
         
             
              SIMPLE_PART = <<'END'
         
     | 
| 
       476 
475 
     | 
    
         
             
            ## _test.tmp
         
     | 
| 
       477 
     | 
    
         
            -
            * <b>Parent</b>: < 
     | 
| 
       478 
     | 
    
         
            -
              * <b>Child1</b>: < 
     | 
| 
       479 
     | 
    
         
            -
              * <b>Child2</b>: <R>f</R>< 
     | 
| 
      
 476 
     | 
    
         
            +
            * <b>Parent</b>: <C>.</C><C>.</C><C>.</C>
         
     | 
| 
      
 477 
     | 
    
         
            +
              * <b>Child1</b>: <C>.</C><C>.</C>
         
     | 
| 
      
 478 
     | 
    
         
            +
              * <b>Child2</b>: <R>f</R><E>E</E>
         
     | 
| 
       480 
479 
     | 
    
         
             
            END
         
     | 
| 
       481 
480 
     | 
    
         
             
              SIMPLE_PART2 = <<'END'
         
     | 
| 
       482 
481 
     | 
    
         
             
              * <b>Child3</b>: <Y>s</Y><Y>t</Y>
         
     | 
| 
         @@ -484,17 +483,17 @@ END 
     | 
|
| 
       484 
483 
     | 
    
         
             
              SIMPLE_OUTPUT = SIMPLE_PART + ERROR_PART + SIMPLE_PART2 + FOOTER
         
     | 
| 
       485 
484 
     | 
    
         | 
| 
       486 
485 
     | 
    
         
             
              COMPACT_PART = <<'END'
         
     | 
| 
       487 
     | 
    
         
            -
            _test.tmp: < 
     | 
| 
      
 486 
     | 
    
         
            +
            _test.tmp: <C>.</C><C>.</C><R>f</R><E>E</E><Y>s</Y><Y>t</Y><C>.</C><C>.</C><C>.</C>
         
     | 
| 
       488 
487 
     | 
    
         
             
            END
         
     | 
| 
       489 
488 
     | 
    
         
             
              COMPACT_OUTPUT = COMPACT_PART + ERROR_PART + FOOTER
         
     | 
| 
       490 
489 
     | 
    
         | 
| 
       491 
490 
     | 
    
         
             
              PLAIN_PART = <<'END'
         
     | 
| 
       492 
     | 
    
         
            -
            < 
     | 
| 
      
 491 
     | 
    
         
            +
            <C>.</C><C>.</C><R>f</R><E>E</E><Y>s</Y><Y>t</Y><C>.</C><C>.</C><C>.</C>
         
     | 
| 
       493 
492 
     | 
    
         
             
            END
         
     | 
| 
       494 
493 
     | 
    
         
             
              PLAIN_OUTPUT = PLAIN_PART + ERROR_PART + FOOTER
         
     | 
| 
       495 
494 
     | 
    
         | 
| 
       496 
495 
     | 
    
         
             
              QUIET_PART = <<'END'
         
     | 
| 
       497 
     | 
    
         
            -
            <R>f</R>< 
     | 
| 
      
 496 
     | 
    
         
            +
            <R>f</R><E>E</E><Y>s</Y><Y>t</Y>
         
     | 
| 
       498 
497 
     | 
    
         
             
            END
         
     | 
| 
       499 
498 
     | 
    
         
             
              QUIET_OUTPUT = QUIET_PART + ERROR_PART + FOOTER
         
     | 
| 
       500 
499 
     | 
    
         | 
    
        data/test/runner_test.rb
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- coding: utf-8 -*-
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            ###
         
     | 
| 
       4 
     | 
    
         
            -
            ### $Release: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
            ### $Release: 1.2.0 $
         
     | 
| 
       5 
5 
     | 
    
         
             
            ### $Copyright: copyright(c) 2011-2021 kuwata-lab.com all rights reserved $
         
     | 
| 
       6 
6 
     | 
    
         
             
            ### $License: MIT License $
         
     | 
| 
       7 
7 
     | 
    
         
             
            ###
         
     | 
| 
         @@ -521,15 +521,6 @@ class RunnerFunctions_TC < TC 
     | 
|
| 
       521 
521 
     | 
    
         
             
                Oktest::THE_GLOBAL_SCOPE.clear_children()
         
     | 
| 
       522 
522 
     | 
    
         
             
              end
         
     | 
| 
       523 
523 
     | 
    
         | 
| 
       524 
     | 
    
         
            -
              def plain2colored(str)
         
     | 
| 
       525 
     | 
    
         
            -
                str = str.gsub(/<R>(.*?)<\/R>/) { Oktest::Color.red($1) }
         
     | 
| 
       526 
     | 
    
         
            -
                str = str.gsub(/<G>(.*?)<\/G>/) { Oktest::Color.green($1) }
         
     | 
| 
       527 
     | 
    
         
            -
                str = str.gsub(/<B>(.*?)<\/B>/) { Oktest::Color.blue($1) }
         
     | 
| 
       528 
     | 
    
         
            -
                str = str.gsub(/<Y>(.*?)<\/Y>/) { Oktest::Color.yellow($1) }
         
     | 
| 
       529 
     | 
    
         
            -
                str = str.gsub(/<b>(.*?)<\/b>/) { Oktest::Color.bold($1) }
         
     | 
| 
       530 
     | 
    
         
            -
                return str
         
     | 
| 
       531 
     | 
    
         
            -
              end
         
     | 
| 
       532 
     | 
    
         
            -
             
     | 
| 
       533 
524 
     | 
    
         
             
              def edit_actual(output)
         
     | 
| 
       534 
525 
     | 
    
         
             
                bkup = output.dup
         
     | 
| 
       535 
526 
     | 
    
         
             
                output = output.gsub(/^.*\r/, '')
         
     | 
| 
         @@ -561,17 +552,17 @@ class RunnerFunctions_TC < TC 
     | 
|
| 
       561 
552 
     | 
    
         
             
              VERBOSE_OUTPUT = <<'END'
         
     | 
| 
       562 
553 
     | 
    
         
             
            ## test/runner_test.rb
         
     | 
| 
       563 
554 
     | 
    
         
             
            * <b>Example</b>
         
     | 
| 
       564 
     | 
    
         
            -
              - [< 
     | 
| 
       565 
     | 
    
         
            -
              - [< 
     | 
| 
       566 
     | 
    
         
            -
            ## total:2 (< 
     | 
| 
      
 555 
     | 
    
         
            +
              - [<C>pass</C>] 1+1 should be 2
         
     | 
| 
      
 556 
     | 
    
         
            +
              - [<C>pass</C>] 1-1 should be 0
         
     | 
| 
      
 557 
     | 
    
         
            +
            ## total:2 (<C>pass:2</C>, fail:0, error:0, skip:0, todo:0) in 0.000s
         
     | 
| 
       567 
558 
     | 
    
         
             
            END
         
     | 
| 
       568 
559 
     | 
    
         
             
              COMPACT_OUTPUT = <<'END'
         
     | 
| 
       569 
     | 
    
         
            -
            test/runner_test.rb: < 
     | 
| 
       570 
     | 
    
         
            -
            ## total:2 (< 
     | 
| 
      
 560 
     | 
    
         
            +
            test/runner_test.rb: <C>.</C><C>.</C>
         
     | 
| 
      
 561 
     | 
    
         
            +
            ## total:2 (<C>pass:2</C>, fail:0, error:0, skip:0, todo:0) in 0.000s
         
     | 
| 
       571 
562 
     | 
    
         
             
            END
         
     | 
| 
       572 
563 
     | 
    
         
             
              PLAIN_OUTPUT = <<'END'
         
     | 
| 
       573 
     | 
    
         
            -
            < 
     | 
| 
       574 
     | 
    
         
            -
            ## total:2 (< 
     | 
| 
      
 564 
     | 
    
         
            +
            <C>.</C><C>.</C>
         
     | 
| 
      
 565 
     | 
    
         
            +
            ## total:2 (<C>pass:2</C>, fail:0, error:0, skip:0, todo:0) in 0.000s
         
     | 
| 
       575 
566 
     | 
    
         
             
            END
         
     | 
| 
       576 
567 
     | 
    
         | 
| 
       577 
568 
     | 
    
         | 
    
        data/test/tc.rb
    CHANGED
    
    | 
         @@ -109,6 +109,18 @@ class TC 
     | 
|
| 
       109 
109 
     | 
    
         
             
                $stdin, $stdout, $stderr = stdin, stdout, stderr
         
     | 
| 
       110 
110 
     | 
    
         
             
              end
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
      
 112 
     | 
    
         
            +
              def plain2colored(str)
         
     | 
| 
      
 113 
     | 
    
         
            +
                str = str.gsub(/<R>(.*?)<\/R>/) { Oktest::Color.red($1) }
         
     | 
| 
      
 114 
     | 
    
         
            +
                str = str.gsub(/<G>(.*?)<\/G>/) { Oktest::Color.green($1) }
         
     | 
| 
      
 115 
     | 
    
         
            +
                str = str.gsub(/<B>(.*?)<\/B>/) { Oktest::Color.blue($1) }
         
     | 
| 
      
 116 
     | 
    
         
            +
                str = str.gsub(/<C>(.*?)<\/C>/) { Oktest::Color.cyan($1) }
         
     | 
| 
      
 117 
     | 
    
         
            +
                str = str.gsub(/<M>(.*?)<\/M>/) { Oktest::Color.magenta($1) }
         
     | 
| 
      
 118 
     | 
    
         
            +
                str = str.gsub(/<Y>(.*?)<\/Y>/) { Oktest::Color.yellow($1) }
         
     | 
| 
      
 119 
     | 
    
         
            +
                str = str.gsub(/<b>(.*?)<\/b>/) { Oktest::Color.bold($1) }
         
     | 
| 
      
 120 
     | 
    
         
            +
                str = str.gsub(/<E>(.*?)<\/E>/) { Oktest::Color.red_b($1) }
         
     | 
| 
      
 121 
     | 
    
         
            +
                return str
         
     | 
| 
      
 122 
     | 
    
         
            +
              end
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
       112 
124 
     | 
    
         
             
            end
         
     | 
| 
       113 
125 
     | 
    
         | 
| 
       114 
126 
     | 
    
         |