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.
- checksums.yaml +4 -4
- data/.github/workflows/checks.yml +19 -4
- data/.gitmodules +1 -0
- data/.rubocop.yml +1 -1
- data/History.txt +33 -0
- data/Manifest.txt +21 -2
- data/README.md +5 -3
- data/Rakefile +1 -1
- data/bin/sup +5 -3
- data/contrib/nix/Gemfile +2 -0
- data/contrib/nix/Gemfile.lock +62 -34
- data/contrib/nix/gem-install-shell.nix +2 -0
- data/contrib/nix/gemset.nix +130 -56
- data/contrib/nix/ruby2.4-Gemfile.lock +6 -2
- data/contrib/nix/ruby2.4-gemset.nix +24 -4
- data/contrib/nix/ruby2.4-shell.nix +2 -6
- data/contrib/nix/ruby2.5-Gemfile.lock +6 -2
- data/contrib/nix/ruby2.5-gemset.nix +24 -4
- data/contrib/nix/ruby2.5-shell.nix +2 -6
- data/contrib/nix/ruby2.6-Gemfile.lock +6 -2
- data/contrib/nix/ruby2.6-gemset.nix +24 -4
- data/contrib/nix/ruby2.6-shell.nix +2 -6
- data/contrib/nix/ruby2.7-Gemfile.lock +91 -0
- data/contrib/nix/ruby2.7-gemset.nix +359 -0
- data/contrib/nix/ruby2.7-shell.nix +2 -11
- data/contrib/nix/ruby3.0-Gemfile.lock +91 -0
- data/contrib/nix/ruby3.0-gemset.nix +359 -0
- data/contrib/nix/ruby3.0-shell.nix +2 -11
- data/contrib/nix/ruby3.1-Gemfile.lock +101 -0
- data/contrib/nix/ruby3.1-gemset.nix +391 -0
- data/contrib/nix/ruby3.1-shell.nix +3 -12
- data/contrib/nix/ruby3.2-Gemfile.lock +101 -0
- data/contrib/nix/ruby3.2-gemset.nix +391 -0
- data/contrib/nix/ruby3.2-shell.nix +3 -12
- data/contrib/nix/ruby3.3-shell.nix +1 -10
- data/contrib/nix/ruby3.4-shell.nix +27 -0
- data/contrib/nix/ruby4.0-shell.nix +40 -0
- data/contrib/nix/test-all-rubies.sh +1 -1
- data/lib/sup/account.rb +2 -0
- data/lib/sup/buffer.rb +1 -0
- data/lib/sup/contact.rb +3 -4
- data/lib/sup/crypto.rb +7 -5
- data/lib/sup/draft.rb +15 -11
- data/lib/sup/index.rb +8 -4
- data/lib/sup/maildir.rb +4 -0
- data/lib/sup/mbox.rb +25 -7
- data/lib/sup/message.rb +13 -10
- data/lib/sup/message_chunks.rb +0 -24
- data/lib/sup/mode.rb +1 -0
- data/lib/sup/modes/contact_list_mode.rb +0 -1
- data/lib/sup/modes/edit_message_mode.rb +6 -6
- data/lib/sup/modes/label_search_results_mode.rb +1 -2
- data/lib/sup/modes/line_cursor_mode.rb +22 -20
- data/lib/sup/modes/search_results_mode.rb +0 -1
- data/lib/sup/modes/thread_view_mode.rb +1 -2
- data/lib/sup/rfc2047.rb +5 -2
- data/lib/sup/source.rb +2 -0
- data/lib/sup/util.rb +9 -2
- data/lib/sup/version.rb +1 -1
- data/lib/sup.rb +1 -1
- data/man/sup-add.1 +18 -18
- data/man/sup-config.1 +12 -12
- data/man/sup-dump.1 +15 -14
- data/man/sup-import-dump.1 +24 -24
- data/man/sup-psych-ify-config-files.1 +11 -11
- data/man/sup-recover-sources.1 +20 -20
- data/man/sup-sync-back-maildir.1 +24 -23
- data/man/sup-sync.1 +35 -35
- data/man/sup-tweak-labels.1 +27 -26
- data/man/sup.1 +27 -27
- data/sup.gemspec +3 -1
- data/test/dummy_buffer.rb +34 -0
- data/test/dummy_source.rb +6 -0
- data/test/fixtures/contacts.txt +2 -1
- data/test/fixtures/embedded-message-rfc6532.eml +33 -0
- data/test/fixtures/invalid-date.eml +8 -0
- data/test/fixtures/rfc2047-header-encoding.eml +1 -1
- data/test/gnupg_test_home/private-keys-v1.d/26C05E44706A8E230B3255BB9532B34DC9420232.key +42 -0
- data/test/gnupg_test_home/private-keys-v1.d/D187ADC90EC4DEB7047678EAA37E33A53A465D47.key +5 -0
- data/test/gnupg_test_home/private-keys-v1.d/FB2D9BD3B1BE90B5BCF697781F8404224B0FCF5B.key +5 -0
- data/test/gnupg_test_home/pubring.gpg +0 -0
- data/test/gnupg_test_home/receiver_pubring.gpg +0 -0
- data/test/gnupg_test_home/receiver_secring.gpg +0 -0
- data/test/gnupg_test_home/regen_keys.sh +11 -2
- data/test/gnupg_test_home/secring.gpg +0 -0
- data/test/gnupg_test_home/sup-test-2@foo.bar.asc +20 -20
- data/test/integration/test_draft.rb +128 -0
- data/test/integration/test_maildir.rb +17 -1
- data/test/integration/test_mbox.rb +12 -0
- data/test/integration/test_sup-add.rb +4 -0
- data/test/test_crypto.rb +114 -72
- data/test/test_message.rb +43 -0
- data/test/unit/test_contact.rb +16 -4
- data/test/unit/test_edit_message_mode.rb +99 -0
- data/test/unit/test_index.rb +65 -0
- data/test/unit/test_line_cursor_mode.rb +208 -0
- data/test/unit/test_person.rb +3 -3
- data/test/unit/test_rmail_message.rb +36 -0
- data/test/unit/util/test_string.rb +3 -3
- metadata +64 -9
- data/shell.nix +0 -1
- 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
|
data/test/unit/test_person.rb
CHANGED
|
@@ -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.
|
|
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:
|
|
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/
|
|
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://
|
|
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.
|
|
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/
|
|
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
|