def test_name(self) -> None: self.assertEqual(lt.generic_category().name(), "generic") self.assertEqual(lt.system_category().name(), "system") self.assertEqual(lt.libtorrent_category().name(), "libtorrent") self.assertEqual(lt.upnp_category().name(), "upnp") self.assertEqual(lt.http_category().name(), "http") self.assertEqual(lt.socks_category().name(), "socks") self.assertEqual(lt.bdecode_category().name(), "bdecode") self.assertEqual(lt.i2p_category().name(), "i2p error")
def test_from_orm(self) -> None: ec = lt.error_code() ec.assign(errno.ECANCELED, lt.generic_category()) value = ltmodels.ErrorCode.from_orm(ec) self.assertEqual( value, ltmodels.ErrorCode( category="generic", value=errno.ECANCELED, message="Operation canceled", ), )
def test_error_code(self): a = lt.error_code() a = lt.error_code(10, lt.libtorrent_category()) self.assertEqual(a.category().name(), 'libtorrent') self.assertEqual(lt.libtorrent_category().name(), 'libtorrent') self.assertEqual(lt.upnp_category().name(), 'upnp') self.assertEqual(lt.http_category().name(), 'http') self.assertEqual(lt.socks_category().name(), 'socks') self.assertEqual(lt.bdecode_category().name(), 'bdecode') self.assertEqual(lt.generic_category().name(), 'generic') self.assertEqual(lt.system_category().name(), 'system')
def test_no_error() -> None: ec = lt.error_code(0, lt.generic_category()) assert ltpy.exception_from_error_code(ec) is None
instantiate: Callable[[lt.error_code], ltpy.Error], value: int, result_cls: type[ltpy.Error], ) -> None: ec = lt.error_code(value, lt.libtorrent_category()) assert isinstance(instantiate(ec), result_cls) @pytest.mark.parametrize( "instantiate", (ltpy.Error, ltpy.OSError, ltpy.exception_from_error_code) ) # system_category should be the same as generic_category on non-windows @pytest.mark.parametrize( "category", ( lt.generic_category(), pytest.param(lt.system_category(), marks=pytest.mark.skipif('os.name == "nt"')), ), ) # Mapping from pep3151 @pytest.mark.parametrize( ("value", "result_cls"), ( (errno.EAGAIN, ltpy.BlockingIOError), (errno.EALREADY, ltpy.BlockingIOError), (errno.EWOULDBLOCK, ltpy.BlockingIOError), (errno.EINPROGRESS, ltpy.BlockingIOError), (errno.ECHILD, ltpy.ChildProcessError), (errno.EPIPE, ltpy.BrokenPipeError), (errno.ESHUTDOWN, ltpy.BrokenPipeError), (errno.ECONNABORTED, ltpy.ConnectionAbortedError),
def test_pickle(self) -> None: ec = lt.error_code(errno.ENOENT, lt.generic_category()) ec = pickle.loads(pickle.dumps(ec)) self.assertEqual(ec.value(), errno.ENOENT) self.assertEqual(ec.category(), lt.generic_category())
def test_assign(self) -> None: ec = lt.error_code(errno.ENOENT, lt.generic_category()) ec.assign(123, lt.libtorrent_category()) self.assertEqual(ec.value(), 123) self.assertEqual(ec.category(), lt.libtorrent_category())
def test_clear(self) -> None: ec = lt.error_code(errno.ENOENT, lt.generic_category()) ec.clear() self.assertEqual(ec.value(), 0) self.assertEqual(ec.category(), lt.system_category())
def test_value(self) -> None: ec = lt.error_code(errno.ENOENT, lt.generic_category()) self.assertEqual(ec.value(), errno.ENOENT)
def test_message(self) -> None: ec = lt.error_code(errno.ENOENT, lt.generic_category()) self.assertEqual(ec.message(), os.strerror(errno.ENOENT))
def test_init(self) -> None: ec = lt.error_code(1, lt.generic_category()) self.assertEqual(ec.value(), 1) self.assertEqual(ec.category(), lt.generic_category())
def test_equal(self) -> None: self.assertEqual(lt.generic_category(), lt.generic_category()) self.assertNotEqual(lt.generic_category(), lt.system_category())
import errno import os import pickle import unittest import libtorrent as lt ALL_CATEGORIES = ( lt.generic_category(), lt.system_category(), lt.libtorrent_category(), lt.upnp_category(), lt.http_category(), lt.socks_category(), lt.bdecode_category(), lt.i2p_category(), ) class ErrorCategoryTest(unittest.TestCase): def test_equal(self) -> None: self.assertEqual(lt.generic_category(), lt.generic_category()) self.assertNotEqual(lt.generic_category(), lt.system_category()) def test_accessors(self) -> None: with self.assertWarns(DeprecationWarning): self.assertEqual(lt.get_libtorrent_category(), lt.libtorrent_category()) with self.assertWarns(DeprecationWarning): self.assertEqual(lt.get_upnp_category(), lt.upnp_category()) with self.assertWarns(DeprecationWarning):
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. from __future__ import annotations import builtins import contextlib import enum import errno import os from typing import Generator from typing import Optional from typing import TypeVar import libtorrent as lt GENERIC_CATEGORY = lt.generic_category() SYSTEM_CATEGORY = lt.system_category() LIBTORRENT_CATEGORY = lt.libtorrent_category() UPNP_CATEGORY = lt.upnp_category() HTTP_CATEGORY = lt.http_category() SOCKS_CATEGORY = lt.socks_category() I2P_CATEGORY = lt.i2p_category() BDECODE_CATEGORY = lt.bdecode_category() class LibtorrentErrorValue(enum.IntEnum): DUPLICATE_TORRENT = 19 INVALID_TORRENT_HANDLE = 20 INVALID_SESSION_HANDLE = 115
def test_enoent() -> None: with pytest.raises(FileNotFoundError): with ltpy.translate_exceptions(): raise RuntimeError(lt.generic_category().message(errno.ENOENT))