mirror of
https://github.com/wting/autojump
synced 2024-10-27 20:34:07 +00:00
Merge bec3616d86
into ff75f542ae
This commit is contained in:
commit
e70aad86a7
35
appveyor.yml
Normal file
35
appveyor.yml
Normal file
@ -0,0 +1,35 @@
|
||||
environment:
|
||||
|
||||
matrix:
|
||||
|
||||
# For Python versions available on Appveyor, see
|
||||
# https://www.appveyor.com/docs/windows-images-software/#python
|
||||
|
||||
- PYTHON: "C:\\Python26-x64"
|
||||
TOX_ENV: "py26"
|
||||
|
||||
- PYTHON: "C:\\Python27-x64"
|
||||
TOX_ENV: "py27"
|
||||
|
||||
- PYTHON: "C:\\Python33-x64"
|
||||
TOX_ENV: "py33"
|
||||
|
||||
- PYTHON: "C:\\Python34-x64"
|
||||
TOX_ENV: "py34"
|
||||
|
||||
- PYTHON: "C:\\Python35-x64"
|
||||
TOX_ENV: "py35"
|
||||
|
||||
- PYTHON: "C:\\Python36-x64"
|
||||
TOX_ENV: "py36"
|
||||
|
||||
- PYTHON: "C:\\Python37-x64"
|
||||
TOX_ENV: "py37"
|
||||
|
||||
install:
|
||||
- "%PYTHON%\\python.exe -m pip install tox"
|
||||
|
||||
build: off
|
||||
|
||||
test_script:
|
||||
- "%PYTHON%\\python.exe -m tox -e %TOX_ENV%"
|
@ -75,9 +75,10 @@ def match_consecutive(needles, haystack, ignore_case=False):
|
||||
(path='/foo/baz', weight=10),
|
||||
]
|
||||
"""
|
||||
regex_no_sep = '[^' + os.sep + ']*'
|
||||
sep = '\\\\' if os.sep == '\\' else os.sep
|
||||
regex_no_sep = '[^' + sep + ']*'
|
||||
regex_no_sep_end = regex_no_sep + '$'
|
||||
regex_one_sep = regex_no_sep + os.sep + regex_no_sep
|
||||
regex_one_sep = regex_no_sep + sep + regex_no_sep
|
||||
regex_needle = regex_one_sep.join(imap(re.escape, needles)) + regex_no_sep_end
|
||||
regex_flags = re.IGNORECASE | re.UNICODE if ignore_case else re.UNICODE
|
||||
found = lambda entry: re.search(
|
||||
|
@ -2,6 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import sys
|
||||
import platform
|
||||
|
||||
import pytest
|
||||
|
||||
@ -10,6 +11,7 @@ from autojump_data import Entry
|
||||
from autojump_match import match_anywhere
|
||||
from autojump_match import match_consecutive
|
||||
|
||||
is_windows = platform.system() == 'Windows'
|
||||
|
||||
class TestMatchAnywhere(object):
|
||||
|
||||
@ -19,8 +21,8 @@ class TestMatchAnywhere(object):
|
||||
entry4 = Entry('/中/zhong/国/guo', 10)
|
||||
entry5 = Entry('/is\'t/this/a/b*tchin/edge/case?', 10)
|
||||
win_entry1 = Entry('C:\\foo\\bar\\baz', 10)
|
||||
win_entry2 = Entry('D:\Program Files (x86)\GIMP', 10)
|
||||
win_entry3 = Entry('C:\Windows\System32', 10)
|
||||
win_entry2 = Entry(r'D:\Program Files (x86)\GIMP', 10)
|
||||
win_entry3 = Entry(r'C:\Windows\System32', 10)
|
||||
|
||||
@pytest.fixture
|
||||
def haystack(self):
|
||||
@ -75,9 +77,10 @@ class TestMatchConsecutive(object):
|
||||
entry4 = Entry('/中/zhong/国/guo', 10)
|
||||
entry5 = Entry('/日/本', 10)
|
||||
entry6 = Entry('/is\'t/this/a/b*tchin/edge/case?', 10)
|
||||
win_entry1 = Entry('C:\Foo\Bar\Baz', 10)
|
||||
win_entry2 = Entry('D:\Program Files (x86)\GIMP', 10)
|
||||
win_entry3 = Entry('C:\Windows\System32', 10)
|
||||
win_entry1 = Entry(r'C:\Foo\Bar\Baz', 10)
|
||||
win_entry2 = Entry(r'D:\Program Files (x86)\GIMP', 10)
|
||||
win_entry3 = Entry(r'C:\Windows\System32', 10)
|
||||
win_entry4 = Entry('C:\\is\'t\\this\\a\\b*tchin\\edge\\case?', 10)
|
||||
|
||||
@pytest.fixture
|
||||
def haystack(self):
|
||||
@ -91,18 +94,21 @@ class TestMatchConsecutive(object):
|
||||
|
||||
@pytest.fixture
|
||||
def windows_haystack(self):
|
||||
return [self.win_entry1, self.win_entry2, self.win_entry3]
|
||||
return [self.win_entry1, self.win_entry2, self.win_entry3, self.win_entry4]
|
||||
|
||||
@pytest.mark.skipif(is_windows, reason='Different reference data for path.')
|
||||
def test_single_needle(self, haystack):
|
||||
assert list(match_consecutive(['baz'], haystack)) == [self.entry1, self.entry3]
|
||||
assert list(match_consecutive(['本'], haystack)) == [self.entry5]
|
||||
|
||||
@pytest.mark.skipif(is_windows, reason='Different reference data for path.')
|
||||
def test_consecutive(self, haystack):
|
||||
assert list(match_consecutive(['bar', 'baz'], haystack)) == [self.entry1]
|
||||
assert list(match_consecutive(['foo', 'bar'], haystack)) == [self.entry2]
|
||||
assert list(match_consecutive(['国', 'guo'], haystack)) == [self.entry4]
|
||||
assert list(match_consecutive(['bar', 'foo'], haystack)) == []
|
||||
|
||||
@pytest.mark.skipif(is_windows, reason='Different reference data for path.')
|
||||
def test_ignore_case(self, haystack):
|
||||
assert list(match_consecutive(['FoO', 'bAR'], haystack, ignore_case=True)) \
|
||||
== [self.entry2]
|
||||
@ -110,22 +116,29 @@ class TestMatchConsecutive(object):
|
||||
def test_windows_ignore_case(self, windows_haystack):
|
||||
assert list(match_consecutive(['gimp'], windows_haystack, True)) == [self.win_entry2]
|
||||
|
||||
@pytest.mark.xfail(reason='https://github.com/wting/autojump/issues/418')
|
||||
@pytest.mark.skipif(not is_windows, reason='Different path seperator')
|
||||
def test_backslashes_for_windows_paths(self, windows_haystack):
|
||||
# https://github.com/wting/autojump/issues/418
|
||||
assert list(match_consecutive(['program', 'gimp'], windows_haystack, True)) \
|
||||
== [self.win_entry2]
|
||||
|
||||
@pytest.mark.xfail(reason='https://github.com/wting/autojump/issues/418')
|
||||
@pytest.mark.skipif(not is_windows, reason='Different path seperator')
|
||||
def test_foo_bar_baz(self, windows_haystack):
|
||||
# https://github.com/wting/autojump/issues/418
|
||||
assert list(match_consecutive(['bar', 'baz'], windows_haystack, ignore_case=True)) \
|
||||
== [self.win_entry1]
|
||||
|
||||
@pytest.mark.xfail(reason='https://github.com/wting/autojump/issues/402')
|
||||
@pytest.mark.skipif(not is_windows, reason='Different path seperator')
|
||||
def test_thing(self, windows_haystack):
|
||||
assert list(match_consecutive(['win', '32'], windows_haystack, True)) \
|
||||
== [self.win_entry3]
|
||||
|
||||
@pytest.mark.xfail(reason='https://github.com/wting/autojump/issues/402')
|
||||
@pytest.mark.skipif(is_windows, reason='Different reference data for path.')
|
||||
def test_wildcard_in_needle(self, haystack):
|
||||
assert list(match_consecutive(['*', 'this'], haystack)) == []
|
||||
assert list(match_consecutive(['*', 'edge', 'case'], haystack)) == [self.entry6]
|
||||
|
||||
@pytest.mark.skipif(not is_windows, reason='Different path seperator')
|
||||
def test_wildcard_in_needle(self, windows_haystack):
|
||||
assert list(match_consecutive(['*', 'this'], windows_haystack)) == []
|
||||
assert list(match_consecutive(['*', 'edge', 'case'], windows_haystack)) == [self.win_entry4]
|
||||
|
@ -2,6 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import sys
|
||||
import platform
|
||||
|
||||
import mock
|
||||
import pytest
|
||||
@ -21,6 +22,7 @@ from autojump_utils import surround_quotes
|
||||
from autojump_utils import take
|
||||
from autojump_utils import unico
|
||||
|
||||
is_windows = platform.system() == 'Windows'
|
||||
|
||||
if is_python3():
|
||||
os.getcwdu = os.getcwd
|
||||
@ -80,11 +82,15 @@ def test_surround_quotes_in_bash(_):
|
||||
def test_dont_surround_quotes_not_in_bash(_):
|
||||
assert surround_quotes('foo') == 'foo'
|
||||
|
||||
|
||||
@pytest.mark.skipif(is_windows, reason='Different reference data for path.')
|
||||
def test_sanitize():
|
||||
assert sanitize([]) == []
|
||||
assert sanitize([r'/foo/bar/', r'/']) == [u('/foo/bar'), u('/')]
|
||||
|
||||
@pytest.mark.skipif(not is_windows, reason='Different reference data for path.')
|
||||
def test_sanitize_on_windows():
|
||||
assert sanitize([]) == []
|
||||
assert sanitize(['C:\\foo\\bar\\', 'C:\\']) == [u('C:\\foo\\bar'), u('C:')]
|
||||
|
||||
@pytest.mark.skipif(is_python3(), reason='Unicode sucks.')
|
||||
def test_unico():
|
||||
|
Loading…
Reference in New Issue
Block a user