sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit a2bd945dc883e8f65222e84c61a72bd3541fac70
parent aeefd695c6ebeb8c486590a49e38db466f43c3bc
Author: Dan Callaghan <djc@djc.id.au>
Date:   Sun, 27 Apr 2025 17:45:59 +1000

fix typo in DraftManager#discard handling already deleted draft

Diffstat:
M lib/sup/draft.rb | 2 +-
M test/integration/test_draft.rb | 12 ++++++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/lib/sup/draft.rb b/lib/sup/draft.rb
@@ -23,7 +23,7 @@ class DraftManager
   def discard m
     raise ArgumentError, "not a draft: source id #{m.source.id.inspect}, should be #{DraftManager.source_id.inspect} for #{m.id.inspect}" unless m.source.id.to_i == DraftManager.source_id
     Index.delete m.id
-    File.delete @source.fn_for_offset(m.source_info) rescue Errono::ENOENT
+    File.delete @source.fn_for_offset(m.source_info) rescue Errno::ENOENT
     UpdateManager.relay self, :single_message_deleted, m
   end
 end
diff --git a/test/integration/test_draft.rb b/test/integration/test_draft.rb
@@ -55,4 +55,16 @@ EOS
     DraftManager.discard message_in_index
     refute File.exist? draft_filename
   end
+
+  def test_discard_already_deleted_from_disk
+    DraftManager.write_draft { |f| f.write @test_message_1 }
+    draft_filename = File.join @draft_dir, "0"
+    assert File.exist? draft_filename
+    message_in_index = Index.instance.enum_for(:each_message).to_a.first
+
+    File.delete draft_filename
+
+    DraftManager.discard message_in_index
+    refute File.exist? draft_filename
+  end
 end