Ejemplo n.º 1
0
 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")
Ejemplo n.º 2
0
 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",
         ),
     )
Ejemplo n.º 3
0
    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')
Ejemplo n.º 4
0
    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')
Ejemplo n.º 5
0
def test_no_error() -> None:
    ec = lt.error_code(0, lt.generic_category())
    assert ltpy.exception_from_error_code(ec) is None
Ejemplo n.º 6
0
    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),
Ejemplo n.º 7
0
 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())
Ejemplo n.º 8
0
 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())
Ejemplo n.º 9
0
 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())
Ejemplo n.º 10
0
 def test_value(self) -> None:
     ec = lt.error_code(errno.ENOENT, lt.generic_category())
     self.assertEqual(ec.value(), errno.ENOENT)
Ejemplo n.º 11
0
 def test_message(self) -> None:
     ec = lt.error_code(errno.ENOENT, lt.generic_category())
     self.assertEqual(ec.message(), os.strerror(errno.ENOENT))
Ejemplo n.º 12
0
 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())
Ejemplo n.º 13
0
 def test_equal(self) -> None:
     self.assertEqual(lt.generic_category(), lt.generic_category())
     self.assertNotEqual(lt.generic_category(), lt.system_category())
Ejemplo n.º 14
0
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):
Ejemplo n.º 15
0
# 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))