maildir 2.1.0 → 2.2.0
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 +7 -0
- data/README.rdoc +11 -3
- data/Rakefile +4 -2
- data/lib/maildir/message.rb +6 -3
- data/lib/maildir/version.rb +1 -1
- data/test/helper.rb +40 -0
- data/test/test_maildir.rb +29 -2
- data/test/test_message.rb +9 -10
- data/test/test_serializers.rb +2 -2
- data/test/test_unique_name.rb +8 -8
- metadata +27 -39
- data/test/test_helper.rb +0 -33
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c1fb9ccc7242532f5e36faf35d23d198f3bbaf60
|
4
|
+
data.tar.gz: e110f4de262ddefd243c3472b82b28a69881bb87
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1ee591c840b4916db962d5c7cdb865311cd58f54b4bf78710fa32606cdd38867ff5a525ca1d1e53b48bc36fddf27134eacf436ff29f5d355e398cf604aa9eecb
|
7
|
+
data.tar.gz: 3ecb6b1ee524b73f321669d5fe734adc8aeac735d5c9a395471ff162a876e00ad2b288ad1d7f3728ff8c0f7d7c3244d7a65371f0d190413fd0b7b40d912b9ffc
|
data/README.rdoc
CHANGED
@@ -15,6 +15,7 @@ New messages are initially written to a "tmp" directory with an automatically-ge
|
|
15
15
|
While the maildir format was created for email, it works well for arbitrary data. This library can read & write email messages or arbitrary data. See Pluggable serializers for more.
|
16
16
|
|
17
17
|
{<img src="https://secure.travis-ci.org/ktheory/maildir.png" />}[http://travis-ci.org/ktheory/maildir]
|
18
|
+
{<img src="https://codeclimate.com/github/ktheory/maildir.png" />}[https://codeclimate.com/github/ktheory/maildir]
|
18
19
|
|
19
20
|
|
20
21
|
== Install
|
@@ -119,8 +120,11 @@ As of version 1.0.0, the Maildir::Serializer::Base can write IO streams as well
|
|
119
120
|
|
120
121
|
message.add(STDIN)
|
121
122
|
|
122
|
-
This will use
|
123
|
-
and degrade gracefully in Ruby 1.8.
|
123
|
+
This will use the more efficient IO.copy_stream method from Ruby 1.9+ if
|
124
|
+
available, and degrade gracefully in Ruby 1.8. (Important note: Please be aware
|
125
|
+
that Ruby 1.8.x is no longer officially supported by the maildir gem; see
|
126
|
+
[.travis.yml](https://github.com/ktheory/maildir/blob/master/.travis.yml) for a
|
127
|
+
list of currently-supported Ruby versions.)
|
124
128
|
|
125
129
|
As of version 1.0.2, serializers are autoloaded. Thus it is no longer necessary to manually require them.
|
126
130
|
|
@@ -147,6 +151,10 @@ It's trivial to create a custom serializer. Implement the following two methods:
|
|
147
151
|
|
148
152
|
* Aaron Suggs (github[http://github.com/ktheory])
|
149
153
|
|
154
|
+
== Maintainer
|
155
|
+
|
156
|
+
* Todd A. Jacobs (github[http://github.com/codegnome])
|
157
|
+
|
150
158
|
== Contributors
|
151
159
|
|
152
160
|
* Niklas E. Cathor (github[http://github.com/nilclass])
|
@@ -156,4 +164,4 @@ It's trivial to create a custom serializer. Implement the following two methods:
|
|
156
164
|
|
157
165
|
== Copyright
|
158
166
|
|
159
|
-
Copyright (c) 2010 Aaron Suggs. See LICENSE for details.
|
167
|
+
Copyright (c) 2010-2014 Aaron Suggs. See LICENSE for details.
|
data/Rakefile
CHANGED
data/lib/maildir/message.rb
CHANGED
@@ -134,10 +134,13 @@ class Maildir::Message
|
|
134
134
|
self.flags = (flags << flag.upcase)
|
135
135
|
end
|
136
136
|
|
137
|
-
# Removes
|
137
|
+
# Removes flags from a message.
|
138
138
|
# Returns the message's key if successful, false otherwise.
|
139
|
-
|
140
|
-
|
139
|
+
#
|
140
|
+
# flags:: String or Array
|
141
|
+
def remove_flag(flags)
|
142
|
+
return self.flags if flags.blank?
|
143
|
+
self.flags = self.flags.reject { |f| f =~ /[#{Array(flags).join}]/i }
|
141
144
|
end
|
142
145
|
|
143
146
|
# Returns the filename of the message
|
data/lib/maildir/version.rb
CHANGED
data/test/helper.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/pride'
|
4
|
+
require 'shoulda'
|
5
|
+
require 'maildir'
|
6
|
+
|
7
|
+
# Require all the serializers
|
8
|
+
serializers = File.expand_path('../../lib/maildir/serializer/*.rb', __FILE__)
|
9
|
+
Dir.glob(serializers).each do |serializer|
|
10
|
+
require serializer
|
11
|
+
end
|
12
|
+
|
13
|
+
class Minitest::Test
|
14
|
+
# Create a reusable maildir that's cleaned up when the tests are done
|
15
|
+
def temp_maildir
|
16
|
+
Maildir.new("/tmp/maildir_test")
|
17
|
+
end
|
18
|
+
|
19
|
+
def setup
|
20
|
+
# Wait until everything's loaded and tests are running to require FakeFS
|
21
|
+
require 'fakefs'
|
22
|
+
end
|
23
|
+
|
24
|
+
# create the subdir tree:
|
25
|
+
# | INBOX
|
26
|
+
# |-- a
|
27
|
+
# | |-- x
|
28
|
+
# | |-- y
|
29
|
+
# |-- b
|
30
|
+
def setup_subdirs(maildir)
|
31
|
+
%w(a b a.x a.y).each do |x|
|
32
|
+
Maildir.new(File.join(maildir.path, ".#{x}"))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Test that objects are neither nil nor empty
|
37
|
+
def assert_not_empty(obj, msg='')
|
38
|
+
assert !obj.nil? && !obj.empty?, msg
|
39
|
+
end
|
40
|
+
end
|
data/test/test_maildir.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
class TestMaildir < Test
|
1
|
+
require_relative 'helper'
|
2
|
+
class TestMaildir < Minitest::Test
|
3
3
|
|
4
4
|
context "A maildir" do
|
5
5
|
setup do
|
@@ -101,6 +101,33 @@ class TestMaildir < Test::Unit::TestCase
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
context "multiple flags" do
|
105
|
+
should "be added in sorted order" do
|
106
|
+
sorted_flags = 'FS'
|
107
|
+
unsorted_flags = 'SF'
|
108
|
+
|
109
|
+
@message = temp_maildir.add("")
|
110
|
+
@message.process
|
111
|
+
@message.add_flag(unsorted_flags)
|
112
|
+
|
113
|
+
assert_equal sorted_flags.split(''), @message.flags
|
114
|
+
end
|
115
|
+
|
116
|
+
should "be removed from flag list" do
|
117
|
+
flags_to_add = 'FSXYZ'
|
118
|
+
flags_to_remove = 'XYZ'
|
119
|
+
flags_remaining = 'FS'
|
120
|
+
|
121
|
+
@message = temp_maildir.add("")
|
122
|
+
@message.process
|
123
|
+
@message.add_flag(flags_to_add)
|
124
|
+
assert_equal flags_to_add.split(''), @message.flags
|
125
|
+
|
126
|
+
@message.remove_flag(flags_to_remove)
|
127
|
+
assert_equal flags_remaining.split(''), @message.flags
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
104
131
|
context "Maildirs with the same path" do
|
105
132
|
should "be identical" do
|
106
133
|
another_maildir = Maildir.new(temp_maildir.path, false)
|
data/test/test_message.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
class TestMessage < Test
|
1
|
+
require_relative 'helper'
|
2
|
+
class TestMessage < Minitest::Test
|
3
3
|
|
4
4
|
context "A message" do
|
5
5
|
setup do
|
@@ -53,7 +53,7 @@ class TestMessage < Test::Unit::TestCase
|
|
53
53
|
end
|
54
54
|
|
55
55
|
should "not be writable" do
|
56
|
-
|
56
|
+
assert_raises RuntimeError do
|
57
57
|
@message.write("nope!")
|
58
58
|
end
|
59
59
|
end
|
@@ -95,7 +95,7 @@ class TestMessage < Test::Unit::TestCase
|
|
95
95
|
end
|
96
96
|
|
97
97
|
should "not be writable" do
|
98
|
-
|
98
|
+
assert_raises RuntimeError do
|
99
99
|
@message.write("nope!")
|
100
100
|
end
|
101
101
|
end
|
@@ -112,7 +112,7 @@ class TestMessage < Test::Unit::TestCase
|
|
112
112
|
info = "2,FRS"
|
113
113
|
@message.info = "2,FRS"
|
114
114
|
assert_equal @message.info, info
|
115
|
-
assert_match
|
115
|
+
assert_match(/#{info}$/, @message.path)
|
116
116
|
end
|
117
117
|
|
118
118
|
should "add and remove flags" do
|
@@ -141,7 +141,7 @@ class TestMessage < Test::Unit::TestCase
|
|
141
141
|
@message.flags = arg
|
142
142
|
assert_equal results, @message.flags
|
143
143
|
path_suffix = "#{Maildir::Message::INFO}#{results.join('')}"
|
144
|
-
assert_match
|
144
|
+
assert_match(/#{path_suffix}$/, @message.path)
|
145
145
|
end
|
146
146
|
end
|
147
147
|
end
|
@@ -180,14 +180,13 @@ class TestMessage < Test::Unit::TestCase
|
|
180
180
|
end
|
181
181
|
|
182
182
|
should "raise error for data" do
|
183
|
-
|
183
|
+
assert_raises Errno::ENOENT do
|
184
184
|
@message.data
|
185
185
|
end
|
186
186
|
assert @message.frozen?
|
187
187
|
end
|
188
188
|
|
189
189
|
should "not be processed" do
|
190
|
-
old_key = @message.key
|
191
190
|
assert_equal false, @message.process
|
192
191
|
assert @message.frozen?
|
193
192
|
end
|
@@ -208,9 +207,9 @@ class TestMessage < Test::Unit::TestCase
|
|
208
207
|
should "differ" do
|
209
208
|
@message1 = temp_maildir.add("")
|
210
209
|
@message2 = temp_maildir.add("")
|
211
|
-
assert_equal
|
210
|
+
assert_equal(-1, @message1 <=> @message2)
|
212
211
|
assert_equal 1, @message2 <=> @message1
|
213
|
-
|
212
|
+
refute_equal @message1, @message2
|
214
213
|
end
|
215
214
|
end
|
216
215
|
|
data/test/test_serializers.rb
CHANGED
data/test/test_unique_name.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
class TestUniqueName < Test
|
1
|
+
require_relative 'helper'
|
2
|
+
class TestUniqueName < Minitest::Test
|
3
3
|
|
4
4
|
context "A UniqueName" do
|
5
5
|
setup do
|
@@ -17,27 +17,27 @@ class TestUniqueName < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
should "begin with timestamp" do
|
20
|
-
assert_match
|
20
|
+
assert_match(/^#{@now.to_i}/, @name)
|
21
21
|
end
|
22
22
|
|
23
23
|
should "end with hostname" do
|
24
|
-
assert_match
|
24
|
+
assert_match(/#{Socket.gethostname}$/, @name)
|
25
25
|
end
|
26
26
|
|
27
27
|
should "be unique when created in the same microsecond" do
|
28
28
|
@new_name = Maildir::UniqueName.new
|
29
29
|
# Set @now be identical in both UniqueName instances
|
30
30
|
@new_name.send(:instance_variable_set, :@now, @now)
|
31
|
-
|
31
|
+
refute_equal @name, @new_name.to_s
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
should "be chronological" do
|
35
35
|
@name1 = Maildir::UniqueName.new
|
36
36
|
@name1.send(:instance_variable_set, :@now, Time.at(0.000009))
|
37
|
-
|
37
|
+
|
38
38
|
@name2 = Maildir::UniqueName.new
|
39
39
|
@name2.send(:instance_variable_set, :@now, Time.at(0.100000))
|
40
|
-
|
40
|
+
|
41
41
|
assert_operator @name2.to_s, :>, @name1.to_s
|
42
42
|
end
|
43
43
|
|
metadata
CHANGED
@@ -1,94 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: maildir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Aaron Suggs
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-02-03 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: shoulda
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: mail
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: json
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: fakefs
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: 0.3.2
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: 0.3.2
|
94
83
|
description: A ruby library for reading and writing arbitrary messages in DJB's maildir
|
@@ -98,6 +87,10 @@ executables: []
|
|
98
87
|
extensions: []
|
99
88
|
extra_rdoc_files: []
|
100
89
|
files:
|
90
|
+
- LICENSE
|
91
|
+
- README.rdoc
|
92
|
+
- Rakefile
|
93
|
+
- lib/maildir.rb
|
101
94
|
- lib/maildir/message.rb
|
102
95
|
- lib/maildir/serializer/base.rb
|
103
96
|
- lib/maildir/serializer/json.rb
|
@@ -106,43 +99,38 @@ files:
|
|
106
99
|
- lib/maildir/serializer/yaml.rb
|
107
100
|
- lib/maildir/unique_name.rb
|
108
101
|
- lib/maildir/version.rb
|
109
|
-
-
|
110
|
-
- LICENSE
|
111
|
-
- README.rdoc
|
112
|
-
- Rakefile
|
113
|
-
- test/test_helper.rb
|
102
|
+
- test/helper.rb
|
114
103
|
- test/test_maildir.rb
|
115
104
|
- test/test_message.rb
|
116
105
|
- test/test_serializers.rb
|
117
106
|
- test/test_unique_name.rb
|
118
107
|
homepage: http://github.com/ktheory/maildir
|
119
108
|
licenses: []
|
109
|
+
metadata: {}
|
120
110
|
post_install_message:
|
121
111
|
rdoc_options:
|
122
|
-
- --charset=UTF-8
|
112
|
+
- "--charset=UTF-8"
|
123
113
|
require_paths:
|
124
114
|
- lib
|
125
115
|
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
-
none: false
|
127
116
|
requirements:
|
128
|
-
- -
|
117
|
+
- - ">="
|
129
118
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
119
|
+
version: 2.0.0
|
131
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
121
|
requirements:
|
134
|
-
- -
|
122
|
+
- - ">="
|
135
123
|
- !ruby/object:Gem::Version
|
136
124
|
version: 1.3.5
|
137
125
|
requirements: []
|
138
126
|
rubyforge_project:
|
139
|
-
rubygems_version:
|
127
|
+
rubygems_version: 2.4.5
|
140
128
|
signing_key:
|
141
|
-
specification_version:
|
129
|
+
specification_version: 4
|
142
130
|
summary: Read & write messages in the maildir format
|
143
131
|
test_files:
|
144
|
-
- test/test_helper.rb
|
145
|
-
- test/test_maildir.rb
|
146
|
-
- test/test_message.rb
|
147
132
|
- test/test_serializers.rb
|
148
133
|
- test/test_unique_name.rb
|
134
|
+
- test/test_maildir.rb
|
135
|
+
- test/test_message.rb
|
136
|
+
- test/helper.rb
|
data/test/test_helper.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'shoulda'
|
3
|
-
require 'maildir'
|
4
|
-
|
5
|
-
# Require all the serializers
|
6
|
-
serializers = File.expand_path('../../lib/maildir/serializer/*.rb', __FILE__)
|
7
|
-
Dir.glob(serializers).each do |serializer|
|
8
|
-
require serializer
|
9
|
-
end
|
10
|
-
|
11
|
-
require 'fakefs'
|
12
|
-
|
13
|
-
# Create a reusable maildir that's cleaned up when the tests are done
|
14
|
-
def temp_maildir
|
15
|
-
Maildir.new("/tmp/maildir_test")
|
16
|
-
end
|
17
|
-
|
18
|
-
# create the subdir tree:
|
19
|
-
# | INBOX
|
20
|
-
# |-- a
|
21
|
-
# | |-- x
|
22
|
-
# | |-- y
|
23
|
-
# |-- b
|
24
|
-
def setup_subdirs(maildir)
|
25
|
-
%w(a b a.x a.y).each do |x|
|
26
|
-
Maildir.new(File.join(maildir.path, ".#{x}"))
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# Test that objects are neither nil nor empty
|
31
|
-
def assert_not_empty(obj, msg='')
|
32
|
-
assert !obj.nil? && !obj.empty?, msg
|
33
|
-
end
|