From 2b27738a25306262b037c8b7bb49c88419a57db8 Mon Sep 17 00:00:00 2001 From: Christopher Musselle Date: Wed, 27 Feb 2019 00:11:26 +0000 Subject: [PATCH] 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. --- tests/unit/autojump_match_test.py | 33 +++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/tests/unit/autojump_match_test.py b/tests/unit/autojump_match_test.py index bd02ff5..7dbb727 100644 --- a/tests/unit/autojump_match_test.py +++ b/tests/unit/autojump_match_test.py @@ -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]