L'exécution de n'importe quelle commande autojump normale dans Windows conduit à ceci :
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.
Le changement mis en évidence ici : https://github.com/wting/autojump/commit/7c7865ea7ecfd937284f774fb0818c5cc10c340a#diff -4b97c2fd2ae952c567c1646bc80e5d43L78
conduire au dysfonctionnement des systèmes Windows.
La solution proposée consiste essentiellement à modifier les lignes 78-80 dans autojump_match.py en :
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
(Définition conditionnelle de la valeur de séparation utilisée dans la construction regex)
Hé merci pour le rapport de bogue détaillé !
Malheureusement, je n'ai pas accès à une machine Windows. Pouvez-vous mettre à jour ces tests Windows de manière à ce qu'ils reproduisent l'erreur que vous avez ? De cette façon, nous pouvons éviter de futurs bugs de régression.
Essayez juste le saut automatique sur Win10 et appuyez dessus. Le patch proposé semble fonctionner pour moi.
@wting Si les tests ne sont pas réellement exécutés sous Windows, les tests match_consecutive ne récupéreront-ils pas le mauvais os.sep
? Les tests n'échoueront pas à moins que os.sep ne soit une barre oblique inverse.
Vous pouvez vous en moquer pour des tests comme ceci :
In [1]: import os, mock
In [2]: os.sep
Out[2]: '/'
In [3]: with mock.patch.object(os, 'sep', '\\'):
...: print(os.sep)
...:
\
J'ai eu le même problème et la solution suggérée a résolu le problème. Je suppose qu'une solution alternative serait d'exécuter les tests sur une plate-forme Windows CI telle qu'appveyor.
gagner 10 64, le même problème. changer autojump_match.py a fonctionné. Je vous remercie.
Professionnel de Windows 10, j'ai rencontré ce problème aujourd'hui... et le correctif suggéré fonctionne à merveille ! Merci beaucoup. Je me demande juste pourquoi le patch n'est pas fusionné dans le master alors que quatre ans se sont écoulés ?
Commentaire le plus utile
Professionnel de Windows 10, j'ai rencontré ce problème aujourd'hui... et le correctif suggéré fonctionne à merveille ! Merci beaucoup. Je me demande juste pourquoi le patch n'est pas fusionné dans le master alors que quatre ans se sont écoulés ?