mirror of
https://github.com/wting/autojump
synced 2024-10-27 20:34:07 +00:00
Fix or skip a number of failing test on Windows
Several warnings due to a single backslash + char being interpreted as a special character. Fixed with use of '\\' or using raw string. All test failures due to different path seperator or drive used in expected test data. Fixed by duplicating tests with differnt reference data and including condition skips if on windows systems.
This commit is contained in:
parent
7d68a15b20
commit
2b27738a25
@ -2,6 +2,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import platform
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@ -10,6 +11,7 @@ from autojump_data import Entry
|
|||||||
from autojump_match import match_anywhere
|
from autojump_match import match_anywhere
|
||||||
from autojump_match import match_consecutive
|
from autojump_match import match_consecutive
|
||||||
|
|
||||||
|
is_windows = platform.system() == 'Windows'
|
||||||
|
|
||||||
class TestMatchAnywhere(object):
|
class TestMatchAnywhere(object):
|
||||||
|
|
||||||
@ -19,8 +21,8 @@ class TestMatchAnywhere(object):
|
|||||||
entry4 = Entry('/中/zhong/国/guo', 10)
|
entry4 = Entry('/中/zhong/国/guo', 10)
|
||||||
entry5 = Entry('/is\'t/this/a/b*tchin/edge/case?', 10)
|
entry5 = Entry('/is\'t/this/a/b*tchin/edge/case?', 10)
|
||||||
win_entry1 = Entry('C:\\foo\\bar\\baz', 10)
|
win_entry1 = Entry('C:\\foo\\bar\\baz', 10)
|
||||||
win_entry2 = Entry('D:\Program Files (x86)\GIMP', 10)
|
win_entry2 = Entry(r'D:\Program Files (x86)\GIMP', 10)
|
||||||
win_entry3 = Entry('C:\Windows\System32', 10)
|
win_entry3 = Entry(r'C:\Windows\System32', 10)
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def haystack(self):
|
def haystack(self):
|
||||||
@ -75,9 +77,10 @@ class TestMatchConsecutive(object):
|
|||||||
entry4 = Entry('/中/zhong/国/guo', 10)
|
entry4 = Entry('/中/zhong/国/guo', 10)
|
||||||
entry5 = Entry('/日/本', 10)
|
entry5 = Entry('/日/本', 10)
|
||||||
entry6 = Entry('/is\'t/this/a/b*tchin/edge/case?', 10)
|
entry6 = Entry('/is\'t/this/a/b*tchin/edge/case?', 10)
|
||||||
win_entry1 = Entry('C:\Foo\Bar\Baz', 10)
|
win_entry1 = Entry(r'C:\Foo\Bar\Baz', 10)
|
||||||
win_entry2 = Entry('D:\Program Files (x86)\GIMP', 10)
|
win_entry2 = Entry(r'D:\Program Files (x86)\GIMP', 10)
|
||||||
win_entry3 = Entry('C:\Windows\System32', 10)
|
win_entry3 = Entry(r'C:\Windows\System32', 10)
|
||||||
|
win_entry4 = Entry('C:\\is\'t\\this\\a\\b*tchin\\edge\\case?', 10)
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def haystack(self):
|
def haystack(self):
|
||||||
@ -91,18 +94,21 @@ class TestMatchConsecutive(object):
|
|||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def windows_haystack(self):
|
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):
|
def test_single_needle(self, haystack):
|
||||||
assert list(match_consecutive(['baz'], haystack)) == [self.entry1, self.entry3]
|
assert list(match_consecutive(['baz'], haystack)) == [self.entry1, self.entry3]
|
||||||
assert list(match_consecutive(['本'], haystack)) == [self.entry5]
|
assert list(match_consecutive(['本'], haystack)) == [self.entry5]
|
||||||
|
|
||||||
|
@pytest.mark.skipif(is_windows, reason='Different reference data for path.')
|
||||||
def test_consecutive(self, haystack):
|
def test_consecutive(self, haystack):
|
||||||
assert list(match_consecutive(['bar', 'baz'], haystack)) == [self.entry1]
|
assert list(match_consecutive(['bar', 'baz'], haystack)) == [self.entry1]
|
||||||
assert list(match_consecutive(['foo', 'bar'], haystack)) == [self.entry2]
|
assert list(match_consecutive(['foo', 'bar'], haystack)) == [self.entry2]
|
||||||
assert list(match_consecutive(['国', 'guo'], haystack)) == [self.entry4]
|
assert list(match_consecutive(['国', 'guo'], haystack)) == [self.entry4]
|
||||||
assert list(match_consecutive(['bar', 'foo'], haystack)) == []
|
assert list(match_consecutive(['bar', 'foo'], haystack)) == []
|
||||||
|
|
||||||
|
@pytest.mark.skipif(is_windows, reason='Different reference data for path.')
|
||||||
def test_ignore_case(self, haystack):
|
def test_ignore_case(self, haystack):
|
||||||
assert list(match_consecutive(['FoO', 'bAR'], haystack, ignore_case=True)) \
|
assert list(match_consecutive(['FoO', 'bAR'], haystack, ignore_case=True)) \
|
||||||
== [self.entry2]
|
== [self.entry2]
|
||||||
@ -110,22 +116,29 @@ class TestMatchConsecutive(object):
|
|||||||
def test_windows_ignore_case(self, windows_haystack):
|
def test_windows_ignore_case(self, windows_haystack):
|
||||||
assert list(match_consecutive(['gimp'], windows_haystack, True)) == [self.win_entry2]
|
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):
|
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)) \
|
assert list(match_consecutive(['program', 'gimp'], windows_haystack, True)) \
|
||||||
== [self.win_entry2]
|
== [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):
|
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)) \
|
assert list(match_consecutive(['bar', 'baz'], windows_haystack, ignore_case=True)) \
|
||||||
== [self.win_entry1]
|
== [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):
|
def test_thing(self, windows_haystack):
|
||||||
assert list(match_consecutive(['win', '32'], windows_haystack, True)) \
|
assert list(match_consecutive(['win', '32'], windows_haystack, True)) \
|
||||||
== [self.win_entry3]
|
== [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):
|
def test_wildcard_in_needle(self, haystack):
|
||||||
assert list(match_consecutive(['*', 'this'], haystack)) == []
|
assert list(match_consecutive(['*', 'this'], haystack)) == []
|
||||||
assert list(match_consecutive(['*', 'edge', 'case'], haystack)) == [self.entry6]
|
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]
|
||||||
|
Loading…
Reference in New Issue
Block a user