ghaki-report 2011.11.30.1 → 2011.12.06.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2011.11.30.1
1
+ 2011.12.06.1
@@ -1,6 +1,5 @@
1
1
  module Ghaki #:nodoc:
2
- module Report #:nodoc:
3
2
 
4
3
  class ReportContentError < RuntimeError; end
5
4
 
6
- end end
5
+ end
@@ -3,17 +3,20 @@ require 'ghaki/stats/mixin'
3
3
 
4
4
  module Ghaki #:nodoc:
5
5
  module Report #:nodoc:
6
+ module Mixin #:nodoc:
6
7
 
7
- class Base
8
+ module Basic
8
9
  include Ghaki::Logger::Mixin
9
10
  include Ghaki::Stats::Mixin
10
11
 
11
- ######################################################################
12
- class << self
12
+ module ClassMethods
13
13
  attr_accessor :report_name
14
14
  end
15
15
 
16
- ######################################################################
16
+ def self.included klass #:nodoc:
17
+ klass.extend ClassMethods
18
+ end
19
+
17
20
  def initialize opts={}
18
21
  self.report_name = opts[:report_name] unless opts[:report_name].nil?
19
22
  @stats = opts[:stats]
@@ -26,23 +29,26 @@ class Base
26
29
  end
27
30
  end
28
31
 
29
- ######################################################################
30
32
  def report_name= title
31
- self.class.report_name = title
33
+ if title.nil?
34
+ @report_name = self.class.report_name
35
+ elsif title[0,1] == '.'
36
+ @report_name = (@report_name || self.class.report_name) + title
37
+ else
38
+ @report_name = title
39
+ end
32
40
  end
33
41
 
34
- ######################################################################
35
42
  def report_name title=nil
36
43
  if title.nil?
37
- self.class.report_name
44
+ @report_name || self.class.report_name
38
45
  elsif title[0,1] == '.'
39
- self.class.report_name + title
46
+ (@report_name || self.class.report_name) + title
40
47
  else
41
48
  title
42
49
  end
43
50
  end
44
51
 
45
- ######################################################################
46
52
  def minor_report_wrap title=nil, &block
47
53
  logger.minor.wrap( report_name(title) ) do
48
54
  begin
@@ -53,7 +59,6 @@ class Base
53
59
  end
54
60
  end
55
61
 
56
- ######################################################################
57
62
  def major_report_wrap title=nil, &block
58
63
  logger.major.wrap( report_name(title) ) do
59
64
  begin
@@ -65,4 +70,4 @@ class Base
65
70
  end
66
71
 
67
72
  end
68
- end end
73
+ end end end
@@ -0,0 +1,34 @@
1
+ require 'ghaki/core_ext/file/with_temp'
2
+
3
+ module Ghaki #:nodoc:
4
+ module Report #:nodoc:
5
+ module Mixin #:nodoc:
6
+
7
+ module OutputFile
8
+
9
+ attr_accessor :output_file
10
+
11
+ def initialize opts={} ; super opts
12
+ @output_file = opts[:output_file]
13
+ end
14
+
15
+ def output_report
16
+ output_prepare
17
+ File.with_opened_temp @output_file do |tmp_file|
18
+ output_to_format tmp_file
19
+ end
20
+ output_finish
21
+ end
22
+
23
+ def output_finish
24
+ end
25
+
26
+ def output_prepare
27
+ logger.info 'output file: ' + @output_file
28
+ end
29
+
30
+ def output_to_format out_file
31
+ end
32
+
33
+ end
34
+ end end end
@@ -0,0 +1,145 @@
1
+ require 'ghaki/report/mixin/basic'
2
+ require 'ghaki/logger/spec_helper'
3
+ require 'ghaki/stats/spec_helper'
4
+
5
+ module Ghaki module Report module Mixin module Basic_Testing
6
+ describe Basic do
7
+ include Ghaki::Logger::SpecHelper
8
+ include Ghaki::Stats::SpecHelper
9
+
10
+ SET_NAME = 'SET_NAME'
11
+ DEF_NAME = 'DEFAULT_NAME'
12
+ SUB_NAME = '.SUB_NAME'
13
+ SET_SUB_FULL = 'SET_NAME.SUB_NAME'
14
+ DEF_SUB_FULL = 'DEFAULT_NAME.SUB_NAME'
15
+
16
+ class MyReport
17
+ include Ghaki::Report::Mixin::Basic
18
+ self.report_name = DEF_NAME
19
+ end
20
+
21
+ context 'meta class' do
22
+ subject { MyReport }
23
+ it { should respond_to :report_name }
24
+ it { should respond_to :report_name= }
25
+ end
26
+
27
+ context 'object instance' do
28
+
29
+ before(:each) do
30
+ setup_safe_stats
31
+ reset_safe_logger
32
+ @my_report = MyReport.new({
33
+ :logger => @logger,
34
+ :stats => @stats,
35
+ })
36
+ end
37
+
38
+ subject { @my_report }
39
+
40
+ it { should be_kind_of(Ghaki::Logger::Mixin) }
41
+ it { should be_kind_of(Ghaki::Stats::Mixin) }
42
+
43
+ it { should respond_to :logger }
44
+ it { should respond_to :logger= }
45
+ it { should respond_to :stats }
46
+ it { should respond_to :stats= }
47
+
48
+ describe '#initialize' do
49
+ context 'using option :report_name' do
50
+ it 'accepts full name' do
51
+ MyReport.new( :report_name => SET_NAME ).report_name == SET_NAME
52
+ end
53
+ it 'defaults to meta report name' do
54
+ MyReport.new.report_name.should == DEF_NAME
55
+ end
56
+ it 'accepts partial name using default' do
57
+ MyReport.new( :report_name => SUB_NAME ).report_name == DEF_SUB_FULL
58
+ end
59
+ end
60
+ context 'using option :stats' do
61
+ it 'defaults' do
62
+ Ghaki::Stats::Base.expects(:new).returns(@stats)
63
+ MyReport.new.
64
+ stats.should == @stats
65
+ end
66
+ it 'accepts' do
67
+ MyReport.new( :stats => @stats ).
68
+ stats.should == @stats
69
+ end
70
+ end
71
+ context 'using option :logger' do
72
+ it 'defaults' do
73
+ Ghaki::Logger::Base.expects(:new).returns(@logger)
74
+ MyReport.new.
75
+ logger.should == @logger
76
+ end
77
+ it 'accepts' do
78
+ MyReport.new( :logger => @logger).
79
+ logger.should == @logger
80
+ end
81
+ end
82
+ end
83
+
84
+ describe '#report_name' do
85
+ it 'defaults to meta report name' do
86
+ subject.report_name.should == DEF_NAME
87
+ end
88
+ it 'accepts full report name' do
89
+ subject.report_name(SET_NAME).should == SET_NAME
90
+ end
91
+ it 'accepts partial name with default' do
92
+ subject.report_name(SUB_NAME).should == DEF_SUB_FULL
93
+ end
94
+ it 'accepts partial name after override' do
95
+ subject.report_name = SET_NAME
96
+ subject.report_name(SUB_NAME).should == SET_SUB_FULL
97
+ end
98
+ end
99
+
100
+ describe '#report_name=' do
101
+ it 'assigns report name' do
102
+ subject.report_name = SET_NAME
103
+ subject.report_name.should == SET_NAME
104
+ end
105
+ it 'resets to default name on nil' do
106
+ subject.report_name = SET_NAME
107
+ subject.report_name = nil
108
+ subject.report_name.should == DEF_NAME
109
+ end
110
+ it 'accepts partial name with default' do
111
+ subject.report_name = SUB_NAME
112
+ subject.report_name.should == DEF_SUB_FULL
113
+ end
114
+ it 'accepts partial name after override' do
115
+ subject.report_name = SET_NAME
116
+ subject.report_name = SUB_NAME
117
+ subject.report_name.should == SET_SUB_FULL
118
+ end
119
+ end
120
+
121
+ describe '#minor_report_wrap' do
122
+ it 'calls logger minor mode with default report name' do
123
+ @logger.minor.expects(:wrap).with(DEF_NAME).once
124
+ subject.minor_report_wrap do end
125
+ end
126
+ it 'calls logger minor mode with given report name' do
127
+ @logger.minor.expects(:wrap).with(SET_NAME).once
128
+ subject.minor_report_wrap SET_NAME do end
129
+ end
130
+ end
131
+
132
+ describe '#major_report_wrap' do
133
+ it 'calls logger major mode with default report name' do
134
+ @logger.major.expects(:wrap).with(DEF_NAME).once
135
+ subject.major_report_wrap do end
136
+ end
137
+ it 'calls logger major mode with given report name' do
138
+ @logger.major.expects(:wrap).with(SET_NAME).once
139
+ subject.major_report_wrap SET_NAME do end
140
+ end
141
+ end
142
+
143
+ end
144
+ end
145
+ end end end end
@@ -1,15 +1,16 @@
1
+ require 'ghaki/report/mixin/basic'
2
+ require 'ghaki/report/mixin/linear_parser'
1
3
  require 'ghaki/logger/spec_helper'
2
4
  require 'ghaki/stats/spec_helper'
3
- require 'ghaki/report/base'
4
- require 'ghaki/report/mixin/linear_parser'
5
5
 
6
6
  module Ghaki module Report module Mixin module LinearParser_Testing
7
7
  describe LinearParser do
8
8
  include Ghaki::Logger::SpecHelper
9
9
  include Ghaki::Stats::SpecHelper
10
10
 
11
- class MyParser < Base
12
- include LinearParser
11
+ class MyParser
12
+ include Ghaki::Report::Mixin::Basic
13
+ include Ghaki::Report::Mixin::LinearParser
13
14
  end
14
15
 
15
16
  before(:each) do
@@ -32,10 +33,6 @@ describe LinearParser do
32
33
  it { should respond_to :parser_warn_max }
33
34
  it { should respond_to :parser_warn_max= }
34
35
 
35
- before(:each) do
36
- @stats.clear
37
- end
38
-
39
36
  describe '#parser_startup' do
40
37
  it 'defaults parser unknown max' do
41
38
  subject.parser_unknown_max = nil
@@ -0,0 +1,51 @@
1
+ require 'ghaki/report/mixin/basic'
2
+ require 'ghaki/report/mixin/output_file'
3
+ require 'ghaki/logger/spec_helper'
4
+ require 'ghaki/stats/spec_helper'
5
+ require 'ghaki/core_ext/file/spec_helper/fake_temp'
6
+
7
+ module Ghaki module Report module Mixin module OutputFileTesting
8
+ describe OutputFile do
9
+ include Ghaki::Logger::SpecHelper
10
+ include Ghaki::Stats::SpecHelper
11
+ include Ghaki::CoreExt::File::SpecHelper::FakeTemp
12
+
13
+ FAKE_OUT = '/tmp/myfile.txt'
14
+
15
+ class MyReport
16
+ include Ghaki::Report::Mixin::Basic
17
+ include Ghaki::Report::Mixin::OutputFile
18
+ end
19
+
20
+ before(:each) do
21
+ setup_safe_stats
22
+ reset_safe_logger
23
+ setup_fake_tempfile
24
+ @subj = MyReport.new({
25
+ :logger => @logger,
26
+ :stats => @stats,
27
+ :output_file => FAKE_OUT,
28
+ })
29
+ end
30
+
31
+ subject { @subj }
32
+
33
+ it { should respond_to :output_file }
34
+ it { should respond_to :output_file= }
35
+ it { should respond_to :output_report }
36
+ it { should respond_to :output_finish }
37
+ it { should respond_to :output_prepare }
38
+ it { should respond_to :output_to_format }
39
+
40
+ describe '#output_report' do
41
+ it 'should create file' do
42
+ abc = sequence('reporting')
43
+ subject.expects(:output_prepare).once.in_sequence(abc)
44
+ subject.expects(:output_to_format).with(@fake_tempfile).once.in_sequence(abc)
45
+ subject.expects(:output_finish).once.in_sequence(abc)
46
+ subject.output_report
47
+ end
48
+ end
49
+
50
+ end
51
+ end end end end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ghaki-report
3
3
  version: !ruby/object:Gem::Version
4
- version: 2011.11.30.1
4
+ version: 2011.12.06.1
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-30 00:00:00.000000000Z
12
+ date: 2011-12-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ghaki-app
16
- requirement: &80031340 !ruby/object:Gem::Requirement
16
+ requirement: &80503420 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2011.11.29.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *80031340
24
+ version_requirements: *80503420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ghaki-ext-file
27
- requirement: &80031120 !ruby/object:Gem::Requirement
27
+ requirement: &80503200 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2011.11.29.1
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *80031120
35
+ version_requirements: *80503200
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: ghaki-logger
38
- requirement: &80030900 !ruby/object:Gem::Requirement
38
+ requirement: &80502980 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2011.11.29.1
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *80030900
46
+ version_requirements: *80502980
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: ghaki-match
49
- requirement: &80030680 !ruby/object:Gem::Requirement
49
+ requirement: &80502760 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2011.11.30.1
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *80030680
57
+ version_requirements: *80502760
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: ghaki-stats
60
- requirement: &80030460 !ruby/object:Gem::Requirement
60
+ requirement: &80502540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2011.11.29.1
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *80030460
68
+ version_requirements: *80502540
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &80030240 !ruby/object:Gem::Requirement
71
+ requirement: &80502320 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 2.4.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *80030240
79
+ version_requirements: *80502320
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: mocha
82
- requirement: &80030010 !ruby/object:Gem::Requirement
82
+ requirement: &80502090 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.9.12
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *80030010
90
+ version_requirements: *80502090
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rdoc
93
- requirement: &80029780 !ruby/object:Gem::Requirement
93
+ requirement: &80501860 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,7 +98,7 @@ dependencies:
98
98
  version: 3.9.4
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *80029780
101
+ version_requirements: *80501860
102
102
  description: Collection of extensions for basic reporting.
103
103
  email: gerald@kalafut.org
104
104
  executables: []
@@ -106,16 +106,16 @@ extensions: []
106
106
  extra_rdoc_files:
107
107
  - README
108
108
  files:
109
+ - lib/ghaki/report/mixin/basic.rb
109
110
  - lib/ghaki/report/mixin/linear_parser.rb
110
- - lib/ghaki/report/output_file.rb
111
+ - lib/ghaki/report/mixin/output_file.rb
111
112
  - lib/ghaki/report/errors.rb
112
- - lib/ghaki/report/base.rb
113
113
  - README
114
114
  - LICENSE
115
115
  - VERSION
116
- - spec/ghaki/report/base_spec.rb
116
+ - spec/ghaki/report/mixin/basic_spec.rb
117
117
  - spec/ghaki/report/mixin/linear_parser_spec.rb
118
- - spec/ghaki/report/output_file_spec.rb
118
+ - spec/ghaki/report/mixin/output_file_spec.rb
119
119
  - spec/spec_helper.rb
120
120
  homepage: http://github.com/ghaki
121
121
  licenses: []
@@ -142,7 +142,7 @@ signing_key:
142
142
  specification_version: 3
143
143
  summary: Basic reporting helpers
144
144
  test_files:
145
- - spec/ghaki/report/base_spec.rb
145
+ - spec/ghaki/report/mixin/basic_spec.rb
146
146
  - spec/ghaki/report/mixin/linear_parser_spec.rb
147
- - spec/ghaki/report/output_file_spec.rb
147
+ - spec/ghaki/report/mixin/output_file_spec.rb
148
148
  - spec/spec_helper.rb
@@ -1,41 +0,0 @@
1
- require 'ghaki/core_ext/file/with_temp'
2
- require 'ghaki/report/base'
3
-
4
- module Ghaki #:nodoc:
5
- module Report #:nodoc:
6
-
7
- class OutputFile < Base
8
-
9
- ######################################################################
10
- attr_accessor :output_file
11
-
12
- ######################################################################
13
- def initialize opts={} ; super opts
14
- self.class.report_name ||= 'WRITING REPORT'
15
- @output_file = opts[:output_file]
16
- end
17
-
18
- ######################################################################
19
- def output_report
20
- output_prepare
21
- logger.info 'output file: ' + @output_file
22
- File.with_opened_temp @output_file do |tmp_file|
23
- output_to_format tmp_file
24
- end
25
- output_finish
26
- end
27
-
28
- ######################################################################
29
- def output_finish
30
- end
31
-
32
- ######################################################################
33
- def output_prepare
34
- end
35
-
36
- ######################################################################
37
- def output_to_format out_file
38
- end
39
-
40
- end
41
- end end
@@ -1,70 +0,0 @@
1
- require 'ghaki/report/base'
2
-
3
- module Ghaki module Report module BaseTesting
4
- describe Base do
5
-
6
- before(:all) do
7
- @log = stub_everything()
8
- @maj = stub_everything()
9
- @min = stub_everything()
10
- end
11
-
12
- class MyReport < Base
13
- self.report_name = 'my_report'
14
- end
15
-
16
- context 'eigen class' do
17
- subject { MyReport }
18
- it { should respond_to :report_name }
19
- describe '#report_name' do
20
- it 'specifies report name' do
21
- MyReport.report_name.should == 'my_report'
22
- end
23
- end
24
- end
25
-
26
- subject do MyReport.new( :logger => @log ) end
27
-
28
- context 'object instance' do
29
- it { should respond_to :logger }
30
- it { should respond_to :logger= }
31
- it { should respond_to :stats }
32
- end
33
-
34
- describe '#report_name' do
35
- it 'defaults to eigen report name' do
36
- subject.report_name == 'my_report'
37
- end
38
- it 'accepts normal report name' do
39
- subject.report_name('quack').should == 'quack'
40
- end
41
- it 'accepts period leading report nmae' do
42
- subject.report_name('.moo').should == 'my_report.moo'
43
- end
44
- end
45
-
46
- describe '#report_name=' do
47
- it 'assigns report name' do
48
- subject.report_name = 'zap'
49
- subject.report_name.should == 'zap'
50
- end
51
- end
52
-
53
- describe '#minor_report_wrap' do
54
- it 'calls logger minor mode' do
55
- @log.expects(:minor).returns(@min).once
56
- @min.expects(:wrap).with('my_report').once
57
- subject.minor_report_wrap do end
58
- end
59
- end
60
-
61
- describe '#major_report_wrap' do
62
- it 'calls logger major mode' do
63
- @log.expects(:major).returns(@maj).once
64
- @maj.expects(:wrap).with('my_report').once
65
- subject.major_report_wrap do end
66
- end
67
- end
68
-
69
- end
70
- end end end
@@ -1,32 +0,0 @@
1
- require 'ghaki/report/output_file'
2
-
3
- module Ghaki module Report module OutputFileTesting
4
- describe OutputFile do
5
-
6
- before(:all) do
7
- @log = stub_everything()
8
- @out = '/tmp/myfile.txt'
9
- end
10
-
11
- subject do OutputFile.new( :logger => @log, :output_file => @out ) end
12
-
13
- it { should respond_to :output_file }
14
- it { should respond_to :output_file= }
15
- it { should respond_to :output_report }
16
- it { should respond_to :output_finish }
17
- it { should respond_to :output_prepare }
18
- it { should respond_to :output_to_format }
19
-
20
- describe '#output_report' do
21
- it 'should create file' do
22
- abc = sequence('reporting')
23
- subject.expects(:output_prepare).once.in_sequence(abc)
24
- ::File.expects(:with_opened_temp).with(@out).yields(@out).once.in_sequence(abc)
25
- subject.expects(:output_to_format).with(@out).once.in_sequence(abc)
26
- subject.expects(:output_finish).once.in_sequence(abc)
27
- subject.output_report
28
- end
29
- end
30
-
31
- end
32
- end end end