Backport #5725
closedCoverage doesn't honor file path encodings
Description
以下のように、カバレッジの出力がファイルパスのエンコーディングを無視しています。
これのせいでsimplecovがこけて気づきました。
Updated by mame (Yusuke Endoh) almost 13 years ago
- ruby -v changed from ruby 2.0.0dev (2011-12-08 trunk 33977) [x86_64-linux] to -
遠藤です。
2011/12/8, Shyouhei Urabe shyouhei@ruby-lang.org:
以下のように、カバレッジの出力がファイルパスのエンコーディングを無視しています。
これのせいでsimplecovがこけて気づきました。
ありがとうございます。
この問題は、ありそうな予感はしていたのですが気がつかなかったことに
していました。
とりあえず rb_filesystem_encoding() の String インスタンスを作る
ようにするパッチ (FILE でも取られている手) を書いてみましたが、
M17N はよくわからないので、成瀬さんのご意見を聞きたいです。
diff --git a/parse.y b/parse.y
index 3061ed8..b2081a0 100644
--- a/parse.y
+++ b/parse.y
@@ -5167,7 +5167,7 @@ coverage(const char *f, int n)
{
VALUE coverages = rb_get_coverages();
if (RTEST(coverages) && RBASIC(coverages)->klass == 0) {
- VALUE fname = rb_str_new2(f);
- VALUE fname = rb_external_str_new_with_enc(f, strlen(f),
rb_filesystem_encoding());
VALUE lines = rb_ary_new2(n);
int i;
RBASIC(lines)->klass = 0;
そもそもの原因は、parse.y や load.c や eval 回りを中心にコア内部の
色んなところでソースファイル名が char * として扱われている事なので、
根本的な対策としては、ファイル名を片っ端から String インスタンスに
置き換えていくことだと思いますが、公開 API まで巻き込んだ大規模な
修正になるような気がします。
--
Yusuke Endoh mame@tsg.ne.jp
Updated by naruse (Yui NARUSE) almost 13 years ago
成瀬です。
(2011/12/08 20:40), Yusuke Endoh wrote:
2011/12/8, Shyouhei Urabe shyouhei@ruby-lang.org:
以下のように、カバレッジの出力がファイルパスのエンコーディングを無視しています。
これのせいでsimplecovがこけて気づきました。ありがとうございます。
この問題は、ありそうな予感はしていたのですが気がつかなかったことに
していました。とりあえず rb_filesystem_encoding() の String インスタンスを作る
ようにするパッチ (FILE でも取られている手) を書いてみましたが、
M17N はよくわからないので、成瀬さんのご意見を聞きたいです。
[ruby-dev:44953] のパッチでよいと思います。
--
NARUSE, Yui naruse@airemix.jp
Updated by mame (Yusuke Endoh) over 12 years ago
r22366 でコミットしました。
--
Yusuke Endoh mame@tsg.ne.jp
Updated by mame (Yusuke Endoh) over 12 years ago
- Status changed from Assigned to Closed
Updated by naruse (Yui NARUSE) over 12 years ago
- Tracker changed from Bug to Backport
- Project changed from Ruby master to Backport193
- Category deleted (
M17N) - Status changed from Closed to Open
Backport r34415.
Updated by naruse (Yui NARUSE) over 12 years ago
- Status changed from Open to Closed
Backported in r34600.