sup 1.2 → 1.4

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.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/checks.yml +19 -4
  3. data/.gitmodules +1 -0
  4. data/.rubocop.yml +1 -1
  5. data/History.txt +33 -0
  6. data/Manifest.txt +21 -2
  7. data/README.md +5 -3
  8. data/Rakefile +1 -1
  9. data/bin/sup +5 -3
  10. data/contrib/nix/Gemfile +2 -0
  11. data/contrib/nix/Gemfile.lock +62 -34
  12. data/contrib/nix/gem-install-shell.nix +2 -0
  13. data/contrib/nix/gemset.nix +130 -56
  14. data/contrib/nix/ruby2.4-Gemfile.lock +6 -2
  15. data/contrib/nix/ruby2.4-gemset.nix +24 -4
  16. data/contrib/nix/ruby2.4-shell.nix +2 -6
  17. data/contrib/nix/ruby2.5-Gemfile.lock +6 -2
  18. data/contrib/nix/ruby2.5-gemset.nix +24 -4
  19. data/contrib/nix/ruby2.5-shell.nix +2 -6
  20. data/contrib/nix/ruby2.6-Gemfile.lock +6 -2
  21. data/contrib/nix/ruby2.6-gemset.nix +24 -4
  22. data/contrib/nix/ruby2.6-shell.nix +2 -6
  23. data/contrib/nix/ruby2.7-Gemfile.lock +91 -0
  24. data/contrib/nix/ruby2.7-gemset.nix +359 -0
  25. data/contrib/nix/ruby2.7-shell.nix +2 -11
  26. data/contrib/nix/ruby3.0-Gemfile.lock +91 -0
  27. data/contrib/nix/ruby3.0-gemset.nix +359 -0
  28. data/contrib/nix/ruby3.0-shell.nix +2 -11
  29. data/contrib/nix/ruby3.1-Gemfile.lock +101 -0
  30. data/contrib/nix/ruby3.1-gemset.nix +391 -0
  31. data/contrib/nix/ruby3.1-shell.nix +3 -12
  32. data/contrib/nix/ruby3.2-Gemfile.lock +101 -0
  33. data/contrib/nix/ruby3.2-gemset.nix +391 -0
  34. data/contrib/nix/ruby3.2-shell.nix +3 -12
  35. data/contrib/nix/ruby3.3-shell.nix +1 -10
  36. data/contrib/nix/ruby3.4-shell.nix +27 -0
  37. data/contrib/nix/ruby4.0-shell.nix +40 -0
  38. data/contrib/nix/test-all-rubies.sh +1 -1
  39. data/lib/sup/account.rb +2 -0
  40. data/lib/sup/buffer.rb +1 -0
  41. data/lib/sup/contact.rb +3 -4
  42. data/lib/sup/crypto.rb +7 -5
  43. data/lib/sup/draft.rb +15 -11
  44. data/lib/sup/index.rb +8 -4
  45. data/lib/sup/maildir.rb +4 -0
  46. data/lib/sup/mbox.rb +25 -7
  47. data/lib/sup/message.rb +13 -10
  48. data/lib/sup/message_chunks.rb +0 -24
  49. data/lib/sup/mode.rb +1 -0
  50. data/lib/sup/modes/contact_list_mode.rb +0 -1
  51. data/lib/sup/modes/edit_message_mode.rb +6 -6
  52. data/lib/sup/modes/label_search_results_mode.rb +1 -2
  53. data/lib/sup/modes/line_cursor_mode.rb +22 -20
  54. data/lib/sup/modes/search_results_mode.rb +0 -1
  55. data/lib/sup/modes/thread_view_mode.rb +1 -2
  56. data/lib/sup/rfc2047.rb +5 -2
  57. data/lib/sup/source.rb +2 -0
  58. data/lib/sup/util.rb +9 -2
  59. data/lib/sup/version.rb +1 -1
  60. data/lib/sup.rb +1 -1
  61. data/man/sup-add.1 +18 -18
  62. data/man/sup-config.1 +12 -12
  63. data/man/sup-dump.1 +15 -14
  64. data/man/sup-import-dump.1 +24 -24
  65. data/man/sup-psych-ify-config-files.1 +11 -11
  66. data/man/sup-recover-sources.1 +20 -20
  67. data/man/sup-sync-back-maildir.1 +24 -23
  68. data/man/sup-sync.1 +35 -35
  69. data/man/sup-tweak-labels.1 +27 -26
  70. data/man/sup.1 +27 -27
  71. data/sup.gemspec +3 -1
  72. data/test/dummy_buffer.rb +34 -0
  73. data/test/dummy_source.rb +6 -0
  74. data/test/fixtures/contacts.txt +2 -1
  75. data/test/fixtures/embedded-message-rfc6532.eml +33 -0
  76. data/test/fixtures/invalid-date.eml +8 -0
  77. data/test/fixtures/rfc2047-header-encoding.eml +1 -1
  78. data/test/gnupg_test_home/private-keys-v1.d/26C05E44706A8E230B3255BB9532B34DC9420232.key +42 -0
  79. data/test/gnupg_test_home/private-keys-v1.d/D187ADC90EC4DEB7047678EAA37E33A53A465D47.key +5 -0
  80. data/test/gnupg_test_home/private-keys-v1.d/FB2D9BD3B1BE90B5BCF697781F8404224B0FCF5B.key +5 -0
  81. data/test/gnupg_test_home/pubring.gpg +0 -0
  82. data/test/gnupg_test_home/receiver_pubring.gpg +0 -0
  83. data/test/gnupg_test_home/receiver_secring.gpg +0 -0
  84. data/test/gnupg_test_home/regen_keys.sh +11 -2
  85. data/test/gnupg_test_home/secring.gpg +0 -0
  86. data/test/gnupg_test_home/sup-test-2@foo.bar.asc +20 -20
  87. data/test/integration/test_draft.rb +128 -0
  88. data/test/integration/test_maildir.rb +17 -1
  89. data/test/integration/test_mbox.rb +12 -0
  90. data/test/integration/test_sup-add.rb +4 -0
  91. data/test/test_crypto.rb +114 -72
  92. data/test/test_message.rb +43 -0
  93. data/test/unit/test_contact.rb +16 -4
  94. data/test/unit/test_edit_message_mode.rb +99 -0
  95. data/test/unit/test_index.rb +65 -0
  96. data/test/unit/test_line_cursor_mode.rb +208 -0
  97. data/test/unit/test_person.rb +3 -3
  98. data/test/unit/test_rmail_message.rb +36 -0
  99. data/test/unit/util/test_string.rb +3 -3
  100. metadata +64 -9
  101. data/shell.nix +0 -1
  102. data/test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key +0 -0
@@ -0,0 +1,208 @@
1
+ require "test_helper"
2
+ require "dummy_buffer"
3
+
4
+ require "sup"
5
+
6
+ class TestLineCursorMode < Minitest::Test
7
+ def setup
8
+ $config = {
9
+ :load_more_threads_hysteresis => 0,
10
+ :load_more_threads_when_scrolling => true,
11
+ :continuous_scroll => false,
12
+ }
13
+ Redwood::BufferManager.init
14
+ @modes_to_cleanup = []
15
+ @lines = []
16
+ @load_more = Thread::Queue.new
17
+ @buffer_height = 41 # 1 for status line, 40 usable lines
18
+ end
19
+
20
+ def teardown
21
+ @modes_to_cleanup.each { |mode| mode.cleanup }
22
+ Redwood::BufferManager.deinstantiate!
23
+ $config = nil
24
+ end
25
+
26
+ def make_mode
27
+ mode = Redwood::LineCursorMode.new
28
+ @modes_to_cleanup << mode
29
+ lines = @lines
30
+ mode.define_singleton_method(:lines) { lines.length }
31
+ mode.define_singleton_method(:[]) { |i| lines[i] }
32
+ mode.send(:to_load_more) { |n| @load_more << n }
33
+ mode.buffer = Redwood::DummyBuffer.new 100, @buffer_height
34
+ mode.spawned
35
+ mode.draw
36
+ mode
37
+ end
38
+
39
+ def expect_load_more n
40
+ begin
41
+ requested = @load_more.pop :timeout => 0.1
42
+ rescue ThreadError
43
+ ## Ruby < 3.2 does not obey the timeout for Queue#pop
44
+ sleep 0.1
45
+ requested = @load_more.pop true
46
+ end
47
+ refute_nil requested, "Expected load_more callbacks to fire"
48
+ assert_equal n, requested
49
+ (0...n).map { |i| @lines << "line #{i}" }
50
+ end
51
+
52
+ def test_cursor_down
53
+ mode = make_mode
54
+ expect_load_more 41
55
+ mode.draw # curpos gets messed up without this call, why?
56
+
57
+ 21.times do
58
+ mode.handle_input Ncurses::CharCode.character('j')
59
+ end
60
+ assert_equal 21, mode.curpos
61
+ assert_equal 0, mode.topline
62
+
63
+ ## Two past halfway, load_more callbacks are triggered.
64
+ mode.handle_input Ncurses::CharCode.character('j')
65
+ assert_equal 22, mode.curpos
66
+ expect_load_more 40
67
+
68
+ 17.times do
69
+ mode.handle_input Ncurses::CharCode.character('j')
70
+ end
71
+ assert_equal 39, mode.curpos
72
+ assert_equal 0, mode.topline
73
+
74
+ ## From the bottom line, it wraps back to the top of the next page.
75
+ mode.handle_input Ncurses::CharCode.character('j')
76
+ assert_equal 40, mode.curpos
77
+ assert_equal 40, mode.topline
78
+ end
79
+
80
+ def test_scroll_down
81
+ mode = make_mode
82
+ expect_load_more 41
83
+
84
+ ## When the cursor is already at the top, it moves with the scroll.
85
+ assert_equal 0, mode.curpos
86
+ assert_equal 0, mode.topline
87
+ mode.handle_input Ncurses::CharCode.character('J')
88
+ assert_equal 1, mode.curpos
89
+ assert_equal 1, mode.topline
90
+
91
+ 3.times do
92
+ mode.handle_input Ncurses::CharCode.character('j')
93
+ end
94
+ assert_equal 4, mode.curpos
95
+ assert_equal 1, mode.topline
96
+
97
+ ## When the cursor is not at the top, it keeps its place and the
98
+ ## buffer scrolls underneath it.
99
+ mode.handle_input Ncurses::CharCode.character('J')
100
+ assert_equal 4, mode.curpos
101
+ assert_equal 2, mode.topline
102
+
103
+ ## It always loads 10 more if we would scroll past the bottom.
104
+ expect_load_more 10
105
+ end
106
+
107
+ def test_page_down
108
+ mode = make_mode
109
+ expect_load_more 41
110
+
111
+ mode.handle_input Ncurses::CharCode.keycode(Ncurses::KEY_NPAGE)
112
+ assert_equal 40, mode.curpos
113
+ assert_equal 40, mode.topline
114
+ expect_load_more 40
115
+
116
+ mode.handle_input Ncurses::CharCode.keycode(Ncurses::KEY_NPAGE)
117
+ assert_equal 80, mode.curpos
118
+ assert_equal 80, mode.topline
119
+ assert_equal 81, mode.lines
120
+ expect_load_more 40
121
+ end
122
+
123
+ def test_page_down_when_fully_populated
124
+ mode = make_mode
125
+ expect_load_more 41
126
+ (0...119).map { |i| @lines << "more line #{i}" } # enough for 4 full pages
127
+
128
+ mode.handle_input Ncurses::CharCode.keycode(Ncurses::KEY_NPAGE)
129
+ assert_equal 40, mode.curpos
130
+ assert_equal 40, mode.topline
131
+
132
+ ## Relative cursor position is preserved when paging down.
133
+ 3.times do
134
+ mode.handle_input Ncurses::CharCode.character('j')
135
+ end
136
+ assert_equal 43, mode.curpos
137
+ assert_equal 40, mode.topline
138
+ mode.handle_input Ncurses::CharCode.keycode(Ncurses::KEY_NPAGE)
139
+ assert_equal 83, mode.curpos
140
+ assert_equal 80, mode.topline
141
+ end
142
+
143
+ def test_half_page_down
144
+ mode = make_mode
145
+ expect_load_more 41
146
+
147
+ mode.handle_input Ncurses::CharCode.character("\C-d")
148
+ assert_equal 20, mode.curpos
149
+ assert_equal 20, mode.topline
150
+ expect_load_more 40
151
+
152
+ mode.handle_input Ncurses::CharCode.character("\C-d")
153
+ assert_equal 40, mode.curpos
154
+ assert_equal 40, mode.topline
155
+ end
156
+
157
+ def test_half_page_down_when_fully_populated
158
+ mode = make_mode
159
+ expect_load_more 41
160
+ (0...119).map { |i| @lines << "more line #{i}" } # enough for 4 full pages
161
+
162
+ mode.handle_input Ncurses::CharCode.character("\C-d")
163
+ assert_equal 20, mode.curpos
164
+ assert_equal 20, mode.topline
165
+
166
+ 25.times do
167
+ mode.handle_input Ncurses::CharCode.character('j')
168
+ end
169
+ assert_equal 45, mode.curpos
170
+ assert_equal 20, mode.topline
171
+ mode.handle_input Ncurses::CharCode.character("\C-d")
172
+ assert_equal 45, mode.curpos
173
+ assert_equal 40, mode.topline
174
+ end
175
+
176
+ def test_half_page_up
177
+ mode = make_mode
178
+ expect_load_more 41
179
+ (0...119).map { |i| @lines << "more line #{i}" } # enough for 4 full pages
180
+
181
+ mode.handle_input Ncurses::CharCode.keycode(Ncurses::KEY_NPAGE)
182
+ assert_equal 40, mode.curpos
183
+ assert_equal 40, mode.topline
184
+
185
+ mode.handle_input Ncurses::CharCode.character("\C-u")
186
+ assert_equal 40, mode.curpos
187
+ assert_equal 20, mode.topline
188
+
189
+ mode.handle_input Ncurses::CharCode.character('j')
190
+ assert_equal 41, mode.curpos
191
+ assert_equal 20, mode.topline
192
+
193
+ mode.handle_input Ncurses::CharCode.character("\C-u")
194
+ assert_equal 40, mode.curpos
195
+ assert_equal 0, mode.topline
196
+ end
197
+
198
+ def test_jump_to_end
199
+ mode = make_mode
200
+ expect_load_more 41
201
+
202
+ mode.handle_input Ncurses::CharCode.keycode(Ncurses::KEY_END)
203
+ assert_equal 40, mode.curpos
204
+ assert_equal 1, mode.topline
205
+ assert_equal 41, mode.botline
206
+ expect_load_more 40
207
+ end
208
+ end
@@ -5,12 +5,12 @@ module Redwood
5
5
 
6
6
  class TestPerson < Minitest::Test
7
7
  def setup
8
- @person = Person.new("Thomassen, Bob", "bob@thomassen.com")
9
- @no_name = Person.new(nil, "alice@alice.com")
8
+ @person = Person.new(+"Thomassen, Bob", +"bob@thomassen.com")
9
+ @no_name = Person.new(nil, +"alice@alice.com")
10
10
  end
11
11
 
12
12
  def test_email_must_be_supplied
13
- assert_raises (ArgumentError) { Person.new("Alice", nil) }
13
+ assert_raises (ArgumentError) { Person.new(+"Alice", nil) }
14
14
  end
15
15
 
16
16
  def test_to_string
@@ -0,0 +1,36 @@
1
+ require "test_helper"
2
+
3
+ require "sup"
4
+
5
+ class TestRMailMessage < Minitest::Test
6
+ def setup
7
+ @path = Dir.mktmpdir
8
+ end
9
+
10
+ def teardown
11
+ FileUtils.rm_r @path
12
+ end
13
+
14
+ def test_make_file_attachment
15
+ filename = File.join @path, "test.html"
16
+ File.write filename, "<html></html>"
17
+
18
+ a = RMail::Message.make_file_attachment(filename)
19
+ assert_equal "text/html; name=\"test.html\"", a.header["Content-Type"]
20
+ assert_equal "attachment; filename=\"test.html\"", a.header["Content-Disposition"]
21
+ assert_equal "8bit", a.header["Content-Transfer-Encoding"]
22
+ end
23
+
24
+ def test_make_file_attachment_text_with_long_lines
25
+ filename = File.join @path, "test.html"
26
+ File.write filename, "a" * 1023
27
+
28
+ a = RMail::Message.make_file_attachment(filename)
29
+ assert_equal "text/html; name=\"test.html\"", a.header["Content-Type"]
30
+ assert_equal "attachment; filename=\"test.html\"", a.header["Content-Disposition"]
31
+ assert_equal "quoted-printable", a.header["Content-Transfer-Encoding"]
32
+
33
+ qp_encoded = ("a" * 73 + "=\n") * 14 + "a=\n"
34
+ assert_equal qp_encoded, a.body
35
+ end
36
+ end
@@ -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
- assert_equal length, str.display_length
21
+ assert_equal length, str.dup.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
- assert_equal sliced, str.slice_by_display_length(length)
39
+ assert_equal sliced, str.dup.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
- assert_equal wrapped, str.wrap(length)
59
+ assert_equal wrapped, str.dup.wrap(length)
60
60
  end
61
61
  end
62
62
  end
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sup
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: '1.4'
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:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2024-04-21 00:00:00.000000000 Z
13
+ date: 2026-04-21 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: ncursesw
@@ -159,6 +158,34 @@ dependencies:
159
158
  - - ">="
160
159
  - !ruby/object:Gem::Version
161
160
  version: '0'
161
+ - !ruby/object:Gem::Dependency
162
+ name: benchmark
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ type: :runtime
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ - !ruby/object:Gem::Dependency
176
+ name: fiddle
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
162
189
  - !ruby/object:Gem::Dependency
163
190
  name: bundler
164
191
  requirement: !ruby/object:Gem::Requirement
@@ -336,11 +363,21 @@ files:
336
363
  - contrib/nix/ruby2.6-Gemfile.lock
337
364
  - contrib/nix/ruby2.6-gemset.nix
338
365
  - contrib/nix/ruby2.6-shell.nix
366
+ - contrib/nix/ruby2.7-Gemfile.lock
367
+ - contrib/nix/ruby2.7-gemset.nix
339
368
  - contrib/nix/ruby2.7-shell.nix
369
+ - contrib/nix/ruby3.0-Gemfile.lock
370
+ - contrib/nix/ruby3.0-gemset.nix
340
371
  - contrib/nix/ruby3.0-shell.nix
372
+ - contrib/nix/ruby3.1-Gemfile.lock
373
+ - contrib/nix/ruby3.1-gemset.nix
341
374
  - contrib/nix/ruby3.1-shell.nix
375
+ - contrib/nix/ruby3.2-Gemfile.lock
376
+ - contrib/nix/ruby3.2-gemset.nix
342
377
  - contrib/nix/ruby3.2-shell.nix
343
378
  - contrib/nix/ruby3.3-shell.nix
379
+ - contrib/nix/ruby3.4-shell.nix
380
+ - contrib/nix/ruby4.0-shell.nix
344
381
  - contrib/nix/test-all-rubies.sh
345
382
  - devel/console.sh
346
383
  - devel/count-loc.sh
@@ -428,14 +465,16 @@ files:
428
465
  - man/sup-sync.1
429
466
  - man/sup-tweak-labels.1
430
467
  - man/sup.1
431
- - shell.nix
432
468
  - sup.gemspec
469
+ - test/dummy_buffer.rb
433
470
  - test/dummy_source.rb
434
471
  - test/fixtures/bad-content-transfer-encoding-1.eml
435
472
  - test/fixtures/binary-content-transfer-encoding-2.eml
436
473
  - test/fixtures/blank-header-fields.eml
437
474
  - test/fixtures/contacts.txt
475
+ - test/fixtures/embedded-message-rfc6532.eml
438
476
  - test/fixtures/embedded-message.eml
477
+ - test/fixtures/invalid-date.eml
439
478
  - test/fixtures/mailing-list-header.eml
440
479
  - test/fixtures/malicious-attachment-names.eml
441
480
  - test/fixtures/missing-from-to.eml
@@ -452,13 +491,16 @@ files:
452
491
  - test/fixtures/zimbra-quote-with-bottom-post.eml
453
492
  - test/gnupg_test_home/.gpg-v21-migrated
454
493
  - test/gnupg_test_home/gpg.conf
455
- - test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key
494
+ - test/gnupg_test_home/private-keys-v1.d/26C05E44706A8E230B3255BB9532B34DC9420232.key
495
+ - test/gnupg_test_home/private-keys-v1.d/D187ADC90EC4DEB7047678EAA37E33A53A465D47.key
496
+ - test/gnupg_test_home/private-keys-v1.d/FB2D9BD3B1BE90B5BCF697781F8404224B0FCF5B.key
456
497
  - test/gnupg_test_home/pubring.gpg
457
498
  - test/gnupg_test_home/receiver_pubring.gpg
458
499
  - test/gnupg_test_home/receiver_secring.gpg
459
500
  - test/gnupg_test_home/regen_keys.sh
460
501
  - test/gnupg_test_home/secring.gpg
461
502
  - test/gnupg_test_home/sup-test-2@foo.bar.asc
503
+ - test/integration/test_draft.rb
462
504
  - test/integration/test_maildir.rb
463
505
  - test/integration/test_mbox.rb
464
506
  - test/integration/test_sup-add.rb
@@ -471,13 +513,17 @@ files:
471
513
  - test/test_yaml_regressions.rb
472
514
  - test/unit/service/test_label_service.rb
473
515
  - test/unit/test_contact.rb
516
+ - test/unit/test_edit_message_mode.rb
474
517
  - test/unit/test_horizontal_selector.rb
518
+ - test/unit/test_index.rb
519
+ - test/unit/test_line_cursor_mode.rb
475
520
  - test/unit/test_locale_fiddler.rb
476
521
  - test/unit/test_person.rb
522
+ - test/unit/test_rmail_message.rb
477
523
  - test/unit/util/test_query.rb
478
524
  - test/unit/util/test_string.rb
479
525
  - test/unit/util/test_uri.rb
480
- homepage: https://sup-heliotrope.github.io/
526
+ homepage: https://supmua.dev/
481
527
  licenses:
482
528
  - GPL-2.0
483
529
  metadata: {}
@@ -504,17 +550,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
504
550
  - !ruby/object:Gem::Version
505
551
  version: '0'
506
552
  requirements: []
507
- rubygems_version: 3.4.22
508
- signing_key:
553
+ rubygems_version: 3.7.2
509
554
  specification_version: 4
510
555
  summary: A console-based email client with the best features of GMail, mutt and Emacs
511
556
  test_files:
557
+ - test/dummy_buffer.rb
512
558
  - test/dummy_source.rb
513
559
  - test/fixtures/bad-content-transfer-encoding-1.eml
514
560
  - test/fixtures/binary-content-transfer-encoding-2.eml
515
561
  - test/fixtures/blank-header-fields.eml
516
562
  - test/fixtures/contacts.txt
563
+ - test/fixtures/embedded-message-rfc6532.eml
517
564
  - test/fixtures/embedded-message.eml
565
+ - test/fixtures/invalid-date.eml
518
566
  - test/fixtures/mailing-list-header.eml
519
567
  - test/fixtures/malicious-attachment-names.eml
520
568
  - test/fixtures/missing-from-to.eml
@@ -531,13 +579,16 @@ test_files:
531
579
  - test/fixtures/zimbra-quote-with-bottom-post.eml
532
580
  - test/gnupg_test_home/.gpg-v21-migrated
533
581
  - test/gnupg_test_home/gpg.conf
534
- - test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key
582
+ - test/gnupg_test_home/private-keys-v1.d/26C05E44706A8E230B3255BB9532B34DC9420232.key
583
+ - test/gnupg_test_home/private-keys-v1.d/D187ADC90EC4DEB7047678EAA37E33A53A465D47.key
584
+ - test/gnupg_test_home/private-keys-v1.d/FB2D9BD3B1BE90B5BCF697781F8404224B0FCF5B.key
535
585
  - test/gnupg_test_home/pubring.gpg
536
586
  - test/gnupg_test_home/receiver_pubring.gpg
537
587
  - test/gnupg_test_home/receiver_secring.gpg
538
588
  - test/gnupg_test_home/regen_keys.sh
539
589
  - test/gnupg_test_home/secring.gpg
540
590
  - test/gnupg_test_home/sup-test-2@foo.bar.asc
591
+ - test/integration/test_draft.rb
541
592
  - test/integration/test_maildir.rb
542
593
  - test/integration/test_mbox.rb
543
594
  - test/integration/test_sup-add.rb
@@ -550,9 +601,13 @@ test_files:
550
601
  - test/test_yaml_regressions.rb
551
602
  - test/unit/service/test_label_service.rb
552
603
  - test/unit/test_contact.rb
604
+ - test/unit/test_edit_message_mode.rb
553
605
  - test/unit/test_horizontal_selector.rb
606
+ - test/unit/test_index.rb
607
+ - test/unit/test_line_cursor_mode.rb
554
608
  - test/unit/test_locale_fiddler.rb
555
609
  - test/unit/test_person.rb
610
+ - test/unit/test_rmail_message.rb
556
611
  - test/unit/util/test_query.rb
557
612
  - test/unit/util/test_string.rb
558
613
  - test/unit/util/test_uri.rb
data/shell.nix DELETED
@@ -1 +0,0 @@
1
- contrib/nix/ruby3.3-shell.nix