reality-core 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/reality/logging.rb +48 -0
- data/reality-core.gemspec +1 -1
- data/test/test_logging.rb +55 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43244fb34b6e74b1281a583f71cdd1ba308391ce
|
4
|
+
data.tar.gz: 1cdbdaf9304e69c358f6f7448164cfcb84932e91
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb5958c12e4396ac98014749fc3063482d3822f5a1a0769ae70964a293ff7d2b6c82f0be585c2f958250781f3f78882d5d5bb02938727516cf2b68e99d56f18e
|
7
|
+
data.tar.gz: 8b7750bacc77d561bc64578d0d6775a29edb00262e3cede212da6d1a713f4e43090f897cae29550ca471dc7fdf14b8bdf3fe08de0baa85bef6c31070179c680e
|
data/lib/reality/logging.rb
CHANGED
@@ -75,5 +75,53 @@ module Reality
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
78
|
+
|
79
|
+
# Module that should be mixed into base test class to test dependent libraries.
|
80
|
+
# It is expected that the class this is mixed into supplies a assert_raise method.
|
81
|
+
module Assertions
|
82
|
+
# for the specified log container capture the log output during blocks
|
83
|
+
# execution and return as a string
|
84
|
+
def capture_logging(log_container, &block)
|
85
|
+
raise 'capture_logging called but no block supplied.' unless block_given?
|
86
|
+
logger = log_container.const_get(:Logger)
|
87
|
+
|
88
|
+
logdev = logger.instance_variable_get('@logdev')
|
89
|
+
original_dev = logdev.instance_variable_get('@dev')
|
90
|
+
|
91
|
+
capture_io = StringIO.new
|
92
|
+
begin
|
93
|
+
logdev.instance_variable_set('@dev', capture_io)
|
94
|
+
yield block
|
95
|
+
return capture_io.string
|
96
|
+
ensure
|
97
|
+
logdev.instance_variable_set('@dev', original_dev)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# For the specified log container, capture the log output during blocks
|
102
|
+
# execution and match specified message. A new line is appended to
|
103
|
+
# expected_message as the logging system appends one.
|
104
|
+
def assert_logging_message(log_container, expected_message, &block)
|
105
|
+
raise 'assert_logging_message called but no block supplied.' unless block_given?
|
106
|
+
|
107
|
+
result = capture_logging(log_container) do
|
108
|
+
yield block
|
109
|
+
end
|
110
|
+
|
111
|
+
assert_equal "#{expected_message}\n", result
|
112
|
+
end
|
113
|
+
|
114
|
+
# For the specified log container, capture the log output during blocks
|
115
|
+
# execution and match specified message. Also ensure an exception is raised
|
116
|
+
# with the same message
|
117
|
+
def assert_logging_error(log_container, expected_message, &block)
|
118
|
+
raise 'assert_logging_error called but no block supplied.' unless block_given?
|
119
|
+
assert_logging_message(log_container, expected_message) do
|
120
|
+
assert_raise(RuntimeError.new(expected_message)) do
|
121
|
+
yield block
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
78
126
|
end
|
79
127
|
end
|
data/reality-core.gemspec
CHANGED
data/test/test_logging.rb
CHANGED
@@ -65,4 +65,59 @@ class Reality::TestLogging < Reality::TestCase
|
|
65
65
|
assert_equal ::Logger::DEBUG, logger1.level
|
66
66
|
assert_equal ::Logger::INFO, logger2.level
|
67
67
|
end
|
68
|
+
|
69
|
+
class MyModule2
|
70
|
+
end
|
71
|
+
|
72
|
+
class MyFakeTest
|
73
|
+
include Test::Unit::Assertions
|
74
|
+
include Reality::Logging::Assertions
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_assertions
|
78
|
+
mytest = MyFakeTest.new
|
79
|
+
|
80
|
+
io = StringIO.new('', 'w')
|
81
|
+
Reality::Logging.configure(MyModule2, ::Logger::INFO, io)
|
82
|
+
|
83
|
+
assert_raise(RuntimeError.new('capture_logging called but no block supplied.')) do
|
84
|
+
mytest.capture_logging(MyModule2)
|
85
|
+
end
|
86
|
+
assert_raise(RuntimeError.new('assert_logging_message called but no block supplied.')) do
|
87
|
+
mytest.assert_logging_message(MyModule2, 'X')
|
88
|
+
end
|
89
|
+
assert_raise(RuntimeError.new('assert_logging_error called but no block supplied.')) do
|
90
|
+
mytest.assert_logging_error(MyModule2, 'X')
|
91
|
+
end
|
92
|
+
|
93
|
+
messages = mytest.capture_logging(MyModule2) do
|
94
|
+
MyModule2.info('Hello from log system')
|
95
|
+
end
|
96
|
+
assert_equal "Hello from log system\n", messages
|
97
|
+
|
98
|
+
assert_raise(RuntimeError.new('assert_logging_message called but no block supplied.')) do
|
99
|
+
mytest.assert_logging_message(MyModule2, 'Hello from log system')
|
100
|
+
end
|
101
|
+
|
102
|
+
mytest.assert_logging_message(MyModule2, 'Hello from log system') do
|
103
|
+
MyModule2.info('Hello from log system')
|
104
|
+
end
|
105
|
+
|
106
|
+
assert_raise(Test::Unit::AssertionFailedError.new("<\"Hello from log system\\n\"> expected but was\n<\"\">.")) do
|
107
|
+
mytest.assert_logging_message(MyModule2, 'Hello from log system') do
|
108
|
+
# There is no message
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
assert_raise(Test::Unit::AssertionFailedError.new('<RuntimeError(<Hello from log system>)> exception expected but none was thrown.')) do
|
113
|
+
mytest.assert_logging_error(MyModule2, 'Hello from log system') do
|
114
|
+
# Should fail as there is only a message and not an error
|
115
|
+
MyModule2.info('Hello from log system')
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
mytest.assert_logging_error(MyModule2, 'Error!') do
|
120
|
+
MyModule2.error('Error!')
|
121
|
+
end
|
122
|
+
end
|
68
123
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reality-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Donald
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|