Autojump: تعطل على Windows بسبب التعامل غير المناسب مع الخط المائل العكسي في autojump_match.py

تم إنشاؤها على ١ أغسطس ٢٠١٦  ·  7تعليقات  ·  مصدر: wting/autojump

يؤدي تنفيذ أي أمر 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://github.com/wting/autojump/commit/7c7865ea7ecfd937284f774fb0818c5cc10c340a#diff -4b97c2fd2ae952c567c1646bc80e5d43L78
يؤدي إلى خلل في أنظمة Windows.

الحل المقترح هو تغيير الأسطر 78-80 في autojump_match.py ​​إلى:

    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

(الإعداد الشرطي لقيمة الفاصل المستخدمة في بناء regex)

os-windows priority-high

التعليق الأكثر فائدة

نظام Window 10 احترافي ، لقد قابلت هذه المشكلة اليوم .... ويعمل التصحيح المقترح مثل السحر! شكرا جزيلا. أنا فقط أتساءل لماذا لم يتم دمج التصحيح في الماجستير بينما مرت أربع سنوات؟

ال 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)
   ...:     
\

كان لدي نفس المشكلة والإصلاح المقترح حل المشكلة. أعتقد أن الحل البديل هو إجراء الاختبارات على منصة windows CI مثل appveyor.

فوز 10 64 ، نفس المشكلة. عملت تغيير autojump_match.py. شكرا لكم.

نظام Window 10 احترافي ، لقد قابلت هذه المشكلة اليوم .... ويعمل التصحيح المقترح مثل السحر! شكرا جزيلا. أنا فقط أتساءل لماذا لم يتم دمج التصحيح في الماجستير بينما مرت أربع سنوات؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

juanrgon picture juanrgon  ·  4تعليقات

loveencounterflow picture loveencounterflow  ·  6تعليقات

chauzer picture chauzer  ·  13تعليقات

nunoh picture nunoh  ·  20تعليقات

shepherdwind picture shepherdwind  ·  11تعليقات