vedeu 0.5.12 → 0.5.13

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.
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