rmail-sup 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/NEWS +323 -0
  3. data/NOTES +14 -0
  4. data/README +83 -0
  5. data/Rakefile +184 -0
  6. data/THANKS +25 -0
  7. data/TODO +115 -0
  8. data/guide/Intro.txt +122 -0
  9. data/guide/MIME.txt +6 -0
  10. data/guide/TableOfContents.txt +13 -0
  11. data/install.rb +1023 -0
  12. data/lib/rmail.rb +50 -0
  13. data/lib/rmail/address.rb +841 -0
  14. data/lib/rmail/header.rb +981 -0
  15. data/lib/rmail/mailbox.rb +62 -0
  16. data/lib/rmail/mailbox/mboxreader.rb +182 -0
  17. data/lib/rmail/message.rb +201 -0
  18. data/lib/rmail/parser.rb +412 -0
  19. data/lib/rmail/parser/multipart.rb +217 -0
  20. data/lib/rmail/parser/pushbackreader.rb +173 -0
  21. data/lib/rmail/serialize.rb +190 -0
  22. data/lib/rmail/utils.rb +59 -0
  23. data/test/addrgrammar.txt +113 -0
  24. data/test/data/mbox.odd +4 -0
  25. data/test/data/mbox.simple +8 -0
  26. data/test/data/multipart/data.1 +5 -0
  27. data/test/data/multipart/data.10 +1 -0
  28. data/test/data/multipart/data.11 +9 -0
  29. data/test/data/multipart/data.12 +9 -0
  30. data/test/data/multipart/data.13 +3 -0
  31. data/test/data/multipart/data.14 +3 -0
  32. data/test/data/multipart/data.15 +3 -0
  33. data/test/data/multipart/data.16 +3 -0
  34. data/test/data/multipart/data.17 +0 -0
  35. data/test/data/multipart/data.2 +5 -0
  36. data/test/data/multipart/data.3 +2 -0
  37. data/test/data/multipart/data.4 +3 -0
  38. data/test/data/multipart/data.5 +1 -0
  39. data/test/data/multipart/data.6 +2 -0
  40. data/test/data/multipart/data.7 +3 -0
  41. data/test/data/multipart/data.8 +5 -0
  42. data/test/data/multipart/data.9 +4 -0
  43. data/test/data/parser.badmime1 +4 -0
  44. data/test/data/parser.badmime2 +6 -0
  45. data/test/data/parser.nested-multipart +75 -0
  46. data/test/data/parser.nested-simple +12 -0
  47. data/test/data/parser.nested-simple2 +16 -0
  48. data/test/data/parser.nested-simple3 +21 -0
  49. data/test/data/parser.rfc822 +65 -0
  50. data/test/data/parser.simple-mime +24 -0
  51. data/test/data/parser/multipart.1 +8 -0
  52. data/test/data/parser/multipart.10 +4 -0
  53. data/test/data/parser/multipart.11 +12 -0
  54. data/test/data/parser/multipart.12 +12 -0
  55. data/test/data/parser/multipart.13 +6 -0
  56. data/test/data/parser/multipart.14 +6 -0
  57. data/test/data/parser/multipart.15 +6 -0
  58. data/test/data/parser/multipart.16 +6 -0
  59. data/test/data/parser/multipart.2 +8 -0
  60. data/test/data/parser/multipart.3 +5 -0
  61. data/test/data/parser/multipart.4 +6 -0
  62. data/test/data/parser/multipart.5 +4 -0
  63. data/test/data/parser/multipart.6 +5 -0
  64. data/test/data/parser/multipart.7 +6 -0
  65. data/test/data/parser/multipart.8 +8 -0
  66. data/test/data/parser/multipart.9 +7 -0
  67. data/test/data/transparency/absolute.1 +5 -0
  68. data/test/data/transparency/absolute.2 +1 -0
  69. data/test/data/transparency/absolute.3 +2 -0
  70. data/test/data/transparency/absolute.4 +3 -0
  71. data/test/data/transparency/absolute.5 +4 -0
  72. data/test/data/transparency/absolute.6 +49 -0
  73. data/test/data/transparency/message.1 +73 -0
  74. data/test/data/transparency/message.2 +34 -0
  75. data/test/data/transparency/message.3 +63 -0
  76. data/test/data/transparency/message.4 +5 -0
  77. data/test/data/transparency/message.5 +15 -0
  78. data/test/data/transparency/message.6 +1185 -0
  79. data/test/runtests.rb +35 -0
  80. data/test/testaddress.rb +1204 -0
  81. data/test/testbase.rb +204 -0
  82. data/test/testheader.rb +1225 -0
  83. data/test/testmailbox.rb +47 -0
  84. data/test/testmboxreader.rb +161 -0
  85. data/test/testmessage.rb +257 -0
  86. data/test/testparser.rb +634 -0
  87. data/test/testparsermultipart.rb +205 -0
  88. data/test/testpushbackreader.rb +40 -0
  89. data/test/testserialize.rb +264 -0
  90. data/test/testtestbase.rb +116 -0
  91. data/test/testtranspparency.rb +105 -0
  92. data/version +1 -0
  93. metadata +149 -0
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright (C) 2001, 2002, 2007 Matt Armstrong. All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # 1. Redistributions of source code must retain the above copyright notice,
9
+ # this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ # 3. The name of the author may not be used to endorse or promote products
14
+ # derived from this software without specific prior written permission.
15
+ #
16
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17
+ # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
19
+ # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ #
27
+
28
+ # Test the TestBase class itself
29
+
30
+ require 'test/testbase.rb'
31
+
32
+ class TestTestBase < TestBase
33
+
34
+ def test_cleandir
35
+ Dir.mkdir("_testdir_")
36
+ Dir.mkdir("_testdir_/testsubdir")
37
+ File.open("_testdir_/testfile", "w") { |file|
38
+ file.puts "some data"
39
+ }
40
+ File.open("_testdir_/testsubdir/testfile", "w") { |file|
41
+ file.puts "some data"
42
+ }
43
+ assert(test(?e, "_testdir_"))
44
+ assert(test(?e, "_testdir_/testsubdir"))
45
+ assert(test(?e, "_testdir_/testsubdir/testfile"))
46
+ assert(test(?e, "_testdir_/testfile"))
47
+ cleandir("_testdir_")
48
+ assert(test(?e, "_testdir_"))
49
+ assert(!test(?e, "_testdir_/testsubdir"))
50
+ assert(!test(?e, "_testdir_/testsubdir/testfile"))
51
+ assert(!test(?e, "_testdir_/testfile"))
52
+ assert_equal(0, Dir.delete('_testdir_'))
53
+ end
54
+
55
+ def test_file_contains
56
+ scratch = scratch_filename("file_contains")
57
+ File.open(scratch, "w") { |f|
58
+ f.puts "contains AAA"
59
+ f.puts "contains BBB"
60
+ }
61
+ assert(file_contains(scratch, /BBB/))
62
+ assert(file_contains(scratch, "AAA"))
63
+ assert(file_contains(scratch, /contains AAA/))
64
+ assert(file_contains(scratch, "contains BBB"))
65
+ assert_equal(false, file_contains(scratch, /contains CCC/))
66
+ assert_equal(false, file_contains(scratch, "contains CCC"))
67
+ end
68
+
69
+ def test_ruby_program
70
+ assert_not_nil(ruby_program)
71
+ assert_kind_of(String, ruby_program)
72
+ end
73
+
74
+ def verify_scratch_dir_name(dir)
75
+ assert_match(/_scratch.*TestTestBase/, dir)
76
+ end
77
+
78
+ def test_name
79
+ assert_match(/\btest_name\b/, name)
80
+ assert_match(/\bTestTestBase\b/, name)
81
+ end
82
+
83
+ def test_scratch_dir
84
+ assert_not_nil(scratch_dir)
85
+ assert_kind_of(String, scratch_dir)
86
+ verify_scratch_dir_name(scratch_dir)
87
+ end
88
+
89
+ def test_scratch_filename
90
+ name = scratch_filename("foobar")
91
+ assert_kind_of(String, name)
92
+ verify_scratch_dir_name(File.dirname(name))
93
+ assert_equal("foobar", File.basename(name))
94
+
95
+ name = scratch_filename("foobar")
96
+ assert_kind_of(String, name)
97
+ verify_scratch_dir_name(File.dirname(name))
98
+ assert_equal("foobar.1", File.basename(name))
99
+ end
100
+
101
+ def test_string_as_file
102
+ string = "yo\nman\n"
103
+ string_as_file(string) { |f|
104
+ assert_equal(string, f.readlines.join(''))
105
+ }
106
+ string2 = " yo\n man\n"
107
+ string_as_file(string2) { |f|
108
+ assert_equal("yo\nman\n", f.readlines.join(''))
109
+ }
110
+ string_as_file(string2, false) { |f|
111
+ assert_equal(string2, f.readlines.join(''))
112
+ }
113
+ end
114
+
115
+ end
116
+
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env ruby
2
+ #--
3
+ # Copyright (C) 2002, 2007 Matt Armstrong. All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # 1. Redistributions of source code must retain the above copyright notice,
9
+ # this list of conditions and the following disclaimer.
10
+ # 2. Redistributions in binary form must reproduce the above copyright
11
+ # notice, this list of conditions and the following disclaimer in the
12
+ # documentation and/or other materials provided with the distribution.
13
+ # 3. The name of the author may not be used to endorse or promote products
14
+ # derived from this software without specific prior written permission.
15
+ #
16
+ # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17
+ # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18
+ # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
19
+ # NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20
+ # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
21
+ # TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ #
27
+
28
+ require 'test/testbase'
29
+ require 'rmail/parser'
30
+ require 'rmail/serialize'
31
+
32
+ class TestRMailTransparency < TestBase
33
+ def do_file(file)
34
+ full_name = data_filename(file)
35
+ message1 = data_as_file(file) { |f|
36
+ RMail::Parser.new.parse(f)
37
+ }
38
+ scratch_base = file.gsub(/[^\w]/, '-')
39
+ scratch_name = scratch_filename(scratch_base)
40
+ message2 = File.open(scratch_name, "w+") { |f|
41
+ RMail::Serialize.new(f).serialize(message1)
42
+ f.seek(0)
43
+ RMail::Parser.new.parse(f)
44
+ }
45
+ if message1 != message2
46
+ puts "-" * 70
47
+ pp message1
48
+ puts "-" * 70
49
+ pp message2
50
+ puts "-" * 70
51
+ end
52
+ assert(FileUtils.compare_file(full_name, scratch_name),
53
+ "parse->serialize failure transparency #{file}")
54
+ assert_equal(message1, message2,
55
+ "parse->serialize->parse transparency failure #{file}")
56
+ end
57
+
58
+ # Test that all our various input files get formatted on output the
59
+ # same way they came in.
60
+ def test_transparency_simple_mime
61
+ do_file('parser.simple-mime')
62
+ end
63
+ def test_transparency_rfc822
64
+ do_file('parser.rfc822')
65
+ end
66
+ def test_transparency_nested_multipart
67
+ do_file('parser.nested-multipart')
68
+ end
69
+ def test_transparency_message_01
70
+ do_file("transparency/message.1")
71
+ end
72
+ def test_transparency_message_02
73
+ do_file("transparency/message.2")
74
+ end
75
+ def test_transparency_message_03
76
+ do_file("transparency/message.3")
77
+ end
78
+ def test_transparency_message_04
79
+ do_file("transparency/message.4")
80
+ end
81
+ def test_transparency_message_05
82
+ do_file("transparency/message.5")
83
+ end
84
+ def test_transparency_message_06
85
+ do_file("transparency/message.6")
86
+ end
87
+ def test_transparency_absolute_01
88
+ do_file('transparency/absolute.1')
89
+ end
90
+ def test_transparency_absolute_02
91
+ do_file('transparency/absolute.2')
92
+ end
93
+ def test_transparency_absolute_03
94
+ do_file('transparency/absolute.3')
95
+ end
96
+ def test_transparency_absolute_04
97
+ do_file('transparency/absolute.4')
98
+ end
99
+ def test_transparency_absolute_05
100
+ do_file('transparency/absolute.5')
101
+ end
102
+ def test_transparency_absolute_06
103
+ do_file('transparency/absolute.6')
104
+ end
105
+ end
data/version ADDED
@@ -0,0 +1 @@
1
+ 1.0.1
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rmail-sup
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sup maintainers
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-03 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |2
14
+ RMail is a lightweight mail library containing various utility classes and
15
+ modules that allow ruby scripts to parse, modify, and generate MIME mail
16
+ messages.
17
+ email: sup-devel@rubyforge.org
18
+ executables: []
19
+ extensions: []
20
+ extra_rdoc_files:
21
+ - README
22
+ - NEWS
23
+ - THANKS
24
+ - TODO
25
+ - guide/Intro.txt
26
+ - guide/MIME.txt
27
+ - guide/TableOfContents.txt
28
+ files:
29
+ - test/addrgrammar.txt
30
+ - test/data/mbox.odd
31
+ - test/data/mbox.simple
32
+ - test/data/multipart/data.1
33
+ - test/data/multipart/data.10
34
+ - test/data/multipart/data.11
35
+ - test/data/multipart/data.12
36
+ - test/data/multipart/data.13
37
+ - test/data/multipart/data.14
38
+ - test/data/multipart/data.15
39
+ - test/data/multipart/data.16
40
+ - test/data/multipart/data.17
41
+ - test/data/multipart/data.2
42
+ - test/data/multipart/data.3
43
+ - test/data/multipart/data.4
44
+ - test/data/multipart/data.5
45
+ - test/data/multipart/data.6
46
+ - test/data/multipart/data.7
47
+ - test/data/multipart/data.8
48
+ - test/data/multipart/data.9
49
+ - test/data/parser.badmime1
50
+ - test/data/parser.badmime2
51
+ - test/data/parser.nested-multipart
52
+ - test/data/parser.nested-simple
53
+ - test/data/parser.nested-simple2
54
+ - test/data/parser.nested-simple3
55
+ - test/data/parser.rfc822
56
+ - test/data/parser.simple-mime
57
+ - test/data/parser/multipart.1
58
+ - test/data/parser/multipart.10
59
+ - test/data/parser/multipart.11
60
+ - test/data/parser/multipart.12
61
+ - test/data/parser/multipart.13
62
+ - test/data/parser/multipart.14
63
+ - test/data/parser/multipart.15
64
+ - test/data/parser/multipart.16
65
+ - test/data/parser/multipart.2
66
+ - test/data/parser/multipart.3
67
+ - test/data/parser/multipart.4
68
+ - test/data/parser/multipart.5
69
+ - test/data/parser/multipart.6
70
+ - test/data/parser/multipart.7
71
+ - test/data/parser/multipart.8
72
+ - test/data/parser/multipart.9
73
+ - test/data/transparency/absolute.1
74
+ - test/data/transparency/absolute.2
75
+ - test/data/transparency/absolute.3
76
+ - test/data/transparency/absolute.4
77
+ - test/data/transparency/absolute.5
78
+ - test/data/transparency/absolute.6
79
+ - test/data/transparency/message.1
80
+ - test/data/transparency/message.2
81
+ - test/data/transparency/message.3
82
+ - test/data/transparency/message.4
83
+ - test/data/transparency/message.5
84
+ - test/data/transparency/message.6
85
+ - test/runtests.rb
86
+ - test/testaddress.rb
87
+ - test/testbase.rb
88
+ - test/testheader.rb
89
+ - test/testmailbox.rb
90
+ - test/testmboxreader.rb
91
+ - test/testmessage.rb
92
+ - test/testparser.rb
93
+ - test/testparsermultipart.rb
94
+ - test/testpushbackreader.rb
95
+ - test/testserialize.rb
96
+ - test/testtestbase.rb
97
+ - test/testtranspparency.rb
98
+ - guide/Intro.txt
99
+ - guide/MIME.txt
100
+ - guide/TableOfContents.txt
101
+ - lib/rmail.rb
102
+ - lib/rmail/address.rb
103
+ - lib/rmail/header.rb
104
+ - lib/rmail/mailbox.rb
105
+ - lib/rmail/mailbox/mboxreader.rb
106
+ - lib/rmail/message.rb
107
+ - lib/rmail/parser.rb
108
+ - lib/rmail/parser/multipart.rb
109
+ - lib/rmail/parser/pushbackreader.rb
110
+ - lib/rmail/serialize.rb
111
+ - lib/rmail/utils.rb
112
+ - install.rb
113
+ - NEWS
114
+ - NOTES
115
+ - README
116
+ - THANKS
117
+ - TODO
118
+ - Rakefile
119
+ - version
120
+ homepage: http://supmua.org
121
+ licenses: []
122
+ metadata: {}
123
+ post_install_message:
124
+ rdoc_options:
125
+ - --title
126
+ - RubyMail Documentation (version 1.0.1)
127
+ - --main
128
+ - README
129
+ - --exclude
130
+ - SCCS
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - '>='
136
+ - !ruby/object:Gem::Version
137
+ version: 1.8.1
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubyforge_project:
145
+ rubygems_version: 2.0.3
146
+ signing_key:
147
+ specification_version: 4
148
+ summary: A MIME mail parsing and generation library.
149
+ test_files: []