From dcba87e6cac458780a9099da0a5cbbd7e29d6d50 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 6 Mar 2018 01:38:31 -0500 Subject: [PATCH 1/4] Add test for unicode path --- .../bad_encode_project/schaue p\374laylist an.py" | 0 readthedocs_build/config/test_find.py | 14 +++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 "integration_tests/bad_encode_project/schaue p\374laylist an.py" diff --git "a/integration_tests/bad_encode_project/schaue p\374laylist an.py" "b/integration_tests/bad_encode_project/schaue p\374laylist an.py" new file mode 100644 index 0000000..e69de29 diff --git a/readthedocs_build/config/test_find.py b/readthedocs_build/config/test_find.py index 7c96dab..c0357a0 100644 --- a/readthedocs_build/config/test_find.py +++ b/readthedocs_build/config/test_find.py @@ -1,6 +1,6 @@ import os -from .find import find_all +from .find import find_all, find_one from ..testing.utils import apply_fs @@ -75,3 +75,15 @@ def test_find_multiple_files(tmpdir): str(tmpdir.join('first', 'readthedocs.yml')), str(tmpdir.join('third', 'readthedocs.yml')), ] + + +def test_find_unicode_path(tmpdir): + base_path = os.path.abspath('integration_tests/bad_encode_project') + unicode_base_path = base_path # .decode('utf-8') + try: + find_one(unicode_base_path, ('readthedocs.yml',)) + except Exception as e: + __import__('pdb').set_trace() + assert isinstance(e, UnicodeDecodeError) + else: + assert False, 'No UnicodeDecodeError exception was raised' From e856a28faa3d3818d3ab79c785924e863f4d1d0b Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 6 Mar 2018 02:03:55 -0500 Subject: [PATCH 2/4] Make test py2 & py3 compatible --- readthedocs_build/config/test_find.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/readthedocs_build/config/test_find.py b/readthedocs_build/config/test_find.py index c0357a0..7b3644d 100644 --- a/readthedocs_build/config/test_find.py +++ b/readthedocs_build/config/test_find.py @@ -79,11 +79,14 @@ def test_find_multiple_files(tmpdir): def test_find_unicode_path(tmpdir): base_path = os.path.abspath('integration_tests/bad_encode_project') - unicode_base_path = base_path # .decode('utf-8') try: - find_one(unicode_base_path, ('readthedocs.yml',)) + path = find_one(base_path, ('readthedocs.yml',)) + # When python3 + assert path == '' except Exception as e: - __import__('pdb').set_trace() + # When python2 assert isinstance(e, UnicodeDecodeError) - else: - assert False, 'No UnicodeDecodeError exception was raised' + + unicode_base_path = base_path.decode('utf-8') + path = find_one(unicode_base_path, ('readthedocs.yml',)) + assert path == '' From 2d0b0e59bc16fa1211455108c5f5b55566880c9e Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 6 Mar 2018 15:39:35 -0500 Subject: [PATCH 3/4] Better test - Run only on python2 - Mark as fail --- readthedocs_build/config/test_find.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/readthedocs_build/config/test_find.py b/readthedocs_build/config/test_find.py index 7b3644d..5ea1350 100644 --- a/readthedocs_build/config/test_find.py +++ b/readthedocs_build/config/test_find.py @@ -1,5 +1,8 @@ import os +import pytest +import six + from .find import find_all, find_one from ..testing.utils import apply_fs @@ -77,16 +80,11 @@ def test_find_multiple_files(tmpdir): ] +@pytest.mark.skipif(not six.PY2, reason='Only for python2') +@pytest.mark.xfail(raises=UnicodeDecodeError) def test_find_unicode_path(tmpdir): base_path = os.path.abspath('integration_tests/bad_encode_project') - try: - path = find_one(base_path, ('readthedocs.yml',)) - # When python3 - assert path == '' - except Exception as e: - # When python2 - assert isinstance(e, UnicodeDecodeError) - - unicode_base_path = base_path.decode('utf-8') - path = find_one(unicode_base_path, ('readthedocs.yml',)) - assert path == '' + unicode_base_path = base_path.decode('utf-8') + path = find_one(unicode_base_path, ('readthedocs.yml',)) + assert path == '' + assert False, 'The UnicodeDecodeError was not raised' From bc3982bfb6c441b7801856f01c355efa949c4f88 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 7 Mar 2018 22:31:49 -0500 Subject: [PATCH 4/4] More explicit test --- readthedocs_build/config/test_find.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readthedocs_build/config/test_find.py b/readthedocs_build/config/test_find.py index 5ea1350..3300302 100644 --- a/readthedocs_build/config/test_find.py +++ b/readthedocs_build/config/test_find.py @@ -84,7 +84,9 @@ def test_find_multiple_files(tmpdir): @pytest.mark.xfail(raises=UnicodeDecodeError) def test_find_unicode_path(tmpdir): base_path = os.path.abspath('integration_tests/bad_encode_project') + assert isinstance(base_path, str) unicode_base_path = base_path.decode('utf-8') + assert isinstance(unicode_base_path, unicode) path = find_one(unicode_base_path, ('readthedocs.yml',)) assert path == '' assert False, 'The UnicodeDecodeError was not raised'