test/dummy_source.rb (1228B) - raw
1 #!/usr/bin/ruby
2
3 require 'sup'
4 require 'stringio'
5 require 'rmail'
6 require 'uri'
7
8 module Redwood
9
10 class DummySource < Source
11
12 attr_accessor :messages
13 attr_writer :fallback_date
14
15 def initialize uri, last_date=nil, usual=true, archived=false, id=nil, labels=[]
16 super uri, usual, archived, id
17 @messages = nil
18 @fallback_date = Time.utc 2001, 2, 3, 4, 56, 57
19 end
20
21 def start_offset
22 0
23 end
24
25 def end_offset
26 # should contain the number of test messages -1
27 return @messages ? @messages.length - 1 : 0
28 end
29
30 def with_file_for id
31 fn = @messages[id]
32 File.open(fn, 'rb') { |f| yield f }
33 end
34
35 def load_header id
36 with_file_for(id) { |f| parse_raw_email_header f }
37 end
38
39 def load_message id
40 with_file_for(id) { |f| RMail::Parser.read f }
41 end
42
43 def raw_header id
44 ret = ""
45 with_file_for(id) do |f|
46 until f.eof? || (l = f.gets) =~ /^$/
47 ret += l
48 end
49 end
50 ret
51 end
52
53 def raw_message id
54 with_file_for(id) { |f| f.read }
55 end
56
57 def each_raw_message_line id
58 with_file_for(id) do |f|
59 until f.eof?
60 yield f.gets
61 end
62 end
63 end
64
65 def fallback_date_for_message id
66 @fallback_date
67 end
68 end
69
70 end
71
72 # vim:noai:ts=2:sw=2:
73