forked from mirrors/gecko-dev
Updated to 3.2.5. MozReview-Commit-ID: 34OG1iGeMVW --HG-- extra : rebase_source : 3ffa191b142f60897abb0728f53e71b8cda52701
76 lines
2 KiB
Python
76 lines
2 KiB
Python
|
|
import py
|
|
|
|
import errno
|
|
import sys
|
|
import subprocess
|
|
|
|
|
|
def test_error_classes():
|
|
for name in errno.errorcode.values():
|
|
x = getattr(py.error, name)
|
|
assert issubclass(x, py.error.Error)
|
|
assert issubclass(x, EnvironmentError)
|
|
|
|
|
|
def test_has_name():
|
|
assert py.error.__name__ == 'py.error'
|
|
|
|
|
|
def test_picklability_issue1():
|
|
import pickle
|
|
e1 = py.error.ENOENT()
|
|
s = pickle.dumps(e1)
|
|
e2 = pickle.loads(s)
|
|
assert isinstance(e2, py.error.ENOENT)
|
|
|
|
|
|
def test_unknown_error():
|
|
num = 3999
|
|
cls = py.error._geterrnoclass(num)
|
|
assert cls.__name__ == 'UnknownErrno%d' % (num,)
|
|
assert issubclass(cls, py.error.Error)
|
|
assert issubclass(cls, EnvironmentError)
|
|
cls2 = py.error._geterrnoclass(num)
|
|
assert cls is cls2
|
|
|
|
|
|
def test_error_conversion_enotdir(testdir):
|
|
p = testdir.makepyfile("")
|
|
excinfo = py.test.raises(py.error.Error, py.error.checked_call, p.listdir)
|
|
assert isinstance(excinfo.value, EnvironmentError)
|
|
assert isinstance(excinfo.value, py.error.Error)
|
|
assert "ENOTDIR" in repr(excinfo.value)
|
|
|
|
|
|
def test_checked_call_supports_kwargs(tmpdir):
|
|
import tempfile
|
|
py.error.checked_call(tempfile.mkdtemp, dir=str(tmpdir))
|
|
|
|
|
|
def test_error_importable():
|
|
"""Regression test for #179"""
|
|
subprocess.check_call(
|
|
[sys.executable, '-c', 'from py.error import ENOENT'])
|
|
|
|
|
|
try:
|
|
import unittest
|
|
unittest.TestCase.assertWarns
|
|
except (ImportError, AttributeError):
|
|
pass # required interface not available
|
|
else:
|
|
import sys
|
|
import warnings
|
|
|
|
class Case(unittest.TestCase):
|
|
def test_assert_warns(self):
|
|
# Clear everything "py.*" from sys.modules and re-import py
|
|
# as a fresh start
|
|
for mod in tuple(sys.modules.keys()):
|
|
if mod and (mod == 'py' or mod.startswith('py.')):
|
|
del sys.modules[mod]
|
|
__import__('py')
|
|
|
|
with self.assertWarns(UserWarning):
|
|
warnings.warn('this should work')
|