sup 1.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.
- checksums.yaml +4 -4
- data/.github/workflows/checks.yml +58 -0
- data/.rubocop.yml +5 -0
- data/CONTRIBUTORS +5 -2
- data/Gemfile +5 -1
- data/History.txt +33 -0
- data/Manifest.txt +171 -0
- data/README.md +9 -4
- data/Rakefile +40 -1
- data/bin/sup-add +4 -8
- data/bin/sup-sync-back-maildir +1 -1
- data/contrib/nix/Gemfile +22 -0
- data/contrib/nix/Gemfile.lock +80 -0
- data/contrib/nix/README +7 -0
- data/contrib/nix/gem-install-shell.nix +12 -0
- data/contrib/nix/gemset.nix +339 -0
- data/contrib/nix/ruby2.4-Gemfile.lock +81 -0
- data/contrib/nix/ruby2.4-gemset.nix +309 -0
- data/contrib/nix/ruby2.4-shell.nix +30 -0
- data/contrib/nix/ruby2.5-Gemfile.lock +81 -0
- data/contrib/nix/ruby2.5-gemset.nix +309 -0
- data/contrib/nix/ruby2.5-shell.nix +30 -0
- data/contrib/nix/ruby2.6-Gemfile.lock +83 -0
- data/contrib/nix/ruby2.6-gemset.nix +319 -0
- data/contrib/nix/ruby2.6-shell.nix +30 -0
- data/contrib/nix/ruby2.7-shell.nix +23 -0
- data/contrib/nix/ruby3.0-shell.nix +23 -0
- data/contrib/nix/ruby3.1-shell.nix +23 -0
- data/contrib/nix/ruby3.2-shell.nix +23 -0
- data/contrib/nix/ruby3.3-shell.nix +23 -0
- data/contrib/nix/test-all-rubies.sh +6 -0
- data/doc/Hooks.txt +1 -1
- data/ext/mkrf_conf_xapian.rb +12 -6
- data/lib/sup/colormap.rb +1 -1
- data/lib/sup/crypto.rb +1 -1
- data/lib/sup/hook.rb +1 -1
- data/lib/sup/index.rb +4 -4
- data/lib/sup/keymap.rb +1 -1
- data/lib/sup/maildir.rb +5 -5
- data/lib/sup/mbox.rb +5 -5
- data/lib/sup/message.rb +8 -7
- data/lib/sup/message_chunks.rb +27 -19
- data/lib/sup/modes/completion_mode.rb +0 -1
- data/lib/sup/modes/console_mode.rb +1 -1
- data/lib/sup/modes/file_browser_mode.rb +2 -2
- data/lib/sup/modes/label_list_mode.rb +1 -1
- data/lib/sup/modes/search_list_mode.rb +2 -2
- data/lib/sup/modes/thread_view_mode.rb +1 -2
- data/lib/sup/rfc2047.rb +21 -6
- data/lib/sup/source.rb +8 -2
- data/lib/sup/textfield.rb +0 -1
- data/lib/sup/thread.rb +20 -21
- data/lib/sup/util.rb +31 -53
- data/lib/sup/version.rb +1 -1
- data/lib/sup.rb +12 -8
- data/man/sup-add.1 +39 -39
- data/man/sup-config.1 +31 -27
- data/man/sup-dump.1 +34 -35
- data/man/sup-import-dump.1 +36 -32
- data/man/sup-psych-ify-config-files.1 +29 -25
- data/man/sup-recover-sources.1 +32 -28
- data/man/sup-sync-back-maildir.1 +34 -30
- data/man/sup-sync.1 +40 -36
- data/man/sup-tweak-labels.1 +36 -32
- data/man/sup.1 +41 -37
- data/shell.nix +1 -0
- data/sup.gemspec +6 -4
- data/test/dummy_source.rb +21 -15
- data/test/fixtures/embedded-message.eml +34 -0
- data/test/fixtures/non-ascii-header-in-nested-message.eml +36 -0
- data/test/fixtures/non-ascii-header.eml +8 -0
- data/test/fixtures/rfc2047-header-encoding.eml +15 -0
- data/test/fixtures/text-attachments-with-charset.eml +15 -1
- data/test/fixtures/utf8-header.eml +17 -0
- data/test/integration/test_maildir.rb +3 -0
- data/test/integration/test_mbox.rb +4 -1
- data/test/integration/test_sup-add.rb +83 -0
- data/test/integration/test_sup-sync-back-maildir.rb +40 -0
- data/test/test_crypto.rb +44 -0
- data/test/test_header_parsing.rb +11 -3
- data/test/test_helper.rb +7 -4
- data/test/test_message.rb +124 -32
- data/test/test_messages_dir.rb +13 -15
- data/test/unit/test_horizontal_selector.rb +4 -4
- data/test/unit/test_locale_fiddler.rb +1 -1
- data/test/unit/util/test_query.rb +1 -1
- data/test/unit/util/test_string.rb +3 -3
- data/test/unit/util/test_uri.rb +2 -2
- metadata +69 -18
- data/.travis.yml +0 -18
- data/bin/sup-psych-ify-config-files +0 -21
- data/test/integration/test_label_service.rb +0 -18
- data/test/test_yaml_migration.rb +0 -85
data/test/test_messages_dir.rb
CHANGED
@@ -13,19 +13,22 @@ class TestMessagesDir < ::Minitest::Test
|
|
13
13
|
def setup
|
14
14
|
@path = Dir.mktmpdir
|
15
15
|
Redwood::HookManager.init File.join(@path, 'hooks')
|
16
|
+
@log = StringIO.new
|
17
|
+
Redwood::Logger.add_sink @log
|
18
|
+
Redwood::Logger.remove_sink $stderr
|
16
19
|
end
|
17
20
|
|
18
21
|
def teardown
|
22
|
+
Redwood::Logger.clear!
|
23
|
+
Redwood::Logger.remove_sink @log
|
24
|
+
Redwood::Logger.add_sink $stderr
|
19
25
|
Redwood::HookManager.deinstantiate!
|
20
26
|
FileUtils.rm_r @path
|
21
27
|
end
|
22
28
|
|
23
29
|
def test_binary_content_transfer_encoding
|
24
|
-
message = ''
|
25
|
-
File.open('test/fixtures/binary-content-transfer-encoding-2.eml') { |f| message = f.read }
|
26
|
-
|
27
30
|
source = DummySource.new("sup-test://test_messages")
|
28
|
-
source.messages = [
|
31
|
+
source.messages = [ fixture_path('binary-content-transfer-encoding-2.eml') ]
|
29
32
|
source_info = 0
|
30
33
|
|
31
34
|
sup_message = Message.build_from_source(source, source_info)
|
@@ -41,7 +44,6 @@ class TestMessagesDir < ::Minitest::Test
|
|
41
44
|
assert_equal("Important", subj)
|
42
45
|
|
43
46
|
chunks = sup_message.load_from_source!
|
44
|
-
indexable_chunks = sup_message.indexable_chunks
|
45
47
|
|
46
48
|
# there should be only one chunk
|
47
49
|
#assert_equal(1, chunks.length)
|
@@ -50,14 +52,13 @@ class TestMessagesDir < ::Minitest::Test
|
|
50
52
|
|
51
53
|
# lines should contain an error message
|
52
54
|
assert (lines.join.include? "An error occurred while loading this message."), "This message should not load successfully"
|
55
|
+
|
56
|
+
assert_match(/WARNING: problem reading message/, @log.string)
|
53
57
|
end
|
54
58
|
|
55
59
|
def test_bad_content_transfer_encoding
|
56
|
-
message = ''
|
57
|
-
File.open('test/fixtures/bad-content-transfer-encoding-1.eml') { |f| message = f.read }
|
58
|
-
|
59
60
|
source = DummySource.new("sup-test://test_messages")
|
60
|
-
source.messages = [
|
61
|
+
source.messages = [ fixture_path('bad-content-transfer-encoding-1.eml') ]
|
61
62
|
source_info = 0
|
62
63
|
|
63
64
|
sup_message = Message.build_from_source(source, source_info)
|
@@ -73,7 +74,6 @@ class TestMessagesDir < ::Minitest::Test
|
|
73
74
|
assert_equal("Content-Transfer-Encoding:-bug in sup", subj)
|
74
75
|
|
75
76
|
chunks = sup_message.load_from_source!
|
76
|
-
indexable_chunks = sup_message.indexable_chunks
|
77
77
|
|
78
78
|
# there should be only one chunk
|
79
79
|
#assert_equal(1, chunks.length)
|
@@ -82,14 +82,13 @@ class TestMessagesDir < ::Minitest::Test
|
|
82
82
|
|
83
83
|
# lines should contain an error message
|
84
84
|
assert (lines.join.include? "An error occurred while loading this message."), "This message should not load successfully"
|
85
|
+
|
86
|
+
assert_match(/WARNING: problem reading message/, @log.string)
|
85
87
|
end
|
86
88
|
|
87
89
|
def test_missing_line
|
88
|
-
message = ''
|
89
|
-
File.open('test/fixtures/missing-line.eml') { |f| message = f.read }
|
90
|
-
|
91
90
|
source = DummySource.new("sup-test://test_messages")
|
92
|
-
source.messages = [
|
91
|
+
source.messages = [ fixture_path('missing-line.eml') ]
|
93
92
|
source_info = 0
|
94
93
|
|
95
94
|
sup_message = Message.build_from_source(source, source_info)
|
@@ -105,7 +104,6 @@ class TestMessagesDir < ::Minitest::Test
|
|
105
104
|
assert_equal("Encoding bug", subj)
|
106
105
|
|
107
106
|
chunks = sup_message.load_from_source!
|
108
|
-
indexable_chunks = sup_message.indexable_chunks
|
109
107
|
|
110
108
|
# there should be only one chunk
|
111
109
|
#assert_equal(1, chunks.length)
|
@@ -13,18 +13,18 @@ describe Redwood::HorizontalSelector do
|
|
13
13
|
|
14
14
|
it "init w/ the first value selected" do
|
15
15
|
first_value = values.first
|
16
|
-
@selector.val
|
16
|
+
assert_equal first_value, @selector.val
|
17
17
|
end
|
18
18
|
|
19
19
|
it "stores value for selection" do
|
20
20
|
second_value = values[1]
|
21
21
|
@selector.set_to second_value
|
22
|
-
@selector.val
|
22
|
+
assert_equal second_value, @selector.val
|
23
23
|
end
|
24
24
|
|
25
25
|
describe "for unknown value" do
|
26
26
|
it "cannot select unknown value" do
|
27
|
-
@selector.
|
27
|
+
assert_equal false, @selector.can_set_to?(strange_value)
|
28
28
|
end
|
29
29
|
|
30
30
|
it "refuses selecting unknown value" do
|
@@ -34,7 +34,7 @@ describe Redwood::HorizontalSelector do
|
|
34
34
|
@selector.set_to strange_value
|
35
35
|
end
|
36
36
|
|
37
|
-
@selector.val
|
37
|
+
assert_equal old_value, @selector.val
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
@@ -30,7 +30,7 @@ describe Redwood::Util::Query do
|
|
30
30
|
else
|
31
31
|
# xapian 1.2 doesn't handle this bad input, so we do
|
32
32
|
assert_raises Redwood::Util::Query::QueryDescriptionError do
|
33
|
-
|
33
|
+
_desc = Redwood::Util::Query.describe (query)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -18,7 +18,7 @@ describe "Sup's String extension" do
|
|
18
18
|
|
19
19
|
it "calculates display length of a string" do
|
20
20
|
data.each do |(str, length)|
|
21
|
-
str.display_length
|
21
|
+
assert_equal length, str.display_length
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -36,7 +36,7 @@ describe "Sup's String extension" do
|
|
36
36
|
|
37
37
|
it "slices string by display length" do
|
38
38
|
data.each do |(str, length, sliced)|
|
39
|
-
str.slice_by_display_length(length)
|
39
|
+
assert_equal sliced, str.slice_by_display_length(length)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -56,7 +56,7 @@ describe "Sup's String extension" do
|
|
56
56
|
|
57
57
|
it "wraps string by display length" do
|
58
58
|
data.each do |(str, length, wrapped)|
|
59
|
-
str.wrap(length)
|
59
|
+
assert_equal wrapped, str.wrap(length)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
data/test/unit/util/test_uri.rb
CHANGED
@@ -7,13 +7,13 @@ describe Redwood::Util::Uri do
|
|
7
7
|
it "builds uri from hash" do
|
8
8
|
components = {:path => "/var/mail/foo", :scheme => "mbox"}
|
9
9
|
uri = Redwood::Util::Uri.build(components)
|
10
|
-
|
10
|
+
assert_equal "mbox:/var/mail/foo", uri.to_s
|
11
11
|
end
|
12
12
|
|
13
13
|
it "expands ~ in path" do
|
14
14
|
components = {:path => "~/foo", :scheme => "maildir"}
|
15
15
|
uri = Redwood::Util::Uri.build(components)
|
16
|
-
|
16
|
+
assert_equal "maildir:#{ENV["HOME"]}/foo", uri.to_s
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Morgan
|
8
8
|
- Gaute Hope
|
9
9
|
- Hamish Downer
|
10
10
|
- Matthieu Rakotojaona
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2024-04-21 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: ncursesw
|
@@ -31,16 +31,22 @@ dependencies:
|
|
31
31
|
name: rmail
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- - "
|
34
|
+
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
36
|
+
version: 1.1.2
|
37
|
+
- - "<"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2'
|
37
40
|
type: :runtime
|
38
41
|
prerelease: false
|
39
42
|
version_requirements: !ruby/object:Gem::Requirement
|
40
43
|
requirements:
|
41
|
-
- - "
|
44
|
+
- - ">="
|
42
45
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
46
|
+
version: 1.1.2
|
47
|
+
- - "<"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '2'
|
44
50
|
- !ruby/object:Gem::Dependency
|
45
51
|
name: highline
|
46
52
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,14 +199,14 @@ dependencies:
|
|
193
199
|
requirements:
|
194
200
|
- - "~>"
|
195
201
|
- !ruby/object:Gem::Version
|
196
|
-
version: 5.5
|
202
|
+
version: '5.5'
|
197
203
|
type: :development
|
198
204
|
prerelease: false
|
199
205
|
version_requirements: !ruby/object:Gem::Requirement
|
200
206
|
requirements:
|
201
207
|
- - "~>"
|
202
208
|
- !ruby/object:Gem::Version
|
203
|
-
version: 5.5
|
209
|
+
version: '5.5'
|
204
210
|
- !ruby/object:Gem::Dependency
|
205
211
|
name: rr
|
206
212
|
requirement: !ruby/object:Gem::Requirement
|
@@ -243,6 +249,20 @@ dependencies:
|
|
243
249
|
- - ">="
|
244
250
|
- !ruby/object:Gem::Version
|
245
251
|
version: '0'
|
252
|
+
- !ruby/object:Gem::Dependency
|
253
|
+
name: rubocop-packaging
|
254
|
+
requirement: !ruby/object:Gem::Requirement
|
255
|
+
requirements:
|
256
|
+
- - ">="
|
257
|
+
- !ruby/object:Gem::Version
|
258
|
+
version: '0'
|
259
|
+
type: :development
|
260
|
+
prerelease: false
|
261
|
+
version_requirements: !ruby/object:Gem::Requirement
|
262
|
+
requirements:
|
263
|
+
- - ">="
|
264
|
+
- !ruby/object:Gem::Version
|
265
|
+
version: '0'
|
246
266
|
description: |2
|
247
267
|
Sup is a console-based email client for people with a lot of email.
|
248
268
|
|
@@ -259,7 +279,6 @@ executables:
|
|
259
279
|
- sup-config
|
260
280
|
- sup-dump
|
261
281
|
- sup-import-dump
|
262
|
-
- sup-psych-ify-config-files
|
263
282
|
- sup-recover-sources
|
264
283
|
- sup-sync
|
265
284
|
- sup-sync-back-maildir
|
@@ -278,14 +297,16 @@ extra_rdoc_files:
|
|
278
297
|
- man/sup-tweak-labels.1
|
279
298
|
- man/sup.1
|
280
299
|
files:
|
300
|
+
- ".github/workflows/checks.yml"
|
281
301
|
- ".gitignore"
|
282
302
|
- ".gitmodules"
|
283
|
-
- ".
|
303
|
+
- ".rubocop.yml"
|
284
304
|
- CONTRIBUTORS
|
285
305
|
- Gemfile
|
286
306
|
- HACKING
|
287
307
|
- History.txt
|
288
308
|
- LICENSE
|
309
|
+
- Manifest.txt
|
289
310
|
- README.md
|
290
311
|
- Rakefile
|
291
312
|
- ReleaseNotes
|
@@ -294,7 +315,6 @@ files:
|
|
294
315
|
- bin/sup-config
|
295
316
|
- bin/sup-dump
|
296
317
|
- bin/sup-import-dump
|
297
|
-
- bin/sup-psych-ify-config-files
|
298
318
|
- bin/sup-recover-sources
|
299
319
|
- bin/sup-sync
|
300
320
|
- bin/sup-sync-back-maildir
|
@@ -302,6 +322,26 @@ files:
|
|
302
322
|
- contrib/colorpicker.rb
|
303
323
|
- contrib/completion/_sup.bash
|
304
324
|
- contrib/completion/_sup.zsh
|
325
|
+
- contrib/nix/Gemfile
|
326
|
+
- contrib/nix/Gemfile.lock
|
327
|
+
- contrib/nix/README
|
328
|
+
- contrib/nix/gem-install-shell.nix
|
329
|
+
- contrib/nix/gemset.nix
|
330
|
+
- contrib/nix/ruby2.4-Gemfile.lock
|
331
|
+
- contrib/nix/ruby2.4-gemset.nix
|
332
|
+
- contrib/nix/ruby2.4-shell.nix
|
333
|
+
- contrib/nix/ruby2.5-Gemfile.lock
|
334
|
+
- contrib/nix/ruby2.5-gemset.nix
|
335
|
+
- contrib/nix/ruby2.5-shell.nix
|
336
|
+
- contrib/nix/ruby2.6-Gemfile.lock
|
337
|
+
- contrib/nix/ruby2.6-gemset.nix
|
338
|
+
- contrib/nix/ruby2.6-shell.nix
|
339
|
+
- contrib/nix/ruby2.7-shell.nix
|
340
|
+
- contrib/nix/ruby3.0-shell.nix
|
341
|
+
- contrib/nix/ruby3.1-shell.nix
|
342
|
+
- contrib/nix/ruby3.2-shell.nix
|
343
|
+
- contrib/nix/ruby3.3-shell.nix
|
344
|
+
- contrib/nix/test-all-rubies.sh
|
305
345
|
- devel/console.sh
|
306
346
|
- devel/count-loc.sh
|
307
347
|
- devel/load-index.rb
|
@@ -388,12 +428,14 @@ files:
|
|
388
428
|
- man/sup-sync.1
|
389
429
|
- man/sup-tweak-labels.1
|
390
430
|
- man/sup.1
|
431
|
+
- shell.nix
|
391
432
|
- sup.gemspec
|
392
433
|
- test/dummy_source.rb
|
393
434
|
- test/fixtures/bad-content-transfer-encoding-1.eml
|
394
435
|
- test/fixtures/binary-content-transfer-encoding-2.eml
|
395
436
|
- test/fixtures/blank-header-fields.eml
|
396
437
|
- test/fixtures/contacts.txt
|
438
|
+
- test/fixtures/embedded-message.eml
|
397
439
|
- test/fixtures/mailing-list-header.eml
|
398
440
|
- test/fixtures/malicious-attachment-names.eml
|
399
441
|
- test/fixtures/missing-from-to.eml
|
@@ -401,8 +443,12 @@ files:
|
|
401
443
|
- test/fixtures/multi-part-2.eml
|
402
444
|
- test/fixtures/multi-part.eml
|
403
445
|
- test/fixtures/no-body.eml
|
446
|
+
- test/fixtures/non-ascii-header-in-nested-message.eml
|
447
|
+
- test/fixtures/non-ascii-header.eml
|
448
|
+
- test/fixtures/rfc2047-header-encoding.eml
|
404
449
|
- test/fixtures/simple-message.eml
|
405
450
|
- test/fixtures/text-attachments-with-charset.eml
|
451
|
+
- test/fixtures/utf8-header.eml
|
406
452
|
- test/fixtures/zimbra-quote-with-bottom-post.eml
|
407
453
|
- test/gnupg_test_home/.gpg-v21-migrated
|
408
454
|
- test/gnupg_test_home/gpg.conf
|
@@ -413,15 +459,15 @@ files:
|
|
413
459
|
- test/gnupg_test_home/regen_keys.sh
|
414
460
|
- test/gnupg_test_home/secring.gpg
|
415
461
|
- test/gnupg_test_home/sup-test-2@foo.bar.asc
|
416
|
-
- test/integration/test_label_service.rb
|
417
462
|
- test/integration/test_maildir.rb
|
418
463
|
- test/integration/test_mbox.rb
|
464
|
+
- test/integration/test_sup-add.rb
|
465
|
+
- test/integration/test_sup-sync-back-maildir.rb
|
419
466
|
- test/test_crypto.rb
|
420
467
|
- test/test_header_parsing.rb
|
421
468
|
- test/test_helper.rb
|
422
469
|
- test/test_message.rb
|
423
470
|
- test/test_messages_dir.rb
|
424
|
-
- test/test_yaml_migration.rb
|
425
471
|
- test/test_yaml_regressions.rb
|
426
472
|
- test/unit/service/test_label_service.rb
|
427
473
|
- test/unit/test_contact.rb
|
@@ -458,8 +504,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
458
504
|
- !ruby/object:Gem::Version
|
459
505
|
version: '0'
|
460
506
|
requirements: []
|
461
|
-
rubygems_version: 3.
|
462
|
-
signing_key:
|
507
|
+
rubygems_version: 3.4.22
|
508
|
+
signing_key:
|
463
509
|
specification_version: 4
|
464
510
|
summary: A console-based email client with the best features of GMail, mutt and Emacs
|
465
511
|
test_files:
|
@@ -468,6 +514,7 @@ test_files:
|
|
468
514
|
- test/fixtures/binary-content-transfer-encoding-2.eml
|
469
515
|
- test/fixtures/blank-header-fields.eml
|
470
516
|
- test/fixtures/contacts.txt
|
517
|
+
- test/fixtures/embedded-message.eml
|
471
518
|
- test/fixtures/mailing-list-header.eml
|
472
519
|
- test/fixtures/malicious-attachment-names.eml
|
473
520
|
- test/fixtures/missing-from-to.eml
|
@@ -475,8 +522,12 @@ test_files:
|
|
475
522
|
- test/fixtures/multi-part-2.eml
|
476
523
|
- test/fixtures/multi-part.eml
|
477
524
|
- test/fixtures/no-body.eml
|
525
|
+
- test/fixtures/non-ascii-header-in-nested-message.eml
|
526
|
+
- test/fixtures/non-ascii-header.eml
|
527
|
+
- test/fixtures/rfc2047-header-encoding.eml
|
478
528
|
- test/fixtures/simple-message.eml
|
479
529
|
- test/fixtures/text-attachments-with-charset.eml
|
530
|
+
- test/fixtures/utf8-header.eml
|
480
531
|
- test/fixtures/zimbra-quote-with-bottom-post.eml
|
481
532
|
- test/gnupg_test_home/.gpg-v21-migrated
|
482
533
|
- test/gnupg_test_home/gpg.conf
|
@@ -487,15 +538,15 @@ test_files:
|
|
487
538
|
- test/gnupg_test_home/regen_keys.sh
|
488
539
|
- test/gnupg_test_home/secring.gpg
|
489
540
|
- test/gnupg_test_home/sup-test-2@foo.bar.asc
|
490
|
-
- test/integration/test_label_service.rb
|
491
541
|
- test/integration/test_maildir.rb
|
492
542
|
- test/integration/test_mbox.rb
|
543
|
+
- test/integration/test_sup-add.rb
|
544
|
+
- test/integration/test_sup-sync-back-maildir.rb
|
493
545
|
- test/test_crypto.rb
|
494
546
|
- test/test_header_parsing.rb
|
495
547
|
- test/test_helper.rb
|
496
548
|
- test/test_message.rb
|
497
549
|
- test/test_messages_dir.rb
|
498
|
-
- test/test_yaml_migration.rb
|
499
550
|
- test/test_yaml_regressions.rb
|
500
551
|
- test/unit/service/test_label_service.rb
|
501
552
|
- test/unit/test_contact.rb
|
data/.travis.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
dist: focal
|
4
|
-
|
5
|
-
rvm:
|
6
|
-
- 2.5
|
7
|
-
- 2.6
|
8
|
-
- 2.7
|
9
|
-
|
10
|
-
before_install:
|
11
|
-
- sudo apt update -qq
|
12
|
-
- sudo apt install -qq uuid-dev uuid libncursesw5-dev libncursesw5 gnupg2 pandoc
|
13
|
-
- git submodule update --init --recursive
|
14
|
-
|
15
|
-
script:
|
16
|
-
- bundle exec rake travis
|
17
|
-
- bundle exec gem install pkg/sup-*.gem
|
18
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
4
|
-
|
5
|
-
require "sup"
|
6
|
-
require "fileutils"
|
7
|
-
|
8
|
-
if RUBY_VERSION >= "2.1"
|
9
|
-
puts "YAML migration is deprecated by Ruby 2.1 and newer."
|
10
|
-
exit
|
11
|
-
end
|
12
|
-
|
13
|
-
Redwood.start
|
14
|
-
|
15
|
-
fn = Redwood::SOURCE_FN
|
16
|
-
FileUtils.cp fn, "#{fn}.syck_bak"
|
17
|
-
|
18
|
-
Redwood::SourceManager.load_sources fn
|
19
|
-
Redwood::SourceManager.save_sources fn, true
|
20
|
-
|
21
|
-
Redwood.finish
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
require "sup/service/label_service"
|
4
|
-
|
5
|
-
require "tmpdir"
|
6
|
-
|
7
|
-
describe Redwood::LabelService do
|
8
|
-
let(:tmpdir) { Dir.mktmpdir }
|
9
|
-
after do
|
10
|
-
require "fileutils"
|
11
|
-
FileUtils.remove_entry_secure @tmpdir unless @tmpdir.nil?
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "#add_labels" do
|
15
|
-
# Integration tests are hard to write at this moment :(
|
16
|
-
it "add labels to all messages matching the query"
|
17
|
-
end
|
18
|
-
end
|
data/test/test_yaml_migration.rb
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
require "sup"
|
4
|
-
require "psych"
|
5
|
-
|
6
|
-
if RUBY_VERSION < "2.1"
|
7
|
-
describe "Sup's YAML util" do
|
8
|
-
describe "Module#yaml_properties" do
|
9
|
-
def build_class_with_name name, &b
|
10
|
-
Class.new do
|
11
|
-
meta_cls = class << self; self; end
|
12
|
-
meta_cls.send(:define_method, :name) { name }
|
13
|
-
class_exec(&b) unless b.nil?
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
after do
|
18
|
-
Psych.load_tags = {}
|
19
|
-
Psych.dump_tags = {}
|
20
|
-
end
|
21
|
-
|
22
|
-
it "defines YAML tag for class" do
|
23
|
-
cls = build_class_with_name 'Cls' do
|
24
|
-
yaml_properties
|
25
|
-
end
|
26
|
-
|
27
|
-
expected_yaml_tag = "!supmua.org,2006-10-01/Cls"
|
28
|
-
|
29
|
-
Psych.load_tags[expected_yaml_tag].must_equal cls
|
30
|
-
Psych.dump_tags[cls].must_equal expected_yaml_tag
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
it "Loads legacy YAML format as well" do
|
35
|
-
cls = build_class_with_name 'Cls' do
|
36
|
-
yaml_properties :id
|
37
|
-
attr_accessor :id
|
38
|
-
def initialize id
|
39
|
-
@id = id
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
Psych.load_tags["!masanjin.net,2006-10-01/Cls"].must_equal cls
|
44
|
-
|
45
|
-
yaml = <<EOF
|
46
|
-
--- !masanjin.net,2006-10-01/Cls
|
47
|
-
id: ID
|
48
|
-
EOF
|
49
|
-
loaded = YAML.load(yaml)
|
50
|
-
|
51
|
-
loaded.id.must_equal 'ID'
|
52
|
-
loaded.must_be_kind_of cls
|
53
|
-
end
|
54
|
-
|
55
|
-
it "Dumps & loads w/ state re-initialized" do
|
56
|
-
cls = build_class_with_name 'Cls' do
|
57
|
-
yaml_properties :id
|
58
|
-
attr_accessor :id
|
59
|
-
attr_reader :flag
|
60
|
-
|
61
|
-
def initialize id
|
62
|
-
@id = id
|
63
|
-
@flag = true
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
instance = cls.new 'ID'
|
68
|
-
|
69
|
-
dumped = YAML.dump(instance)
|
70
|
-
loaded = YAML.load(dumped)
|
71
|
-
|
72
|
-
dumped.must_equal <<-EOF
|
73
|
-
--- !supmua.org,2006-10-01/Cls
|
74
|
-
id: ID
|
75
|
-
EOF
|
76
|
-
|
77
|
-
loaded.id.must_equal 'ID'
|
78
|
-
assert loaded.flag
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
else
|
84
|
-
puts "Some YAML tests are skipped on Ruby 2.1.0 and newer."
|
85
|
-
end
|