corn 0.0.8 → 0.0.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8cc6871550ffd52bc9016143f8eac2ef5d0f78c4
4
- data.tar.gz: e51b371d3fbd0ef91c10f7fefe759207d093e542
3
+ metadata.gz: 885902f5a77dd01b2e1ad5d50bd2466359f9390a
4
+ data.tar.gz: 812a743f03f5cce869e4bb8f47edb5ebb290c4d5
5
5
  SHA512:
6
- metadata.gz: 9db883303d9b5b38b9952b9cb851f437490236dd5735be51b4e80505decbf69a9962ef7f5a99a4760ceb99c3ab61625b7969aa7fdaceb32cb80023dd78585b1d
7
- data.tar.gz: 54e826a75871535d535a1f1a151a00d6a4796c33b2b13cc45edd1cb78e89e9f9e06ec5a33d4a831dea92b38db34f989c1a44165ee44d8390c42a9453e6d4de48
6
+ metadata.gz: 201f2d5083ba0bb47d553bd879b6d2834878fd5e4087c7eaac1d6571e6ad51df78b53de93c8a61c4de2311f75c1f7a4f1c37818ade0c1d22d0a3f407eb0c9197
7
+ data.tar.gz: e76a9cf28cf57458ee7e93bd8f72aa6d292983a3780c8beb3641e692ca5c5a646a4347594c72ad61603df48c6f0467004467eca22e086a084a636967d5775fa4
@@ -39,9 +39,13 @@ module Corn
39
39
  end
40
40
  end
41
41
 
42
- def report(label, &block)
42
+ def report(label=nil, &block)
43
43
  @report ||= Report.new
44
- @report.record(label, &block)
44
+ if label
45
+ @report.record(label, &block)
46
+ else
47
+ @report
48
+ end
45
49
  end
46
50
 
47
51
  def submit
@@ -7,28 +7,27 @@ module Corn
7
7
 
8
8
  def run_with_corn(runner, &block)
9
9
  label = "#{self.class.name}.#{__name__}"
10
- Corn.report(label) do |report|
11
- @corn_report = report
10
+ Corn.report(label) do
12
11
  run_without_corn(runner, &block)
13
12
  end
14
13
  end
15
14
 
16
15
  def before_setup
17
- @corn_report.record_start(:setup)
16
+ Corn.report.record_start(:setup)
18
17
  end
19
18
 
20
19
  def after_setup
21
- @corn_report.record_end
22
- @corn_report.record_start(:run_test)
20
+ Corn.report.record_end
21
+ Corn.report.record_start(:run_test)
23
22
  end
24
23
 
25
24
  def before_teardown
26
- @corn_report.record_end
27
- @corn_report.record_start(:teardown)
25
+ Corn.report.record_end
26
+ Corn.report.record_start(:teardown)
28
27
  end
29
28
 
30
29
  def after_teardown
31
- @corn_report.record_end
30
+ Corn.report.record_end
32
31
  end
33
32
  end
34
33
  end
@@ -3,64 +3,79 @@ require 'csv'
3
3
  module Corn
4
4
  class Report
5
5
 
6
+ class RecordNotStartError < StandardError
7
+ end
8
+
9
+ class Record
10
+ attr_reader :data
11
+
12
+ def initialize(label, parent=nil)
13
+ @label = label
14
+ @parent = parent
15
+ @data = []
16
+ @start = Time.now
17
+ end
18
+
19
+ def push(label)
20
+ Record.new(label, self)
21
+ end
22
+
23
+ def pop
24
+ return if @parent.nil?
25
+ @parent.record(@label, @start, Time.now - @start)
26
+ @data.each { |d| @parent.record(*d) }
27
+ @parent
28
+ end
29
+
30
+ def record(label, start, time)
31
+ @data << [record_label(label), start, time]
32
+ end
33
+
34
+ private
35
+ def record_label(label)
36
+ [@label, label].compact.join('.').to_sym
37
+ end
38
+ end
39
+
6
40
  def initialize(prefix=nil)
7
- @prefix = prefix
8
- @records = []
41
+ @record = Record.new(prefix, nil)
9
42
  end
10
43
 
11
44
  def record(label, &block)
12
45
  record_start(label)
13
- yield(sub_report)
46
+ yield
14
47
  ensure
15
48
  record_end
16
49
  end
17
50
 
18
- # start record a benchmark time by label
19
51
  def record_start(label)
20
- @record = [record_label(label), Time.now]
52
+ @record = @record.push(label)
21
53
  end
22
54
 
23
- # should only be called between record_start and record_end to generate
24
- # sub report for current report
25
- def sub_report
26
- @sub_report ||= Report.new(@record[0])
27
- end
28
-
29
- # should only be called after record_start
30
55
  def record_end
31
- @record << Time.now - @record[1]
32
- @records << @record
33
- if @sub_report
34
- @records.concat @sub_report.to_a
35
- @sub_report = nil
36
- end
56
+ @record = @record.pop || raise(RecordNotStartError)
37
57
  end
38
58
 
39
59
  def empty?
40
- @records.empty?
60
+ to_a.empty?
41
61
  end
42
62
 
43
63
  def to_a
44
- @records
64
+ @record.data
45
65
  end
46
66
 
47
67
  def to_csv
48
68
  if RUBY_VERSION =~ /1.8/
49
69
  buf = ''
50
- @records.each do |r|
70
+ self.to_a.each do |r|
51
71
  CSV.generate_row(r, r.size, buf)
52
72
  end
53
73
  buf
54
74
  else
55
75
  CSV.generate do |csv|
56
- @records.each { |r| csv << r }
76
+ self.to_a.each { |r| csv << r }
57
77
  end
58
78
  end
59
79
  end
60
-
61
- private
62
- def record_label(label)
63
- [@prefix, label].compact.join('.').to_sym
64
- end
65
80
  end
66
81
  end
@@ -9,17 +9,17 @@ module Corn
9
9
 
10
10
  def run_with_corn(result, &block)
11
11
  label = "#{self.class.name}.#{@method_name}"
12
- Corn.report(label) do |report|
13
- __run_with_corn__(report, result, &block)
12
+ Corn.report(label) do
13
+ __run_with_corn__(result, &block)
14
14
  end
15
15
  end
16
16
 
17
- def __run_with_corn__(report, result, &block)
17
+ def __run_with_corn__(result, &block)
18
18
  yield(Test::Unit::TestCase::STARTED, name)
19
19
  @_result = result
20
20
  begin
21
- report.record(:setup) { setup }
22
- report.record(:run_test) { __send__(@method_name) }
21
+ Corn.report(:setup) { setup }
22
+ Corn.report(:run_test) { __send__(@method_name) }
23
23
  rescue AssertionFailedError => e
24
24
  add_failure(e.message, e.backtrace)
25
25
  rescue Exception
@@ -27,7 +27,7 @@ module Corn
27
27
  add_error($!)
28
28
  ensure
29
29
  begin
30
- report.record(:teardown) { teardown }
30
+ Corn.report(:teardown) { teardown }
31
31
  rescue AssertionFailedError => e
32
32
  add_failure(e.message, e.backtrace)
33
33
  rescue Exception
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: corn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xiao Li