logging 0.1.0 → 0.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.
@@ -0,0 +1,141 @@
1
+ # $Id: test_rolling_file.rb 22 2007-01-29 16:20:54Z tim_pease $
2
+
3
+ require 'test/setup.rb'
4
+ require 'fileutils'
5
+
6
+ module TestLogging
7
+ module TestAppenders
8
+
9
+ class TestRollingFile < Test::Unit::TestCase
10
+ include LoggingTestCase
11
+
12
+ TMP = 'tmp'
13
+
14
+ def setup
15
+ super
16
+ FileUtils.rm_rf TMP if File.exist?(TMP)
17
+ FileUtils.mkdir(TMP)
18
+ @fn = File.join(TMP, 'test.log')
19
+ @fn_fmt = File.join(TMP, 'test.%d.log')
20
+ @glob = File.join(TMP, '*.log')
21
+ end
22
+
23
+ def teardown
24
+ FileUtils.rm_rf TMP
25
+ end
26
+
27
+ def test_initialize
28
+ assert_equal [], Dir.glob(@glob)
29
+
30
+ # create a new appender
31
+ ap = ::Logging::Appenders::RollingFile.new('test', :filename => @fn)
32
+ assert File.exist?(@fn)
33
+ assert_equal 0, File.size(@fn)
34
+
35
+ ap << "Just a line of text\n" # 20 bytes
36
+ ap.flush
37
+ assert_equal 20, File.size(@fn)
38
+ ap.close
39
+
40
+ # make sure we append to the current file (not truncate)
41
+ ap = ::Logging::Appenders::RollingFile.new('test', :filename => @fn)
42
+ assert_equal [@fn], Dir.glob(@glob)
43
+ assert_equal 20, File.size(@fn)
44
+
45
+ ap << "Just another line of text\n" # 26 bytes
46
+ ap.flush
47
+ assert_equal 46, File.size(@fn)
48
+ ap.close
49
+
50
+ # setting the truncate option to true should roll the current log file
51
+ # and create a new one
52
+ ap = ::Logging::Appenders::RollingFile.new('test',
53
+ :filename => @fn, :truncate => true)
54
+
55
+ log1 = sprintf(@fn_fmt, 1)
56
+ assert_equal [log1, @fn], Dir.glob(@glob).sort
57
+ assert_equal 0, File.size(@fn)
58
+ assert_equal 46, File.size(log1)
59
+
60
+ ap << "Some more text in the new file\n" # 31 bytes
61
+ ap.flush
62
+ assert_equal 31, File.size(@fn)
63
+ ap.close
64
+ end
65
+
66
+ def test_keep
67
+ assert_equal [], Dir.glob(@glob)
68
+
69
+ (1..12).each do |cnt|
70
+ name = sprintf(@fn_fmt, cnt)
71
+ File.open(name,'w') {|fd| fd.write 'X'*cnt}
72
+ end
73
+ FileUtils.touch(@fn)
74
+
75
+ # keep only five files
76
+ ap = ::Logging::Appenders::RollingFile.new('test',
77
+ :filename => @fn, :keep => 5)
78
+
79
+ # we still have 13 files because we did not truncate the log file,
80
+ # and hence, we did not roll all the log files
81
+ assert_equal 13, Dir.glob(@glob).length
82
+
83
+ # force the appender to roll the files
84
+ ap.send :roll
85
+ assert_equal 6, Dir.glob(@glob).length
86
+
87
+ (1..5).each do |cnt|
88
+ name = sprintf(@fn_fmt, cnt)
89
+ assert_equal cnt-1, File.size(name)
90
+ end
91
+ ap.close
92
+ end
93
+
94
+ def test_max_age
95
+ assert_equal [], Dir.glob(@glob)
96
+
97
+ ap = ::Logging::Appenders::RollingFile.new('test',
98
+ :filename => @fn, :max_age => 1)
99
+
100
+ ap << "random message\n"
101
+ assert_equal 1, Dir.glob(@glob).length
102
+
103
+ sleep 1
104
+ ap << "another random message\n"
105
+ assert_equal 2, Dir.glob(@glob).length
106
+
107
+ ap.close
108
+ end
109
+
110
+ def test_max_size
111
+ assert_equal [], Dir.glob(@glob)
112
+
113
+ ap = ::Logging::Appenders::RollingFile.new('test',
114
+ :filename => @fn, :max_size => 100)
115
+
116
+ ap << 'X' * 100; ap.flush
117
+ assert_equal 1, Dir.glob(@glob).length
118
+ assert_equal 100, File.size(@fn)
119
+
120
+ # this character is appended to the log file (bringing its size to 101)
121
+ # and THEN the file is rolled resulting in a new, empty log file
122
+ ap << 'X'
123
+ assert_equal 2, Dir.glob(@glob).length
124
+ assert_equal 0, File.size(@fn)
125
+
126
+ ap << 'X' * 100; ap.flush
127
+ assert_equal 2, Dir.glob(@glob).length
128
+ assert_equal 100, File.size(@fn)
129
+
130
+ ap << 'X'
131
+ assert_equal 3, Dir.glob(@glob).length
132
+ assert_equal 0, File.size(@fn)
133
+
134
+ ap.close
135
+ end
136
+
137
+ end # class TestRollingFile
138
+ end # module TestAppenders
139
+ end # module TestLogging
140
+
141
+ # EOF
@@ -0,0 +1,47 @@
1
+ # $Id: test_yaml_configurator.rb 22 2007-01-29 16:20:54Z tim_pease $
2
+
3
+ require 'stringio'
4
+ require 'yaml'
5
+ require 'test/setup.rb'
6
+
7
+ module TestLogging
8
+ module TestConfig
9
+
10
+ class TestYamlConfigurator < Test::Unit::TestCase
11
+ include LoggingTestCase
12
+
13
+ def setup
14
+ super
15
+ end
16
+
17
+ def test_class_load
18
+ assert_raise(::Logging::Config::YamlConfigurator::Error) {
19
+ ::Logging::Config::YamlConfigurator.load(Object.new)
20
+ }
21
+
22
+ begin
23
+ fd = File.open('examples/logging.yaml','r')
24
+ assert_nothing_raised {
25
+ ::Logging::Config::YamlConfigurator.load(fd)
26
+ }
27
+ ensure
28
+ fd.close
29
+ end
30
+ end
31
+
32
+ def test_initialize
33
+ io = StringIO.new
34
+ io << YAML.dump({:one => 1, :two => 2, :three => 3})
35
+ io.seek 0
36
+
37
+ assert_raise(::Logging::Config::YamlConfigurator::Error) {
38
+ ::Logging::Config::YamlConfigurator.new(io)
39
+ }
40
+ end
41
+
42
+ end # class TestYamlConfigurator
43
+
44
+ end # module TestConfig
45
+ end # module TestLogging
46
+
47
+ # EOF
@@ -1,4 +1,4 @@
1
- # $Id: test_pattern.rb 13 2007-01-15 17:19:37Z tim_pease $
1
+ # $Id: test_pattern.rb 17 2007-01-20 18:47:43Z tim_pease $
2
2
 
3
3
  require 'test/setup.rb'
4
4
 
@@ -138,7 +138,7 @@ module TestLayouts
138
138
  assert_match %r/\A\d+\z/, @layout.format(event)
139
139
 
140
140
  @layout.pattern = '%t'
141
- assert_match %r/\A\d+\z/, @layout.format(event)
141
+ assert_match %r/\A-?\d+\z/, @layout.format(event)
142
142
 
143
143
  @layout.pattern = '%%'
144
144
  assert_equal '%', @layout.format(event)
data/test/setup.rb CHANGED
@@ -1,4 +1,4 @@
1
- # $Id: setup.rb 12 2007-01-14 20:03:40Z tim_pease $
1
+ # $Id: setup.rb 22 2007-01-29 16:20:54Z tim_pease $
2
2
 
3
3
  require 'test/unit'
4
4
 
@@ -37,6 +37,8 @@ module TestLogging
37
37
  define_method(:instance, nonce::FirstInstanceCall)
38
38
  end
39
39
  end
40
+
41
+ ::Logging::Appender.instance_variable_get(:@appenders).clear
40
42
  end
41
43
 
42
44
  end # module LoggingTestCase
data/test/test_layout.rb CHANGED
@@ -1,4 +1,4 @@
1
- # $Id: test_layout.rb 5 2007-01-09 23:02:57Z tim_pease $
1
+ # $Id: test_layout.rb 17 2007-01-20 18:47:43Z tim_pease $
2
2
 
3
3
  require 'test/setup.rb'
4
4
 
@@ -21,13 +21,13 @@ module TestLogging
21
21
 
22
22
  assert_equal :string, obj_format[@layout]
23
23
 
24
- @layout = ::Logging::Layout.new 'blah'
24
+ @layout = ::Logging::Layout.new 'format_as' => 'blah'
25
25
  assert_equal :string, obj_format[@layout]
26
26
 
27
- @layout = ::Logging::Layout.new :inspect
27
+ @layout = ::Logging::Layout.new :format_as => :inspect
28
28
  assert_equal :inspect, obj_format[@layout]
29
29
 
30
- @layout = ::Logging::Layout.new :yaml
30
+ @layout = ::Logging::Layout.new 'format_as' => :yaml
31
31
  assert_equal :yaml, obj_format[@layout]
32
32
 
33
33
  @layout = ::Logging::Layout.new
@@ -70,16 +70,16 @@ module TestLogging
70
70
  assert_equal '<Array> 1234', r
71
71
 
72
72
  obj = %w( one two three four )
73
- @layout = ::Logging::Layout.new :inspect
73
+ @layout = ::Logging::Layout.new :format_as => :inspect
74
74
  r = @layout.send :format_obj, obj
75
75
  assert_equal '<Array> ["one", "two", "three", "four"]', r
76
76
 
77
- @layout = ::Logging::Layout.new :yaml
77
+ @layout = ::Logging::Layout.new :format_as => :yaml
78
78
  r = @layout.send :format_obj, obj
79
79
  assert_equal "<Array> \n--- \n- one\n- two\n- three\n- four\n", r
80
80
  end
81
81
 
82
- end # class TestAppender
82
+ end # class TestLayout
83
83
  end # module TestLogging
84
84
 
85
85
  # EOF
@@ -1,10 +1,10 @@
1
- # $Id: test_log_event.rb 9 2007-01-11 23:51:41Z tim_pease $
1
+ # $Id: test_log_event.rb 22 2007-01-29 16:20:54Z tim_pease $
2
2
 
3
3
  require 'test/setup.rb'
4
4
 
5
5
  module TestLogging
6
6
 
7
- class TestEvent < Test::Unit::TestCase
7
+ class TestLogEvent < Test::Unit::TestCase
8
8
  include LoggingTestCase
9
9
 
10
10
  def setup
@@ -69,7 +69,7 @@ module TestLogging
69
69
  assert_equal 'test_method', @appender.event.method
70
70
  end
71
71
 
72
- end # class TestLogger
72
+ end # class TestLogEvent
73
73
 
74
74
  class EventAppender < ::Logging::Appender
75
75
  attr_reader :event
data/test/test_logger.rb CHANGED
@@ -1,4 +1,4 @@
1
- # $Id: test_logger.rb 15 2007-01-15 19:03:45Z tim_pease $
1
+ # $Id: test_logger.rb 22 2007-01-29 16:20:54Z tim_pease $
2
2
 
3
3
  require 'test/setup.rb'
4
4
  require 'stringio'
@@ -69,6 +69,20 @@ module TestLogging
69
69
 
70
70
  log.additive = false
71
71
  assert_equal false, log.additive
72
+
73
+ log.additive = true
74
+ assert_equal true, log.additive
75
+
76
+ log.additive = 'false'
77
+ assert_equal false, log.additive
78
+
79
+ log.additive = 'true'
80
+ assert_equal true, log.additive
81
+
82
+ log.additive = nil
83
+ assert_equal true, log.additive
84
+
85
+ assert_raise(ArgumentError) {log.additive = Object}
72
86
  end
73
87
 
74
88
  def test_appenders_eq
@@ -444,6 +458,28 @@ module TestLogging
444
458
  assert_equal true, log.trace
445
459
  end
446
460
 
461
+ def test_trace_eq
462
+ log = ::Logging::Logger.new 'A'
463
+ assert_equal false, log.trace
464
+
465
+ log.trace = true
466
+ assert_equal true, log.trace
467
+
468
+ log.trace = false
469
+ assert_equal false, log.trace
470
+
471
+ log.trace = 'true'
472
+ assert_equal true, log.trace
473
+
474
+ log.trace = 'false'
475
+ assert_equal false, log.trace
476
+
477
+ log.trace = nil
478
+ assert_equal false, log.trace
479
+
480
+ assert_raise(ArgumentError) {log.trace = Object}
481
+ end
482
+
447
483
  end # class TestLogger
448
484
 
449
485
  class SioAppender < ::Logging::Appenders::IO
data/test/test_logging.rb CHANGED
@@ -1,4 +1,4 @@
1
- # $Id: test_logging.rb 12 2007-01-14 20:03:40Z tim_pease $
1
+ # $Id: test_logging.rb 22 2007-01-29 16:20:54Z tim_pease $
2
2
 
3
3
  require 'test/setup.rb'
4
4
 
@@ -13,6 +13,71 @@ module TestLogging
13
13
  @lnames = ::Logging::LNAMES
14
14
  end
15
15
 
16
+ def test_configure
17
+ assert_raise(ArgumentError) {::Logging.configure 'blah.txt'}
18
+
19
+ ::Logging.configure 'examples/logging.yaml'
20
+
21
+ names = {
22
+ 0 => 'DEB', 1 => 'INF', 2 => 'PRT',
23
+ 3 => 'WRN', 4 => 'ERR', 5 => 'FAT'
24
+ }
25
+ assert_equal names, ::Logging::LNAMES
26
+ assert_equal :inspect, ::Logging::OBJ_FORMAT
27
+ assert_equal 3, ::Logging::Logger.root.level
28
+
29
+ # verify the appenders
30
+ h = ::Logging::Appender.instance_variable_get :@appenders
31
+ assert_equal ['logfile', 'stderr'], h.keys.sort
32
+
33
+ # start with the File appender
34
+ logfile = ::Logging::Appender['logfile']
35
+ assert_instance_of ::Logging::Appenders::File, logfile
36
+ assert_equal 0, logfile.level
37
+ assert_equal 'temp.log', logfile.instance_variable_get(:@fn)
38
+
39
+ layout = logfile.layout
40
+ assert_instance_of ::Logging::Layouts::Pattern, layout
41
+ assert_equal '[%d] %l %c : %m\\n', layout.pattern
42
+ assert_equal 'to_s', layout.date_method
43
+ assert_nil layout.date_pattern
44
+
45
+ # and now the Stderr appender
46
+ stderr = ::Logging::Appender['stderr']
47
+ assert_instance_of ::Logging::Appenders::Stderr, stderr
48
+ assert_equal 0, stderr.level
49
+
50
+ layout = stderr.layout
51
+ assert_instance_of ::Logging::Layouts::Basic, layout
52
+
53
+ # verify the loggers
54
+ h = ::Logging::Repository.instance.instance_variable_get :@h
55
+ assert_equal 3, h.length
56
+
57
+ # mylogger
58
+ mylogger = ::Logging::Logger['mylogger']
59
+ assert_equal 0, mylogger.level
60
+ assert_equal false, mylogger.additive
61
+ assert_equal false, mylogger.trace
62
+
63
+ appenders = mylogger.instance_variable_get :@appenders
64
+ assert_equal 2, appenders.length
65
+ assert_equal ['logfile', 'stderr'], appenders.map {|a| a.name}.sort
66
+
67
+ # yourlogger
68
+ yourlogger = ::Logging::Logger['yourlogger']
69
+ assert_equal 1, yourlogger.level
70
+ assert_equal true, yourlogger.additive
71
+ assert_equal false, yourlogger.trace
72
+
73
+ appenders = yourlogger.instance_variable_get :@appenders
74
+ assert_equal 2, appenders.length
75
+ assert_equal ['logfile', 'stderr'], appenders.map {|a| a.name}.sort
76
+
77
+ # cleanup
78
+ File.delete('temp.log') if File.exist?('temp.log')
79
+ end
80
+
16
81
  def test_define_levels_default
17
82
  empty = {}
18
83
  assert_equal empty, @levels
@@ -91,7 +156,7 @@ module TestLogging
91
156
  def test_format_as
92
157
  assert_equal false, ::Logging.const_defined?('OBJ_FORMAT')
93
158
 
94
- assert_raises(ArgumentError) {::Logging.format_as 'string'}
159
+ assert_raises(ArgumentError) {::Logging.format_as 'bob'}
95
160
  assert_raises(ArgumentError) {::Logging.format_as String}
96
161
  assert_raises(ArgumentError) {::Logging.format_as :what?}
97
162
 
@@ -113,6 +178,21 @@ module TestLogging
113
178
  assert ::Logging.const_defined?('OBJ_FORMAT')
114
179
  assert_equal :yaml, ::Logging::OBJ_FORMAT
115
180
  remove_const[:OBJ_FORMAT]
181
+
182
+ ::Logging.format_as 'string'
183
+ assert ::Logging.const_defined?('OBJ_FORMAT')
184
+ assert_equal :string, ::Logging::OBJ_FORMAT
185
+ remove_const[:OBJ_FORMAT]
186
+
187
+ ::Logging.format_as 'inspect'
188
+ assert ::Logging.const_defined?('OBJ_FORMAT')
189
+ assert_equal :inspect, ::Logging::OBJ_FORMAT
190
+ remove_const[:OBJ_FORMAT]
191
+
192
+ ::Logging.format_as 'yaml'
193
+ assert ::Logging.const_defined?('OBJ_FORMAT')
194
+ assert_equal :yaml, ::Logging::OBJ_FORMAT
195
+ remove_const[:OBJ_FORMAT]
116
196
  end
117
197
 
118
198
  end # class TestLogging