Project

General

Profile

Actions

Bug #12199

closed

About msys2 path conversion measures in make test-all

Added by moritat (Tsuyoshi Morita) over 8 years ago. Updated over 8 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0dev (2016-03-16) [i386-mingw32]
[ruby-dev:49525]

Description

ruby 2.3以降、make test-allの際のテスト除外の指定に正規表現リテラルを
用いるようになったと思います。

これにより、Windowsでのmsys, msys2を用いたbuild環境でmake test-allを実行した場合、
--name=!/memory_leak/ → --name=!c:/msys64/memory_leak/のようにpath変換が行われてしまい、
意図した除外が行われません。

現時点のtrunkでは全て除外され、テスト件数0になります。

# Running tests:

Finished tests in 7.813343s, 0.0000 tests/s, 0.0000 assertions/s.
0 tests, 0 assertions, 0 failures, 0 errors, 0 skips

対策を2案考えました。1ができれば最良です。

1."/"を含めない方式で正規表現を指定するようにする

ex:
--name=/pattern/ → --name=pattern
--name=!/pattern/ → --name-not=pattern
-x /pattern/ → -x pattern

2.オプションとそのパラメータをひとくくりに認識できるようにする

こちらは、1の修正がNGな場合、msys2だけで回避する次善の策になります。
msysは対応できません。
補足:RubyInstallerのbuild環境は、msys2に移行する動きはありますが、まだmsysです。

既に仕組みはあるので、uncommon.mk の記述方法を変えます。

ex:
--name=/pattern/ → --name=/pattern/ (変更なし)
--name=!/pattern/ → --name=!/pattern/ (変更なし)
-x /pattern/ → --exclude=/pattern/

説明:

msys2では、環境変数 MSYS2_ARG_CONV_EXCL="pattern1;pattern2"のように
設定することでマッチする引数のパス変換を抑制できるようになっています。
繰り返しになりますが、変数名からわかるようにmsysは対応していません。

これを make test-all の時にだけ設定します。

-x /pattern/ の指定方法だと、
MSYS2_ARG_CONV_EXCL="/pattern/"
としなければならず、指定するオプションのパラメータが変わると、
設定する値も変える必要があります。

--exclude=/pattern/ の指定方法だと、
MSYS2_ARG_CONV_EXCL="--exclude="
とすれば、指定するオプションのパラメータによりません。


Files

GNUmakefile.in.patch (848 Bytes) GNUmakefile.in.patch moritat (Tsuyoshi Morita), 03/22/2016 03:53 PM
Makefile_test (186 Bytes) Makefile_test moritat (Tsuyoshi Morita), 03/22/2016 03:53 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0