Project

General

Profile

Backport #5725

Coverage doesn't honor file path encodings

Added by shyouhei (Shyouhei Urabe) almost 8 years ago. Updated over 7 years ago.

Status:
Closed
Priority:
Normal
[ruby-dev:44950]

Description

以下のように、カバレッジの出力がファイルパスのエンコーディングを無視しています。
これのせいでsimplecovがこけて気づきました。

https://gist.github.com/1445972

History

Updated by mame (Yusuke Endoh) almost 8 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 8 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 7 years ago

r22366 でコミットしました。

--
Yusuke Endoh mame@tsg.ne.jp

Updated by mame (Yusuke Endoh) over 7 years ago

  • Status changed from Assigned to Closed
#5

Updated by naruse (Yui NARUSE) over 7 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 7 years ago

  • Status changed from Open to Closed

Backported in r34600.

Also available in: Atom PDF