You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
from __future__ import absolute_import, print_function, division
|
|
|
|
import os
|
|
import unittest
|
|
|
|
class TestFSPath(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.__path = None
|
|
|
|
def __fspath__(self):
|
|
if self.__path is not None:
|
|
return self.__path
|
|
raise AttributeError("Accessing path data")
|
|
|
|
def _callFUT(self, arg):
|
|
from gevent._compat import _fspath
|
|
return _fspath(arg)
|
|
|
|
def test_text(self):
|
|
s = u'path'
|
|
self.assertIs(s, self._callFUT(s))
|
|
|
|
def test_bytes(self):
|
|
s = b'path'
|
|
self.assertIs(s, self._callFUT(s))
|
|
|
|
def test_None(self):
|
|
with self.assertRaises(TypeError):
|
|
self._callFUT(None)
|
|
|
|
def test_working_path(self):
|
|
self.__path = u'text'
|
|
self.assertIs(self.__path, self._callFUT(self))
|
|
|
|
self.__path = b'bytes'
|
|
self.assertIs(self.__path, self._callFUT(self))
|
|
|
|
def test_failing_path_AttributeError(self):
|
|
self.assertIsNone(self.__path)
|
|
with self.assertRaises(AttributeError):
|
|
self._callFUT(self)
|
|
|
|
def test_fspath_non_str(self):
|
|
self.__path = object()
|
|
with self.assertRaises(TypeError):
|
|
self._callFUT(self)
|
|
|
|
@unittest.skipUnless(hasattr(os, 'fspath'), "Tests native os.fspath")
|
|
class TestNativeFSPath(TestFSPath):
|
|
|
|
def _callFUT(self, arg):
|
|
return os.fspath(arg)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|