evegem 0.1.2

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