minitap 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/.ruby +8 -4
  2. data/.yardopts +8 -0
  3. data/HISTORY.rdoc +14 -2
  4. data/lib/minitap.rb +45 -10
  5. data/spec/applique/ae.rb +1 -0
  6. metadata +28 -15
data/.ruby CHANGED
@@ -26,6 +26,10 @@ requirements:
26
26
  groups:
27
27
  - test
28
28
  development: true
29
+ - name: ae
30
+ groups:
31
+ - test
32
+ development: true
29
33
  dependencies: []
30
34
  conflicts: []
31
35
  repositories:
@@ -44,9 +48,9 @@ load_path:
44
48
  revision: 0
45
49
  summary: TAP-Y/J reporters for MiniTest
46
50
  title: MiniTap
47
- version: 0.3.2
51
+ version: 0.3.3
48
52
  name: minitap
49
- description: MiniTap provides a custom MiniTest reporter that outs TAP-Y or TAP-J
50
- formatted output.
53
+ description: MiniTap provides a MiniTest TAP-Y/J report format suitable for use with
54
+ TAPOUT.
51
55
  organization: rubyworks
52
- date: '2011-11-08'
56
+ date: '2012-02-01'
data/.yardopts ADDED
@@ -0,0 +1,8 @@
1
+ --title "MiniTAP"
2
+ --readme README.rdoc
3
+ --protected
4
+ --private
5
+ lib
6
+ -
7
+ [A-Z]*.*
8
+
data/HISTORY.rdoc CHANGED
@@ -1,10 +1,22 @@
1
1
  = RELEASE HISTORY
2
2
 
3
+ == 0.3.3 | 2012-02-01
4
+
5
+ This release adds support for the new 'stdout' and 'stderr' fields.
6
+ As tests are run $stdout and $stderr are captured and included in
7
+ the TAP-Y/J stream. This prevents the structured streams from being
8
+ corrupted and provide some nice report options too.
9
+
10
+ Changes:
11
+
12
+ * Add support for stdout and stderr capturing.
13
+
14
+
3
15
  == 0.3.2 | 2011-11-08
4
16
 
5
- This release add support for new TAP-Y/J class field, and removes
17
+ This release add support for the new TAP-Y/J 'class' field, and removes
6
18
  the class name from the message field. It also fixes a bug that
7
- arose with certain versions of Ruby's YAML.load_documents implmentation.
19
+ arose with certain versions of Ruby's YAML.load_documents implementation.
8
20
 
9
21
  Changes:
10
22
 
data/lib/minitap.rb CHANGED
@@ -24,7 +24,7 @@ module MiniTest
24
24
  class MiniTap < ::MiniTest::Unit
25
25
 
26
26
  # TAP-Y/J Revision
27
- REVISION = 3
27
+ REVISION = 4
28
28
 
29
29
  # Backtrace patterns to be omitted.
30
30
  IGNORE_CALLERS = ::RUBY_IGNORE_CALLERS
@@ -117,7 +117,7 @@ module MiniTest
117
117
  send("tapout_#{callback}", *args)
118
118
  end
119
119
 
120
- private
120
+ private
121
121
 
122
122
  #
123
123
  def filtered_tests(suite, type)
@@ -224,6 +224,11 @@ module MiniTest
224
224
  # code: Foo#*
225
225
  'time' => Time.now - self.suite_start_time
226
226
  }
227
+
228
+ stdout, stderr = test_runner.stdout, test_runner.stderr
229
+ doc['stdout'] = stdout unless stdout.empty?
230
+ doc['stderr'] = stderr unless stderr.empty?
231
+
227
232
  return doc
228
233
  end
229
234
 
@@ -302,6 +307,11 @@ module MiniTest
302
307
  },
303
308
  'time' => Time.now - self.suite_start_time
304
309
  }
310
+
311
+ stdout, stderr = test_runner.stdout, test_runner.stderr
312
+ doc['stdout'] = stdout unless stdout.empty?
313
+ doc['stderr'] = stderr unless stderr.empty?
314
+
305
315
  return doc
306
316
  end
307
317
 
@@ -341,6 +351,11 @@ module MiniTest
341
351
  },
342
352
  'time' => Time.now - self.suite_start_time
343
353
  }
354
+
355
+ stdout, stderr = test_runner.stdout, test_runner.stderr
356
+ doc['stdout'] = stdout unless stdout.empty?
357
+ doc['stderr'] = stderr unless stderr.empty?
358
+
344
359
  return doc
345
360
  end
346
361
 
@@ -405,7 +420,7 @@ module MiniTest
405
420
  end
406
421
  caller =~ /(.+?):(\d+(?=:|\z))/ or return ""
407
422
  source_file, source_line = $1, $2.to_i
408
- returnf source_file, source_line
423
+ return source_file, source_line
409
424
  end
410
425
 
411
426
  # Get location of exception.
@@ -437,7 +452,8 @@ module MiniTest
437
452
  # @see https://github.com/seattlerb/minitest MiniTest
438
453
  class TestRunner
439
454
  attr_reader :suite, :test, :assertions, :result, :exception
440
-
455
+ attr_reader :stdout, :stderr
456
+
441
457
  def initialize(suite, test)
442
458
  @suite = suite
443
459
  @test = test
@@ -446,10 +462,14 @@ module MiniTest
446
462
 
447
463
  def run
448
464
  suite_instance = suite.new(test)
449
- @result, @exception = fix_result(suite_instance.run(self))
465
+ test_result = nil
466
+ @stdout, @stderr = capture_io do
467
+ test_result = suite_instance.run(self)
468
+ end
469
+ @result, @exception = fix_result(test_result)
450
470
  @assertions = suite_instance._assertions
451
471
  end
452
-
472
+
453
473
  def puke(suite, test, exception)
454
474
  case exception
455
475
  when MiniTest::Skip then [:skip, exception]
@@ -458,17 +478,32 @@ module MiniTest
458
478
  end
459
479
  end
460
480
 
461
- private
481
+ private
462
482
 
483
+ #
463
484
  def fix_result(result)
464
485
  result == '.' ? [:pass, nil] : result
465
486
  end
487
+
488
+ #
489
+ def capture_io
490
+ ostdout, ostderr = $stdout, $stderr
491
+ cstdout, cstderr = StringIO.new, StringIO.new
492
+ $stdout, $stderr = cstdout, cstderr
493
+
494
+ yield
495
+
496
+ return cstdout.string.chomp("\n"), cstderr.string.chomp("\n")
497
+ ensure
498
+ $stdout = ostdout
499
+ $stderr = ostderr
500
+ end
466
501
  end
467
502
 
468
503
  #
469
504
  class TapY < MiniTap
470
505
  def initialize
471
- require 'yaml'
506
+ require 'yaml' unless respond_to?(:to_yaml)
472
507
  super
473
508
  end
474
509
  def tapout_before_suites(suites, type)
@@ -497,8 +532,8 @@ module MiniTest
497
532
 
498
533
  #
499
534
  class TapJ < MiniTap
500
- def initializebacktrace
501
- require 'json'
535
+ def initialize
536
+ require 'json' unless respond_to?(:to_json)
502
537
  super
503
538
  end
504
539
  def tapout_before_suites(suites, type)
@@ -0,0 +1 @@
1
+ require 'ae'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-08 00:00:00.000000000 Z
12
+ date: 2012-02-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: tapout
16
- requirement: &17978940 !ruby/object:Gem::Requirement
16
+ requirement: &27848940 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.3.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *17978940
24
+ version_requirements: *27848940
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: minitest
27
- requirement: &17978160 !ruby/object:Gem::Requirement
27
+ requirement: &27848020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *17978160
35
+ version_requirements: *27848020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: detroit
38
- requirement: &17977400 !ruby/object:Gem::Requirement
38
+ requirement: &27846700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *17977400
46
+ version_requirements: *27846700
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: reap
49
- requirement: &17976680 !ruby/object:Gem::Requirement
49
+ requirement: &27845960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *17976680
57
+ version_requirements: *27845960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: qed
60
- requirement: &17975960 !ruby/object:Gem::Requirement
60
+ requirement: &27844460 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,9 +65,20 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *17975960
69
- description: MiniTap provides a custom MiniTest reporter that outs TAP-Y or TAP-J
70
- formatted output.
68
+ version_requirements: *27844460
69
+ - !ruby/object:Gem::Dependency
70
+ name: ae
71
+ requirement: &27841740 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *27841740
80
+ description: MiniTap provides a MiniTest TAP-Y/J report format suitable for use with
81
+ TAPOUT.
71
82
  email:
72
83
  - transfire@gmail.com
73
84
  executables: []
@@ -78,8 +89,10 @@ extra_rdoc_files:
78
89
  - COPYING.rdoc
79
90
  files:
80
91
  - .ruby
92
+ - .yardopts
81
93
  - lib/minitap/ignore_callers.rb
82
94
  - lib/minitap.rb
95
+ - spec/applique/ae.rb
83
96
  - spec/applique/cli.rb
84
97
  - spec/fixtures/tapy.yml
85
98
  - spec/minitap.rdoc
@@ -107,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
120
  version: '0'
108
121
  requirements: []
109
122
  rubyforge_project:
110
- rubygems_version: 1.8.10
123
+ rubygems_version: 1.8.11
111
124
  signing_key:
112
125
  specification_version: 3
113
126
  summary: TAP-Y/J reporters for MiniTest