UnicodeClojureユニットテスト出力
-
27-10-2019 - |
質問
ASCIIシーケンスをUnicode文字に変換するコードを単体テストすると、Clojureテストの出力に問題があることがわかりました。
端末がUnicode文字を出力できることをテストしました(テストファイルをカタログ化することにより)。これは正常に機能するため、問題はleiningen、Clojure、またはclojure.testに何らかの形で関連しているようです。
テストの例を次に示します(ユニコードのギリシャ語セクションを使用します。ギリシャ拡張文字も使用しますが、同じ問題が当てはまると思います): ジェネラコディセタグプレ
入力にスペースがないために失敗することを意味します。 lein test
からの出力は次のとおりです。
ジェネラコディセタグプレ
ここで何が間違っているのですか?これは端末エミュレーションの問題ですか、それともclojureに関連する問題ですか? Slime / swank / emacsを使用してREPLでコードを実行するときに同じ問題が発生します。 emacsのREPLは、Unicode出力の疑問符のみを出力します(ただし、emacsはUnicodeを十分に理解できます)。
これをターミナルとiTerm(OS X)で実行してみましたが、同じ結果になりました。
解決
Javaにオプションを渡して、*out*
の出力エンコーディングを強制し、Unicodeが次のように機能するようにすることができます。
ジェネラコディセタグプレ
Leiningenを使用しているので、このプロパティをproject.cljファイルに追加しました: ジェネラコディセタグプレ
他のヒント
Clojure自体は明確に見えます(これはUbuntu 10.10、gnome-terminal、OpenJDKです): ジェネラコディセタグプレ
しかし、emacs / swank / clojure-maven-plugin / mavenを壊します
emacsのREPLで: ジェネラコディセタグプレ
maven、以下の単純なpomファイル、およびmvn clojure:replを使用する場合は、問題ありません: ジェネラコディセタグプレ
ただし、このスニペットを使用してjlineライブラリを追加した場合: ジェネラコディセタグプレ
それから私は得る: ジェネラコディセタグプレ
これはあなたのエラーにひどく似ています。したがって、問題はjLine、またはLeiningenとMavenに共通するjLineに関連する他の部分にある可能性があります。
またはもちろん、2つの独立したUnicode関連の障害が発生する可能性があります。
誰かがこれをデバッグしようとしている場合に備えて、これが私のmavenpom.xmlファイルです。 ジェネラコディセタグプレ
これが答えではないことを感謝しますが、役立つかもしれないと思いました。