Autojump: autojump_match.py​​での不適切なバックスラッシュ処理が原因でWindowsでクラッシュする

作成日 2016年08月01日  ·  7コメント  ·  ソース: wting/autojump

Windowsで通常の自動ジャンプコマンドを実行すると、次のようになります。

Traceback (most recent call last):
  File "C:\Program Files (x86)\CowShell\Vendor\AutoJump\bin\\autojump", line 320, in <module>
    sys.exit(main(parse_arguments()))
  File "C:\Program Files (x86)\CowShell\Vendor\AutoJump\bin\\autojump", line 314, in main
    ['.'])))
  File "C:\Program Files (x86)\CowShell\Vendor\AutoJump\bin\autojump_utils.py", line 42, in first
    return it.next()
  File "C:\Program Files (x86)\CowShell\Vendor\AutoJump\bin\autojump_match.py", line 86, in <lambda>
    flags=regex_flags,
  File "F:\Programs\Python\lib\re.py", line 146, in search
    return _compile(pattern, flags).search(string)
  File "F:\Programs\Python\lib\re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression
ECHO is off.

ここで強調表示されている変更: https
Windowsシステムの機能障害につながります。

提案された解決策は、基本的にautojump_match.py​​の行78-80を次のように変更することです。

    sep = '\\\\' if os.sep == '\\' else os.sep
    regex_no_sep = '[^' + sep + ']*'
    regex_no_sep_end = regex_no_sep + '$'
    regex_one_sep = regex_no_sep + sep + regex_no_sep

(正規表現の構築で使用される区切り文字の値を条件付きで設定します)

os-windows priority-high

最も参考になるコメント

Window 10 Professional、私は今日この問題に遭遇しました....そして提案されたパッチは魅力のように機能します! どうもありがとう。 4年経ってもパッチがマスターにマージされないのはなぜだろうか。

全てのコメント7件

詳細なバグレポートをありがとう!

残念ながら、私はWindowsマシンにアクセスできません。 これらのWindowsテストを更新して、発生したエラーを再現できますか? そうすれば、将来のリグレッションバグを防ぐことができます。

Win10でオートジャンプを試してみて、これをヒットしてください。 提案されたパッチは私にとってはうまくいくようです。

@wtingテストが実際にWindowsで実行されていない場合、match_consecutiveテストは間違ったos.sep取得しませんか? os.sepがバックスラッシュでない限り、テストは実際には失敗しません。

あなたはそのようなテストのためにそれをモックアウトすることができます:

In [1]: import os, mock

In [2]: os.sep
Out[2]: '/'

In [3]: with mock.patch.object(os, 'sep', '\\'):
   ...:     print(os.sep)
   ...:     
\

同じ問題が発生し、提案された修正で問題が解決しました。 別の解決策は、appveyorなどのWindowsCIプラットフォームでテストを実行することだと思います。

同じ問題である1064に勝ちます。 autojump_match.py​​の変更が機能しました。 ありがとうございます。

Window 10 Professional、私は今日この問題に遭遇しました....そして提案されたパッチは魅力のように機能します! どうもありがとう。 4年経ってもパッチがマスターにマージされないのはなぜだろうか。

このページは役に立ちましたか?
0 / 5 - 0 評価