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.
pull/561/head
Christopher Musselle 5 years ago
parent 7d68a15b20
commit 2b27738a25

@ -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]

Loading…
Cancel
Save