sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 4d685e38a1670d0615f031c2e46bc9313fe74c6c
parent f53aa68537269af57f147f355feeb747136bee46
Author: Whyme Lyu <callme5long@gmail.com>
Date:   Sat,  6 Jul 2013 22:47:17 -0700

Merge pull request #96 from 5long/fix-encoding-of-query-desc

Fix encoding of query description
Diffstat:
M lib/sup/index.rb | 2 +-
A lib/sup/util/query.rb | 9 +++++++++
A test/unit/util/test_query.rb | 22 ++++++++++++++++++++++
3 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/lib/sup/index.rb b/lib/sup/index.rb
@@ -448,7 +448,7 @@ EOS
       raise ParseError, "xapian query parser error: #{e}"
     end
 
-    debug "parsed xapian query: #{xapian_query.description}"
+    debug "parsed xapian query: #{Util::Query.describe(xapian_query)}"
 
     raise ParseError if xapian_query.nil? or xapian_query.empty?
     query[:qobj] = xapian_query
diff --git a/lib/sup/util/query.rb b/lib/sup/util/query.rb
@@ -0,0 +1,9 @@
+module Redwood
+  module Util
+    module Query
+      def self.describe query
+        query.description.force_encoding("UTF-8")
+      end
+    end
+  end
+end
diff --git a/test/unit/util/test_query.rb b/test/unit/util/test_query.rb
@@ -0,0 +1,22 @@
+# encoding: utf-8
+
+require "test_helper"
+
+require "sup/util/query"
+require "xapian"
+
+describe Redwood::Util::Query do
+  describe ".describe" do
+    it "returns a UTF-8 description of query" do
+      query = Xapian::Query.new "テスト"
+      life = "生活: "
+
+      assert_raises Encoding::CompatibilityError do
+        _ = life + query.description
+      end
+
+      desc = Redwood::Util::Query.describe(query)
+      _ = (life + desc) # No exception thrown
+    end
+  end
+end