vedeu 0.5.12 → 0.5.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31e9c17f2fcd8a9e852e9e8ebed87d34f1d7b5aa
4
- data.tar.gz: 43767a98407c836ddb20a6782f7828ab7ec7ce2e
3
+ metadata.gz: 27a3b30fd311b0147e59815b8665b9b0cfd337d9
4
+ data.tar.gz: 1dd71d249cb99304d00f7cb51a44345f73665b88
5
5
  SHA512:
6
- metadata.gz: 69e4146a2fa2ef01d4508344ec02b4557e4e4794e1f16ee43a7b691d58132d03f0494d9e76f7ce0adcdf5553d87f66420764460cd28fe7d61dd86be8764930a7
7
- data.tar.gz: f2996b4ca485971f2468367dc7448f0d1b06d94df945c0e64a178bb517c56ae19cce0cc69527839da2152a9564e557392744cabd64d24fc86de6630695152cdb
6
+ metadata.gz: 245b56f9f631573bad0ca75880c56b4f72b3bee92068ca49d67a94bf4435cd78d4111c747c57b55ec77bb9d1ee3f09790f24ee9e7738a744cee92c152ed7db44
7
+ data.tar.gz: 0a9b9d0bf6ada6f16396c56f6a683e5f104bddab17632f5a85c76765bb176e7b5053fc0f91e55a31ca2adbd7919a64e9056c4cb4850b0fc8e6f848fd0e5dc482
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.2
1
+ 2.2.3
data/lib/vedeu/all.rb CHANGED
@@ -2,6 +2,8 @@ require 'vedeu/version'
2
2
  require 'vedeu/runtime/launcher'
3
3
  require 'vedeu/runtime/bootstrap'
4
4
  require 'vedeu/exceptions'
5
+ require 'vedeu/log/lockless_log_device'
6
+ require 'vedeu/log/mono_logger'
5
7
  require 'vedeu/log/log'
6
8
  require 'vedeu/log/debug'
7
9
  require 'vedeu/log/timer'
@@ -108,7 +108,7 @@ module Vedeu
108
108
  # ':_hide_group_' event to which this named interface belongs will also hide
109
109
  # the interface.
110
110
  #
111
- # @return [void]
111
+ # @return [Array<Array<Array<Vedeu::Views::Char>>>]
112
112
  def hide
113
113
  Vedeu::Output.render(clear_buffer)
114
114
  end
@@ -141,7 +141,7 @@ module Vedeu
141
141
  # ':_show_group_' event to which this named interface belongs will also show
142
142
  # the interface.
143
143
  #
144
- # @return [void]
144
+ # @return [Array<Array<Array<Vedeu::Views::Char>>>]
145
145
  def show
146
146
  Vedeu::Output.render(buffer)
147
147
  end
@@ -168,7 +168,7 @@ module Vedeu
168
168
 
169
169
  # Clear the buffer.
170
170
  #
171
- # @return [void]
171
+ # @return [Array<Array<Vedeu::Views::Char>>]
172
172
  def clear_buffer
173
173
  @clear_buffer ||= Vedeu::Clear::NamedInterface.render(name)
174
174
  end
@@ -63,7 +63,7 @@ module Vedeu
63
63
  alias_method :interactive, :interactive!
64
64
 
65
65
  # Sets boolean to prevent user intervention. This is the same as setting
66
- # {#interactive!} to false.
66
+ # {include:Vedeu::Config::API#interactive!} to false.
67
67
  #
68
68
  # Vedeu.configure do
69
69
  # standalone! # => same as `standalone true` or `interactive false`
@@ -261,6 +261,11 @@ module Vedeu
261
261
  # Only log specific message types. A complete list of message types can
262
262
  # be found at {Vedeu::Log.message_types}.
263
263
  #
264
+ # Vedeu.configure do
265
+ # log_only :debug, :event
266
+ # # ...
267
+ # end
268
+ #
264
269
  # @param types [Array<Symbol>] The message types which should be logged.
265
270
  # @return [Array<Symbol>]
266
271
  def log_only(*types)
@@ -291,6 +296,11 @@ module Vedeu
291
296
  # other resources). By default the base path is just cwd but this will
292
297
  # not work for many applications.
293
298
  #
299
+ # Vedeu.configure do
300
+ # base_path '/path/to/application'
301
+ # # ...
302
+ # end
303
+ #
294
304
  # @param path [String]
295
305
  # @return [String]
296
306
  def base_path(path = nil)
@@ -64,7 +64,7 @@ module Vedeu
64
64
 
65
65
  # Renders the cursor.
66
66
  #
67
- # @return [void]
67
+ # @return [Array<Vedeu::Escape>]
68
68
  def render
69
69
  Vedeu::Output.render(visibility)
70
70
  end
@@ -55,6 +55,10 @@ module Vedeu
55
55
 
56
56
  private
57
57
 
58
+ # Build a new instance of the entity that is being repositioned and replace
59
+ # existing stored version.
60
+ #
61
+ # @return [Vedeu::Cursor|Vedeu::Geometry]
58
62
  def build_entity!
59
63
  @_entity ||= entity.new(name: name,
60
64
  y: coordinate.y_position,
@@ -14,7 +14,7 @@ module Vedeu
14
14
  # @param input [String|Symbol]
15
15
  # @param block [Proc]
16
16
  # @raise [Vedeu::InvalidSyntax] The required block was not given.
17
- # @return [Key]
17
+ # @return [Vedeu::Key]
18
18
  def initialize(input = nil, &block)
19
19
  fail Vedeu::InvalidSyntax, 'block not given' unless block_given?
20
20
 
@@ -0,0 +1,135 @@
1
+ module Vedeu
2
+
3
+ # Ensures we can always write to the log file by creating a lock-less
4
+ # log device.
5
+ #
6
+ class LocklessLogDevice < Logger::LogDevice
7
+
8
+ # Returns a new instance of Vedeu::LocklessLogDevice.
9
+ #
10
+ # @param log [void]
11
+ # @return [Vedeu::LocklessLogDevice]
12
+ def initialize(log = nil)
13
+ @dev = nil
14
+ @filename = nil
15
+
16
+ if log.respond_to?(:write) && log.respond_to?(:close)
17
+ @dev = log
18
+
19
+ else
20
+ @dev = open_logfile(log)
21
+ @dev.sync = true
22
+ @filename = log
23
+
24
+ end
25
+ end
26
+
27
+ # @param message [String]
28
+ # @return [void]
29
+ def write(message)
30
+ @dev.write(message)
31
+
32
+ rescue StandardError => exception
33
+ warn("log writing failed. #{exception}")
34
+ end
35
+
36
+ # @return [void]
37
+ def close
38
+ @dev.close
39
+ rescue
40
+ nil
41
+ end
42
+
43
+ private
44
+
45
+ # @param filename [String]
46
+ # @return [void]
47
+ def open_logfile(log)
48
+ if FileTest.exist?(log)
49
+ open(log, (File::WRONLY | File::APPEND))
50
+
51
+ else
52
+ logdev = open(log, (File::WRONLY | File::APPEND | File::CREAT))
53
+ logdev.sync = true
54
+ logdev
55
+
56
+ end
57
+ end
58
+
59
+ end # LocklessLogDevice
60
+
61
+ end # Vedeu
62
+
63
+ # module Vedeu
64
+
65
+ # # Ensures we can always write to the log file by creating a lock-less
66
+ # # log device.
67
+ # #
68
+ # class LocklessLogDevice < Logger::LogDevice
69
+
70
+ # # Returns a new instance of Vedeu::LocklessLogDevice.
71
+ # #
72
+ # # @param file_or_filename [void]
73
+ # # @return [Vedeu::LocklessLogDevice]
74
+ # def initialize(file_or_filename = nil)
75
+ # @file_or_filename = file_or_filename
76
+ # end
77
+
78
+ # # @param message [String]
79
+ # # @return [void]
80
+ # def write(message)
81
+ # device.write(message)
82
+
83
+ # rescue StandardError => exception
84
+ # warn("Log writing failed. #{exception}")
85
+
86
+ # end
87
+
88
+ # # @return [void]
89
+ # def close
90
+ # device.close
91
+
92
+ # rescue
93
+ # nil
94
+
95
+ # end
96
+
97
+ # protected
98
+
99
+ # # @!attribute [r] file_or_filename
100
+ # # @return [String]
101
+ # attr_reader :file_or_filename
102
+ # alias_method :file, :file_or_filename
103
+ # alias_method :filename, :file_or_filename
104
+
105
+ # private
106
+
107
+ # # @return [File]
108
+ # def device
109
+ # if file?
110
+ # file
111
+
112
+ # elsif exists?
113
+ # open(filename, (File::WRONLY | File::APPEND))
114
+
115
+ # else
116
+ # device = open(filename, (File::WRONLY | File::APPEND | File::CREAT))
117
+ # device.sync = true
118
+
119
+ # end
120
+ # end
121
+
122
+ # # @return [Boolean]
123
+ # def exists?
124
+ # FileTest.exist?(filename)
125
+ # end
126
+
127
+ # # @return [Boolean]
128
+ # def file?
129
+ # file_or_filename.respond_to?(:write) &&
130
+ # file_or_filename.respond_to?(:close)
131
+ # end
132
+
133
+ # end # LocklessLogDevice
134
+
135
+ # end # Vedeu
data/lib/vedeu/log/log.rb CHANGED
@@ -1,81 +1,5 @@
1
1
  module Vedeu
2
2
 
3
- # Allows the creation of a lock-less log device.
4
- #
5
- class MonoLogger < Logger
6
-
7
- # Create a trappable Logger instance.
8
- #
9
- # @param logdev [String|IO] The filename (String) or IO object (typically
10
- # STDOUT, STDERR or an open file).
11
- #
12
- def initialize(logdev)
13
- @level = DEBUG
14
- @default_formatter = Formatter.new
15
- @formatter = nil
16
- @logdev = LocklessLogDevice.new(logdev) if logdev
17
- end
18
-
19
- # Ensures we can always write to the log file by creating a lock-less
20
- # log device.
21
- #
22
- class LocklessLogDevice < LogDevice
23
-
24
- # Returns a new instance of Vedeu::LocklessLogDevice.
25
- #
26
- # @param log [void]
27
- # @return [void]
28
- def initialize(log = nil)
29
- @dev = nil
30
- @filename = nil
31
-
32
- if log.respond_to?(:write) && log.respond_to?(:close)
33
- @dev = log
34
-
35
- else
36
- @dev = open_logfile(log)
37
- @dev.sync = true
38
- @filename = log
39
-
40
- end
41
- end
42
-
43
- # @param message [String]
44
- # @return [void]
45
- def write(message)
46
- @dev.write(message)
47
-
48
- rescue StandardError => exception
49
- warn("log writing failed. #{exception}")
50
- end
51
-
52
- # @return [void]
53
- def close
54
- @dev.close
55
- rescue
56
- nil
57
- end
58
-
59
- private
60
-
61
- # @param filename [String]
62
- # @return [void]
63
- def open_logfile(filename)
64
- if FileTest.exist?(filename)
65
- open(filename, (File::WRONLY | File::APPEND))
66
-
67
- else
68
- logdev = open(filename, (File::WRONLY | File::APPEND | File::CREAT))
69
- logdev.sync = true
70
- logdev
71
-
72
- end
73
- end
74
-
75
- end # LocklessLogDevice
76
-
77
- end # MonoLogger
78
-
79
3
  # Provides the ability to log anything to the Vedeu log file.
80
4
  #
81
5
  class Log
@@ -0,0 +1,21 @@
1
+ module Vedeu
2
+
3
+ # Allows the creation of a lock-less log device.
4
+ #
5
+ class MonoLogger < Logger
6
+
7
+ # Create a trappable Logger instance.
8
+ #
9
+ # @param logdev [String|IO] The filename (String) or IO object (typically
10
+ # STDOUT, STDERR or an open file).
11
+ # @return [Vedeu::MonoLogger]
12
+ def initialize(logdev)
13
+ @level = Logger::DEBUG
14
+ @default_formatter = Logger::Formatter.new
15
+ @formatter = nil
16
+ @logdev = Vedeu::LocklessLogDevice.new(logdev) if logdev
17
+ end
18
+
19
+ end # MonoLogger
20
+
21
+ end # Vedeu
@@ -10,7 +10,7 @@ module Vedeu
10
10
 
11
11
  class << self
12
12
 
13
- # @return [void]
13
+ # @return [Array<Array<Vedeu::Views::Char>>]
14
14
  # @see #initialize
15
15
  def render(name)
16
16
  new(name).render
@@ -28,7 +28,7 @@ module Vedeu
28
28
  @name = name
29
29
  end
30
30
 
31
- # @return [void]
31
+ # @return [Array<Array<Vedeu::Views::Char>>]
32
32
  def render
33
33
  output
34
34
  end
@@ -15,7 +15,7 @@ module Vedeu
15
15
  # Return a new instance of Vedeu::Output.
16
16
  #
17
17
  # @param output [Array<Array<Vedeu::Views::Char>>]
18
- # @return [Output]
18
+ # @return [Vedeu::Output]
19
19
  def initialize(output)
20
20
  @output = output
21
21
  end
data/lib/vedeu/plugins.rb CHANGED
@@ -24,11 +24,9 @@ module Vedeu
24
24
  # @param plugin [Vedeu::Plugin]
25
25
  # @return [Array<void>]
26
26
  def register(name, plugin = false)
27
- if plugin && not_loaded?(name)
28
- Vedeu.log(type: :debug, message: "Registering plugin: #{name}")
27
+ Vedeu.log(type: :debug, message: "Attempting to register plugin: #{name}")
29
28
 
30
- plugins << plugin
31
- end
29
+ plugins << plugin if plugin && not_loaded?(name)
32
30
  end
33
31
 
34
32
  # Find all installed plugins and store them.
@@ -40,11 +40,11 @@ module Vedeu
40
40
  begin
41
41
  require gem_name unless enabled?
42
42
  rescue LoadError => error
43
- fail Vedeu::VedeuError,
44
- "Unable to load plugin #{gem_name} due to #{error}."
43
+ raise Vedeu::VedeuError,
44
+ "Unable to load plugin #{gem_name} due to #{error}."
45
45
  rescue => error
46
- fail Vedeu::VedeuError,
47
- "require '#{gem_name}' failed with #{error}."
46
+ raise Vedeu::VedeuError,
47
+ "require '#{gem_name}' failed with #{error}."
48
48
  end
49
49
 
50
50
  @enabled = true
@@ -220,7 +220,7 @@ module Vedeu
220
220
  IO.console
221
221
  end
222
222
 
223
- # @return [VirtualBuffer]
223
+ # @return [Vedeu::VirtualBuffer]
224
224
  def virtual
225
225
  @virtual ||= Vedeu::VirtualBuffer.new(height, width)
226
226
  end
data/lib/vedeu/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Vedeu
2
2
 
3
3
  # The current version of Vedeu.
4
- VERSION = '0.5.12'
4
+ VERSION = '0.5.13'
5
5
 
6
6
  end
@@ -6,10 +6,17 @@ module Vedeu
6
6
 
7
7
  let(:described) { Vedeu::RenderBorder }
8
8
  let(:instance) { described.new(border) }
9
- let(:border) { Vedeu::Border.new(enabled: enabled, name: _name) }
9
+ let(:border) {
10
+ Vedeu::Border.new(enabled: enabled,
11
+ name: _name,
12
+ title: title,
13
+ caption: caption)
14
+ }
10
15
  let(:visible) { false }
11
16
  let(:enabled) { false }
12
17
  let(:_name) { 'Vedeu::RenderBorder' }
18
+ let(:title) {}
19
+ let(:caption) {}
13
20
 
14
21
  it { described.must_respond_to(:with) }
15
22
 
@@ -20,7 +27,7 @@ module Vedeu
20
27
 
21
28
  describe '#render' do
22
29
  let(:geometry) {
23
- Vedeu::Geometry.new(name: _name, x: 1, xn: 3, y: 1, yn: 3)
30
+ Vedeu::Geometry.new(name: _name, x: 1, xn: 7, y: 1, yn: 4)
24
31
  }
25
32
  let(:interface) {
26
33
  Vedeu::Interface.new(name: _name, visible: visible)
@@ -46,6 +53,30 @@ module Vedeu
46
53
  context 'when the border is enabled' do
47
54
  let(:enabled) { true }
48
55
 
56
+ context 'and a title is given' do
57
+ let(:title) { 'T' }
58
+
59
+ # @todo Add more tests.
60
+ # it { skip }
61
+ end
62
+
63
+ context 'and a title is not given' do
64
+ # @todo Add more tests.
65
+ # it { skip }
66
+ end
67
+
68
+ context 'and a caption is given' do
69
+ let(:caption) { 'C' }
70
+
71
+ # @todo Add more tests.
72
+ # it { skip }
73
+ end
74
+
75
+ context 'and a caption is not given' do
76
+ # @todo Add more tests.
77
+ # it { skip }
78
+ end
79
+
49
80
  # @todo Add more tests.
50
81
  # it { skip }
51
82
  end
@@ -9,6 +9,11 @@ end # YourApp
9
9
 
10
10
  module Vedeu
11
11
 
12
+ class SomeRenderer
13
+ end # SomeRenderer
14
+ class OtherRenderer
15
+ end # OtherRenderer
16
+
12
17
  module Config
13
18
 
14
19
  describe API do
@@ -235,7 +240,22 @@ module Vedeu
235
240
  end
236
241
 
237
242
  describe '#renderer' do
243
+ let(:some) { Vedeu::SomeRenderer.new }
244
+ let(:other) { Vedeu::OtherRenderer.new }
245
+
246
+ # before do
247
+ # Vedeu::Configuration.stubs(:renderers).
248
+ # returns([some])
249
+ # end
250
+
238
251
  it { instance.must_respond_to(:renderers) }
252
+
253
+ # it 'sets the options to the desired value' do
254
+ # configuration = Vedeu.configure do
255
+ # renderer proc { other }
256
+ # end
257
+ # configuration.renderers.must_equal([some, other])
258
+ # end
239
259
  end
240
260
 
241
261
  describe '#root' do
@@ -100,17 +100,32 @@ module Vedeu
100
100
  end
101
101
 
102
102
  context 'when the server is enabled' do
103
+ let(:enabled) { true }
103
104
 
104
105
  context 'and the server is running' do
105
- # @todo Add more tests.
106
- # it { subject.must_equal(:running) }
107
- # it { skip }
106
+ let(:running) { true }
107
+
108
+ it {
109
+ Vedeu.expects(:log).
110
+ with(type: :drb,
111
+ message: "Attempting to start: 'druby://localhost:21420'")
112
+ Vedeu.expects(:log).
113
+ with(type: :drb,
114
+ message: "Already started: 'druby://localhost:21420'")
115
+ subject
116
+ }
108
117
  end
109
118
 
110
119
  context 'and the server is not running' do
111
- # @todo Add more tests.
112
- # it { subject.must_equal(:stopped) }
113
- # it { skip }
120
+ it {
121
+ Vedeu.expects(:log).
122
+ with(type: :drb,
123
+ message: "Attempting to start: 'druby://localhost:21420'")
124
+ Vedeu.expects(:log).
125
+ with(type: :drb,
126
+ message: "Starting: 'druby://localhost:21420'")
127
+ subject
128
+ }
114
129
  end
115
130
 
116
131
  end
@@ -146,17 +161,35 @@ module Vedeu
146
161
  end
147
162
 
148
163
  context 'when the server is enabled' do
164
+ let(:enabled) { true }
149
165
 
150
166
  context 'and the server is running' do
151
- # @todo Add more tests.
152
- # it { subject.must_equal(:running) }
153
- # it { skip }
167
+ let(:running) { true }
168
+
169
+ it {
170
+ Vedeu.expects(:log).
171
+ with(type: :drb,
172
+ message: "Attempting to stop: 'druby://localhost:21420'")
173
+ Vedeu.expects(:log).
174
+ with(type: :drb,
175
+ message: "Stopping: 'druby://localhost:21420'")
176
+ Vedeu.expects(:log).
177
+ with(type: :drb,
178
+ message: "Attempted to #join on DRb.thread.")
179
+ subject
180
+ }
154
181
  end
155
182
 
156
183
  context 'and the server is not running' do
157
- # @todo Add more tests.
158
- # it { subject.must_equal(:stopped) }
159
- # it { skip }
184
+ it {
185
+ Vedeu.expects(:log).
186
+ with(type: :drb,
187
+ message: "Attempting to stop: 'druby://localhost:21420'")
188
+ Vedeu.expects(:log).
189
+ with(type: :drb,
190
+ message: "Already stopped: 'druby://localhost:21420'")
191
+ subject
192
+ }
160
193
  end
161
194
 
162
195
  end
@@ -44,6 +44,11 @@ module Vedeu
44
44
  end
45
45
  end
46
46
 
47
+ describe '.find' do
48
+ # @todo Add more tests
49
+ # it { skip }
50
+ end
51
+
47
52
  describe '.registered?' do
48
53
  let(:alias_name) { :alias_test }
49
54
 
@@ -103,17 +108,29 @@ module Vedeu
103
108
  end
104
109
 
105
110
  describe '.trigger' do
106
- let(:alias_name) {}
111
+ let(:alias_name) { :some_alias }
107
112
  let(:args) {}
108
113
 
109
114
  subject { described.trigger(alias_name, *args) }
110
115
 
111
116
  context 'when the alias name is registered' do
112
- # @todo Add more tests.
113
- # it { skip }
117
+ before do
118
+ Vedeu::Trigger.stubs(:trigger)
119
+
120
+ described.add(:some_alias, :some_event)
121
+ described.add(:some_alias, :other_event)
122
+ end
123
+
124
+ it {
125
+ Vedeu::Trigger.expects(:trigger).with(:some_event, nil)
126
+ Vedeu::Trigger.expects(:trigger).with(:other_event, nil)
127
+ subject
128
+ }
114
129
  end
115
130
 
116
131
  context 'when the alias name is not registered' do
132
+ let(:alias_name) {}
133
+
117
134
  it { subject.must_equal([]) }
118
135
  end
119
136
  end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe LocklessLogDevice do
6
+
7
+ let(:described) { Vedeu::LocklessLogDevice }
8
+ let(:instance) { described.new(file_or_filename) }
9
+ let(:file_or_filename) {}
10
+
11
+ describe '#initialize' do
12
+ # it { instance.must_be_instance_of(described) }
13
+ # it {
14
+ # instance.instance_variable_get('@file_or_filename').
15
+ # must_equal(file_or_filename)
16
+ # }
17
+ end
18
+
19
+ describe '#write' do
20
+ subject { instance.write(message) }
21
+ end
22
+
23
+ describe '#close' do
24
+ subject { instance.close }
25
+ end
26
+
27
+ end # LocklessLogDevice
28
+
29
+ end # Vedeu
@@ -0,0 +1,31 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe MonoLogger do
6
+
7
+ let(:described) { Vedeu::MonoLogger }
8
+ let(:instance) { described.new(logdev) }
9
+ let(:logdev) {}
10
+
11
+ describe '#initialize' do
12
+ it { instance.must_be_instance_of(described) }
13
+ it { instance.instance_variable_get('@level').must_equal(Logger::DEBUG) }
14
+ it {
15
+ instance.instance_variable_get('@default_formatter').
16
+ must_be_instance_of(Logger::Formatter)
17
+ }
18
+ it { instance.instance_variable_get('@Formatter').must_equal(nil) }
19
+
20
+ context 'when a log device is given' do
21
+ # it { instance.instance_variable_get('@logdev').must_be_instance_of(Vedeu::LocklessLogDevice) }
22
+ end
23
+
24
+ context 'when a log device is not given' do
25
+ # it { instance.instance_variable_get('@logdev').must_be_instance_of(Vedeu::LocklessLogDevice) }
26
+ end
27
+ end
28
+
29
+ end # MonoLogger
30
+
31
+ end # Vedeu
@@ -26,8 +26,9 @@ module Vedeu
26
26
  let(:virtual_buffer) { [] }
27
27
 
28
28
  before do
29
+ Vedeu::Configuration.stubs(:drb?).returns(drb)
29
30
  # Vedeu::Renderers::HTML.stubs(:to_file)
30
- Vedeu::VirtualBuffers.stubs(:retrieve).returns(virtual_buffer)
31
+ # Vedeu::VirtualBuffers.stubs(:retrieve).returns(virtual_buffer)
31
32
  end
32
33
 
33
34
  it {
@@ -37,7 +37,6 @@ module Vedeu
37
37
 
38
38
  describe '#execute!' do
39
39
  before do
40
- Configuration.stubs(:configure)# .returns(test_configuration)
41
40
  Application.stubs(:start)
42
41
  Kernel.stubs(:exit)
43
42
  Kernel.stubs(:puts)
@@ -48,6 +47,32 @@ module Vedeu
48
47
  it 'returns 0 for successful execution' do
49
48
  subject.must_equal(0)
50
49
  end
50
+
51
+ context 'when an uncaught exception occurs' do
52
+ before do
53
+ Vedeu::Application.stubs(:start).raises(StandardError, 'Oops!')
54
+ Vedeu::Configuration.stubs(:debug?).returns(debug)
55
+ end
56
+
57
+ context 'but debugging is disabled' do
58
+ let(:debug) { false }
59
+
60
+ it {
61
+ Vedeu.expects(:log_stdout).with(type: :error, message: 'Oops!')
62
+ subject
63
+ }
64
+ end
65
+
66
+ context 'and debugging is enabled' do
67
+ let(:debug) { true }
68
+
69
+ # Need to stub a backtrace.
70
+ # it {
71
+ # Vedeu.expects(:log_stdout).with(type: :error, message: 'Oops!')
72
+ # subject
73
+ # }
74
+ end
75
+ end
51
76
  end
52
77
 
53
78
  end # Launcher
data/vedeu.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'guard', '2.13.0'
24
24
  spec.add_development_dependency 'guard-minitest', '2.4.4'
25
25
  spec.add_development_dependency 'minitest', '5.8.0'
26
- spec.add_development_dependency 'minitest-reporters', '1.0.19'
26
+ spec.add_development_dependency 'minitest-reporters', '1.0.20'
27
27
  spec.add_development_dependency 'mocha', '1.1.0'
28
28
  spec.add_development_dependency 'pry', '0.10.1'
29
29
  spec.add_development_dependency 'rubocop', '0.33.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.12
4
+ version: 0.5.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-16 00:00:00.000000000 Z
11
+ date: 2015-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.19
61
+ version: 1.0.20
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.19
68
+ version: 1.0.20
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -348,7 +348,9 @@ files:
348
348
  - lib/vedeu/input/mapper.rb
349
349
  - lib/vedeu/internal_api.rb
350
350
  - lib/vedeu/log/debug.rb
351
+ - lib/vedeu/log/lockless_log_device.rb
351
352
  - lib/vedeu/log/log.rb
353
+ - lib/vedeu/log/mono_logger.rb
352
354
  - lib/vedeu/log/timer.rb
353
355
  - lib/vedeu/models/cell.rb
354
356
  - lib/vedeu/models/escape.rb
@@ -506,7 +508,9 @@ files:
506
508
  - test/lib/vedeu/input/mapper_test.rb
507
509
  - test/lib/vedeu/internal_api_test.rb
508
510
  - test/lib/vedeu/log/debug_test.rb
511
+ - test/lib/vedeu/log/lockless_log_device_test.rb
509
512
  - test/lib/vedeu/log/log_test.rb
513
+ - test/lib/vedeu/log/mono_logger_test.rb
510
514
  - test/lib/vedeu/log/timer_test.rb
511
515
  - test/lib/vedeu/models/cell_test.rb
512
516
  - test/lib/vedeu/models/escape_test.rb
@@ -609,7 +613,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
609
613
  version: '0'
610
614
  requirements: []
611
615
  rubyforge_project:
612
- rubygems_version: 2.4.8
616
+ rubygems_version: 2.4.5.1
613
617
  signing_key:
614
618
  specification_version: 4
615
619
  summary: A terminal case of wonderland.
@@ -692,7 +696,9 @@ test_files:
692
696
  - test/lib/vedeu/input/mapper_test.rb
693
697
  - test/lib/vedeu/internal_api_test.rb
694
698
  - test/lib/vedeu/log/debug_test.rb
699
+ - test/lib/vedeu/log/lockless_log_device_test.rb
695
700
  - test/lib/vedeu/log/log_test.rb
701
+ - test/lib/vedeu/log/mono_logger_test.rb
696
702
  - test/lib/vedeu/log/timer_test.rb
697
703
  - test/lib/vedeu/models/cell_test.rb
698
704
  - test/lib/vedeu/models/escape_test.rb