evegem 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,399 @@
1
+ require 'spec_helper'
2
+
3
+ module Eve
4
+
5
+ describe Messenger do
6
+
7
+ before(:each) do
8
+ @messenger = Messenger.new(:display => :string)
9
+ end
10
+
11
+ after(:each) do
12
+ File.delete("output.txt") if File.exist?("output.txt")
13
+ end
14
+
15
+ describe "file?" do
16
+
17
+ it "should be false if not a hash containing :filename" do
18
+ @messenger.file?.should == false
19
+ @messenger.display = { :filename => "blah.txt" }
20
+ @messenger.file?.should == true
21
+ end
22
+
23
+ end
24
+
25
+ describe "overwrite_file?" do
26
+
27
+ it "should be false if not a hash containing :filename" do
28
+ @messenger.overwrite_file?.should == false
29
+ @messenger.display = { :filename => "blah.txt" }
30
+ @messenger.overwrite_file?.should == false
31
+ end
32
+
33
+ it "should only be true if mode => :overwrite" do
34
+ @messenger.display = { :filename => "blah.txt", :mode => :overwrite }
35
+ @messenger.overwrite_file?.should == true
36
+ end
37
+
38
+ end
39
+
40
+
41
+ describe "was_printed?" do
42
+
43
+ it "should false by default" do
44
+ @messenger.was_printed?("a").should == false
45
+ end
46
+
47
+ it "Should not care about the flags" do
48
+ @messenger.print("x",:flag => :a)
49
+ @messenger.was_printed?("a").should == false
50
+ @messenger.was_printed?("x").should == true
51
+ end
52
+
53
+ end
54
+
55
+ describe "#history flags" do
56
+
57
+ [:error,:message].each do |flag|
58
+ it "should allow the #{flag} flag" do
59
+ @messenger.print("x",:flag => flag)
60
+ @messenger.history(flag).should == ["x"]
61
+ end
62
+ end
63
+
64
+ it "should understand the nil flag" do
65
+ @messenger.print("x",:flag => :a)
66
+ @messenger.print("y",:flag => :b)
67
+ @messenger.print("z",:flag => nil)
68
+ @messenger.history.should == ["x","y","z"]
69
+ end
70
+
71
+ end
72
+
73
+
74
+ describe "has_flag?" do
75
+
76
+ it "should be false if no messages with that flag" do
77
+ @messenger.has_flag?(:b).should == false
78
+
79
+ @messenger.print("x",:flag => :a)
80
+ @messenger.has_flag?(:b).should == false
81
+
82
+ @messenger.print("y",:flag => :b)
83
+ @messenger.has_flag?(:b).should == true
84
+ end
85
+
86
+ describe "#info" do
87
+
88
+ it "should add data" do
89
+ @messenger.infos?.should == false
90
+ @messenger.info?("aha").should == false
91
+ @messenger.info("aha")
92
+ @messenger.infos.should == [ "aha" ]
93
+ @messenger.infos?.should == true
94
+ @messenger.info?("aha").should == true
95
+ @messenger.info?("no aha").should == false
96
+ end
97
+
98
+ end
99
+
100
+ describe "#debug" do
101
+
102
+ it "should add data" do
103
+ @messenger.debugs?.should == false
104
+ @messenger.debug?("aha").should == false
105
+ @messenger.debug("aha")
106
+ @messenger.debugs.should == [ "aha" ]
107
+ @messenger.debugs?.should == true
108
+ @messenger.debug?("aha").should == true
109
+ @messenger.debug?("no aha").should == false
110
+ end
111
+
112
+ end
113
+
114
+ describe "#error" do
115
+
116
+ it "should add data" do
117
+ @messenger.errors?.should == false
118
+ @messenger.error?("aha").should == false
119
+ @messenger.error("aha")
120
+ @messenger.errors.should == [ "aha" ]
121
+ @messenger.errors?.should == true
122
+ @messenger.error?("aha").should == true
123
+ @messenger.error?("no aha").should == false
124
+ end
125
+
126
+ end
127
+
128
+ end
129
+
130
+ describe "#reset" do
131
+
132
+ it "should empty the cache" do
133
+ @messenger.print("x")
134
+ @messenger.error("y")
135
+ @messenger.debug("z")
136
+ @messenger.info("p")
137
+ @messenger.reset
138
+ @messenger.history.should == []
139
+ @messenger.errors?.should == false
140
+ @messenger.infos?.should == false
141
+ @messenger.debugs?.should == false
142
+ end
143
+
144
+ it "should keep filters" do
145
+ @messenger.add_filter(:info)
146
+ @messenger.add_filter("!error")
147
+ @messenger.reset
148
+ @messenger.ok_filters.should == ["info"]
149
+ @messenger.nok_filters.should == ["error"]
150
+ end
151
+
152
+ it "should keep piggy_backs, but reset them too" do
153
+ m1 = Messenger.new(:display => :string)
154
+ @messenger.piggy_backs << m1
155
+ @messenger.print("a")
156
+
157
+ @messenger.reset
158
+ @messenger.history.should == []
159
+ m1.history.should == []
160
+ end
161
+
162
+ end
163
+
164
+ describe "#print" do
165
+
166
+ it "should return a string if display :string" do
167
+ @messenger.display = :string
168
+ @messenger.print("x").should == "x"
169
+ end
170
+
171
+ it "should write to output if display :stdio (with options)" do
172
+ Kernel.should_receive(:ap).with("y",{ :indent => 2 })
173
+ @messenger.display = :stdio
174
+ @messenger.print("y", { :indent => 2})
175
+ end
176
+
177
+ it "should write to output if display :stdio (no options)" do
178
+ STDOUT.should_receive(:print).with("x")
179
+ @messenger.display = :stdio
180
+ @messenger.print("x")
181
+ end
182
+
183
+ it "should write to output if display :stdio (only flag option)" do
184
+ STDOUT.should_receive(:print).with("x")
185
+ @messenger.display = :stdio
186
+ @messenger.print("x",{ :flag => :message })
187
+ end
188
+
189
+ it "should write to file" do
190
+ @messenger.display = { :filename => "output.txt" }
191
+ @messenger.print("x")
192
+ @messenger.print("y")
193
+ IO.read("output.txt").should == "x\ny\n"
194
+ end
195
+
196
+ it "should overwrite to file if requested" do
197
+ @messenger.display = { :filename => "output.txt", :mode => :overwrite }
198
+ @messenger.print("x")
199
+ @messenger.print("y")
200
+ IO.read("output.txt").should == "y\n"
201
+ end
202
+
203
+
204
+ it "should understand basic print flags" do
205
+ @messenger.info("a")
206
+ @messenger.error("b")
207
+ @messenger.debug("c")
208
+ @messenger.history.should == ["a","b","c"]
209
+ end
210
+
211
+ describe "with flag" do
212
+
213
+ before(:each) do
214
+ @m1 = Messenger.new(:display => :string)
215
+ @m1.add_filter(:a)
216
+
217
+ @m2 = Messenger.new(:display => :string)
218
+ @m2.add_filter(:b)
219
+
220
+ @m3 = Messenger.new(:display => :string)
221
+ @m3.add_filter(:c)
222
+
223
+ @messenger.piggy_backs << @m1
224
+ @messenger.piggy_backs << @m2
225
+ @messenger.piggy_backs << @m3
226
+
227
+ end
228
+
229
+ it "should print to none by default" do
230
+ @messenger.print("hello")
231
+ @m1.history.should == []
232
+ @m2.history.should == []
233
+ @m3.history.should == []
234
+ end
235
+
236
+ it "should print to a single flag" do
237
+ @messenger.print("hello", :flag => :a)
238
+ @m1.history.should == ["hello"]
239
+ @m2.history.should == []
240
+ @m3.history.should == []
241
+ end
242
+
243
+ it "should print to a single flags" do
244
+ @messenger.print("hello", :flag => [:a,:b])
245
+ @m1.history.should == ["hello"]
246
+ @m2.history.should == ["hello"]
247
+ @m3.history.should == []
248
+ end
249
+
250
+
251
+ end
252
+
253
+ describe "eventmachine" do
254
+
255
+ it "should call send_data" do
256
+ em = MockConnection.new
257
+ @messenger.display = { :event_machine => em }
258
+ @messenger.print "hello"
259
+ em.data.should == ["hello"]
260
+ end
261
+
262
+ end
263
+
264
+ end
265
+
266
+ describe "#display" do
267
+
268
+ it "should be settable" do
269
+ @messenger.display = :a
270
+ @messenger.display.should == :a
271
+ end
272
+
273
+ it "should default to stdio" do
274
+ @messenger.display = nil
275
+ @messenger.display.should == :stdio
276
+ end
277
+
278
+ it "should default to :stdio" do
279
+ Messenger.new.display.should == :stdio
280
+ end
281
+
282
+ it "should be settable in constructor" do
283
+ @messenger.display = :blah
284
+ @messenger.display.should == :blah
285
+ end
286
+
287
+ it "should support event_machine" do
288
+ em = MockConnection.new
289
+ @messenger.display = { :event_machine => em }
290
+ @messenger.event_machine?.should == true
291
+ @messenger.event_machine.should == em
292
+ end
293
+
294
+ end
295
+
296
+ describe "#piggy_backs" do
297
+
298
+ before(:each) do
299
+ @m1 = Messenger.new(:display => :string)
300
+ @m2 = Messenger.new(:display => :string)
301
+ end
302
+
303
+ it "should track all the same messages" do
304
+ @messenger.piggy_backs << @m1
305
+ @messenger.piggy_backs << @m2
306
+
307
+ @messenger.print("a")
308
+ @m1.history.should == [ "a" ]
309
+ @m2.history.should == [ "a" ]
310
+ end
311
+
312
+ it "should allow resets" do
313
+ @messenger.piggy_backs << @m1
314
+ @messenger.print("a")
315
+ @m1.reset
316
+ @messenger.history.should == [ "a" ]
317
+ @m1.history.should == [ ]
318
+ end
319
+
320
+ end
321
+
322
+ describe "#filter" do
323
+
324
+ it "should no filters" do
325
+ @messenger.print("a")
326
+ @messenger.info("b")
327
+ @messenger.error("c")
328
+ @messenger.history.should == ["a","b","c"]
329
+ end
330
+
331
+ it "should only track messages of a certain type" do
332
+ @messenger.add_filter(:info)
333
+ @messenger.info("a")
334
+ @messenger.error("b")
335
+ @messenger.history.should == ["a"]
336
+ @messenger.errors?.should == false
337
+ end
338
+
339
+ it "should filter piggy backers separately" do
340
+ m1 = Messenger.new(:display => :string)
341
+ @messenger.piggy_backs << m1
342
+ @messenger.add_filter(:info)
343
+ m1.add_filter(:error)
344
+
345
+ @messenger.info("a")
346
+ @messenger.error("b")
347
+
348
+ @messenger.history.should == ["a"]
349
+ m1.history.should == ["b"]
350
+ end
351
+
352
+ it "should support nil" do
353
+ @messenger.add_filter(nil)
354
+ @messenger.print("a")
355
+ @messenger.error("b")
356
+ @messenger.history.should == ["a"]
357
+ end
358
+
359
+ it "should support ! flag" do
360
+ @messenger.add_filter("!")
361
+ @messenger.print("a")
362
+ @messenger.error("b")
363
+ @messenger.history.should == ["b"]
364
+ end
365
+
366
+ it "should support '' flag" do
367
+ @messenger.add_filter("")
368
+ @messenger.print("a")
369
+ @messenger.error("b")
370
+ @messenger.history.should == ["a"]
371
+ end
372
+
373
+ it "should support ! flags" do
374
+ @messenger.add_filter("!info")
375
+ @messenger.info("a")
376
+ @messenger.error("b")
377
+ @messenger.history.should == ["b"]
378
+ end
379
+
380
+ it "should support strings" do
381
+ @messenger.add_filter("info")
382
+ @messenger.info("a")
383
+ @messenger.error("b")
384
+ @messenger.history.should == ["a"]
385
+ end
386
+
387
+ it "should handle conflicting filters" do
388
+ @messenger.add_filter("info")
389
+ @messenger.add_filter("!info")
390
+ @messenger.info("a")
391
+ @messenger.error("b")
392
+ @messenger.history.should == ["a","b"]
393
+ end
394
+
395
+ end
396
+
397
+ end
398
+
399
+ end
@@ -0,0 +1,35 @@
1
+ require 'rubygems'
2
+ require 'rspec'
3
+
4
+ if ENV['RUN_COVERAGE'] == "1"
5
+ require 'simplecov'
6
+ system "mkdir -p ../public/coverage" unless File.exists?("../public/coverage")
7
+ SimpleCov.configure do
8
+ coverage_dir '../public/coverage'
9
+ end
10
+ SimpleCov.start
11
+ end
12
+
13
+ require File.dirname(__FILE__) + '/../lib/evegem'
14
+
15
+ RSpec.configure do |config|
16
+ config.mock_with :rspec
17
+ end
18
+
19
+ class MockConnection
20
+
21
+ # cattr_accessor :data
22
+ attr_accessor :app, :data, :server
23
+
24
+ def initialize
25
+ @data = []
26
+ end
27
+
28
+ def send_data(msg)
29
+ @data << msg
30
+ end
31
+
32
+ def close_connection
33
+ end
34
+
35
+ end
metadata ADDED
@@ -0,0 +1,276 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: evegem
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Andrew Forward
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-04 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: utest
16
+ requirement: &70245691871440 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.0.3
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70245691871440
25
+ - !ruby/object:Gem::Dependency
26
+ name: watchme
27
+ requirement: &70245691870540 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 0.0.1
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70245691870540
36
+ - !ruby/object:Gem::Dependency
37
+ name: awesome_print
38
+ requirement: &70245691869820 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70245691869820
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &70245691868800 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.2
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70245691868800
58
+ - !ruby/object:Gem::Dependency
59
+ name: rails
60
+ requirement: &70245691867800 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: 3.2.1
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70245691867800
69
+ - !ruby/object:Gem::Dependency
70
+ name: mysql2
71
+ requirement: &70245691866840 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - =
75
+ - !ruby/object:Gem::Version
76
+ version: 0.3.11
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: *70245691866840
80
+ - !ruby/object:Gem::Dependency
81
+ name: rack
82
+ requirement: &70245691865200 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - =
86
+ - !ruby/object:Gem::Version
87
+ version: 1.4.1
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *70245691865200
91
+ - !ruby/object:Gem::Dependency
92
+ name: eventmachine
93
+ requirement: &70245691863800 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - =
97
+ - !ruby/object:Gem::Version
98
+ version: 0.12.10
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: *70245691863800
102
+ - !ruby/object:Gem::Dependency
103
+ name: net-ssh
104
+ requirement: &70245691862720 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - =
108
+ - !ruby/object:Gem::Version
109
+ version: 2.3.0
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: *70245691862720
113
+ - !ruby/object:Gem::Dependency
114
+ name: redis
115
+ requirement: &70245691859080 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - =
119
+ - !ruby/object:Gem::Version
120
+ version: 2.2.0
121
+ type: :runtime
122
+ prerelease: false
123
+ version_requirements: *70245691859080
124
+ - !ruby/object:Gem::Dependency
125
+ name: rspec
126
+ requirement: &70245691858320 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *70245691858320
135
+ - !ruby/object:Gem::Dependency
136
+ name: autotest
137
+ requirement: &70245691857300 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *70245691857300
146
+ - !ruby/object:Gem::Dependency
147
+ name: autotest-fsevent
148
+ requirement: &70245691856500 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *70245691856500
157
+ - !ruby/object:Gem::Dependency
158
+ name: ZenTest
159
+ requirement: &70245691855700 !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: *70245691855700
168
+ - !ruby/object:Gem::Dependency
169
+ name: rb-fsevent
170
+ requirement: &70245691854740 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: *70245691854740
179
+ - !ruby/object:Gem::Dependency
180
+ name: geminabox
181
+ requirement: &70245691854000 !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ! '>='
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: *70245691854000
190
+ - !ruby/object:Gem::Dependency
191
+ name: simplecov
192
+ requirement: &70245691853280 !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: *70245691853280
201
+ description: A DSL for managing OSS Data Entry
202
+ email:
203
+ - andrew.forward@cenx.com
204
+ executables:
205
+ - eve
206
+ extensions: []
207
+ extra_rdoc_files: []
208
+ files:
209
+ - .gitignore
210
+ - Gemfile
211
+ - Rakefile
212
+ - autotest/discover.rb
213
+ - bin/eve
214
+ - config.ru
215
+ - config/database.yml.example
216
+ - config/reset_db.rb
217
+ - eve.gemspec
218
+ - lib/eve/application.rb
219
+ - lib/eve/ci.rake
220
+ - lib/eve/event_server.rb
221
+ - lib/eve/file_notifier_server.rb
222
+ - lib/eve/io.rb
223
+ - lib/eve/layout.rb
224
+ - lib/eve/message.rb
225
+ - lib/eve/messenger.rb
226
+ - lib/eve/registry.rb
227
+ - lib/eve/version.rb
228
+ - lib/eve/web_server.rb
229
+ - lib/evegem.rb
230
+ - lib/registry/base_registry.rb
231
+ - lib/registry/charlie_test.rb
232
+ - lib/registry/echo_test.rb
233
+ - lib/registry/empty_registry.rb
234
+ - spec/application_spec.rb
235
+ - spec/base_registry_spec.rb
236
+ - spec/event_server_spec.rb
237
+ - spec/file_notifier_server_spec.rb
238
+ - spec/files/niner_registry.rb
239
+ - spec/layout_spec.rb
240
+ - spec/message_spec.rb
241
+ - spec/messenger_spec.rb
242
+ - spec/spec_helper.rb
243
+ homepage: ''
244
+ licenses: []
245
+ post_install_message:
246
+ rdoc_options: []
247
+ require_paths:
248
+ - lib
249
+ required_ruby_version: !ruby/object:Gem::Requirement
250
+ none: false
251
+ requirements:
252
+ - - ! '>='
253
+ - !ruby/object:Gem::Version
254
+ version: '0'
255
+ required_rubygems_version: !ruby/object:Gem::Requirement
256
+ none: false
257
+ requirements:
258
+ - - ! '>='
259
+ - !ruby/object:Gem::Version
260
+ version: '0'
261
+ requirements: []
262
+ rubyforge_project:
263
+ rubygems_version: 1.8.10
264
+ signing_key:
265
+ specification_version: 3
266
+ summary: A DSL for managing OSS Data Entry
267
+ test_files:
268
+ - spec/application_spec.rb
269
+ - spec/base_registry_spec.rb
270
+ - spec/event_server_spec.rb
271
+ - spec/file_notifier_server_spec.rb
272
+ - spec/files/niner_registry.rb
273
+ - spec/layout_spec.rb
274
+ - spec/message_spec.rb
275
+ - spec/messenger_spec.rb
276
+ - spec/spec_helper.rb