Abstracting Services In Ruby C0 Coverage Information - RCov

lib/asir/log.rb

Name Total Lines Lines of Code Total Coverage Code Coverage
lib/asir/log.rb 80 65
41.25%
27.69%

Key

Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.

Coverage Details

1 module ASIR
2   # !SLIDE
3   # Diagnostic Logging
4   #
5   # Logging mixin.
6   module Log
7     attr_accessor :_logger
8 
9     def self.included target
10       super
11       target.send(:extend, ClassMethods)
12     end
13 
14     @@enabled = false
15     def self.enabled
16       @@enabled
17     end
18     def self.enabled= x
19       @@enabled = x
20     end
21 
22     module ClassMethods
23       def _log_enabled= x
24         (Thread.current[:'ASIR::Log.enabled'] ||= { })[self] = x
25       end
26       def _log_enabled?
27         (Thread.current[:'ASIR::Log.enabled'] ||= { })[self]
28       end
29     end
30 
31     def _log_enabled= x
32       @_log_enabled = x
33     end
34 
35     def _log_enabled?
36       ASIR::Log.enabled || 
37         @_log_enabled || 
38         self.class._log_enabled?
39     end
40 
41     def _log msg = nil
42       return unless _log_enabled?
43       msg ||= yield if block_given?
44       msg = String === msg ? msg : _log_format(msg)
45       msg = "  #{$$} #{Module === self ? self : self.class} #{msg}"
46       case @_logger
47       when Proc
48         @_logger.call msg
49       when IO
50         @_logger.puts msg
51       else
52         $stderr.puts msg
53       end
54       nil
55     end
56 
57     def _log_result msg
58       _log { 
59         msg = String === msg ? msg : _log_format(msg);
60         "#{msg} => ..." }
61       result = yield
62       _log { "#{msg} => \n    #{result.inspect}" }
63       result
64     end
65 
66     def _log_format obj
67       case obj
68       when Exception
69         "#{obj.inspect}\n    #{obj.backtrace * "\n    "}"
70       when Array
71         obj.map { | x | _log_format x } * ", "
72       else
73         obj.inspect
74       end
75     end
76   end # module
77 end # module
78 
79 
80 

Generated on Fri Jan 27 17:37:46 -0600 2012 with rcov 0.9.8