summaryrefslogtreecommitdiffstats
path: root/deluge/tests/test_common.py
diff options
context:
space:
mode:
Diffstat (limited to 'deluge/tests/test_common.py')
-rw-r--r--deluge/tests/test_common.py212
1 files changed, 117 insertions, 95 deletions
diff --git a/deluge/tests/test_common.py b/deluge/tests/test_common.py
index 4f6aa2fd4..780d368ef 100644
--- a/deluge/tests/test_common.py
+++ b/deluge/tests/test_common.py
@@ -1,17 +1,15 @@
-# -*- coding: utf-8 -*-
#
# This file is part of Deluge and is licensed under GNU General Public License 3.0, or later, with
# the additional special exception to link portions of this program with the OpenSSL library.
# See LICENSE for more details.
#
-from __future__ import unicode_literals
-
import os
import sys
import tarfile
+from urllib.parse import quote_plus
-from twisted.trial import unittest
+import pytest
from deluge.common import (
VersionSplit,
@@ -22,8 +20,11 @@ from deluge.common import (
fsize,
fspeed,
ftime,
+ get_magnet_info,
get_path_size,
is_infohash,
+ is_interface,
+ is_interface_name,
is_ip,
is_ipv4,
is_ipv6,
@@ -31,113 +32,123 @@ from deluge.common import (
is_url,
windows_check,
)
-from deluge.i18n import setup_translation
-
-from .common import get_test_data_file, set_tmp_config_dir
-
-class CommonTestCase(unittest.TestCase):
- def setUp(self): # NOQA
- self.config_dir = set_tmp_config_dir()
- setup_translation()
+from .common import get_test_data_file
- def tearDown(self): # NOQA
- pass
+class TestCommon:
def test_fsize(self):
- self.assertEqual(fsize(0), '0 B')
- self.assertEqual(fsize(100), '100 B')
- self.assertEqual(fsize(1023), '1023 B')
- self.assertEqual(fsize(1024), '1.0 KiB')
- self.assertEqual(fsize(1048575), '1024.0 KiB')
- self.assertEqual(fsize(1048576), '1.0 MiB')
- self.assertEqual(fsize(1073741823), '1024.0 MiB')
- self.assertEqual(fsize(1073741824), '1.0 GiB')
- self.assertEqual(fsize(112245), '109.6 KiB')
- self.assertEqual(fsize(110723441824), '103.1 GiB')
- self.assertEqual(fsize(1099511627775), '1024.0 GiB')
- self.assertEqual(fsize(1099511627777), '1.0 TiB')
- self.assertEqual(fsize(766148267453245), '696.8 TiB')
+ assert fsize(0) == '0 B'
+ assert fsize(100) == '100 B'
+ assert fsize(1023) == '1023 B'
+ assert fsize(1024) == '1.0 KiB'
+ assert fsize(1048575) == '1024.0 KiB'
+ assert fsize(1048576) == '1.0 MiB'
+ assert fsize(1073741823) == '1024.0 MiB'
+ assert fsize(1073741824) == '1.0 GiB'
+ assert fsize(112245) == '109.6 KiB'
+ assert fsize(110723441824) == '103.1 GiB'
+ assert fsize(1099511627775) == '1024.0 GiB'
+ assert fsize(1099511627777) == '1.0 TiB'
+ assert fsize(766148267453245) == '696.8 TiB'
def test_fpcnt(self):
- self.assertTrue(fpcnt(0.9311) == '93.11%')
+ assert fpcnt(0.9311) == '93.11%'
def test_fspeed(self):
- self.assertTrue(fspeed(43134) == '42.1 KiB/s')
+ assert fspeed(43134) == '42.1 KiB/s'
def test_fpeer(self):
- self.assertTrue(fpeer(10, 20) == '10 (20)')
- self.assertTrue(fpeer(10, -1) == '10')
+ assert fpeer(10, 20) == '10 (20)'
+ assert fpeer(10, -1) == '10'
def test_ftime(self):
- self.assertEqual(ftime(0), '')
- self.assertEqual(ftime(5), '5s')
- self.assertEqual(ftime(100), '1m 40s')
- self.assertEqual(ftime(3789), '1h 3m')
- self.assertEqual(ftime(23011), '6h 23m')
- self.assertEqual(ftime(391187), '4d 12h')
- self.assertEqual(ftime(604800), '1w 0d')
- self.assertEqual(ftime(13893086), '22w 6d')
- self.assertEqual(ftime(59740269), '1y 46w')
- self.assertEqual(ftime(61.25), '1m 1s')
- self.assertEqual(ftime(119.9), '1m 59s')
+ assert ftime(0) == ''
+ assert ftime(5) == '5s'
+ assert ftime(100) == '1m 40s'
+ assert ftime(3789) == '1h 3m'
+ assert ftime(23011) == '6h 23m'
+ assert ftime(391187) == '4d 12h'
+ assert ftime(604800) == '1w 0d'
+ assert ftime(13893086) == '22w 6d'
+ assert ftime(59740269) == '1y 46w'
+ assert ftime(61.25) == '1m 1s'
+ assert ftime(119.9) == '1m 59s'
def test_fdate(self):
- self.assertTrue(fdate(-1) == '')
+ assert fdate(-1) == ''
def test_is_url(self):
- self.assertTrue(is_url('http://deluge-torrent.org'))
- self.assertFalse(is_url('file://test.torrent'))
+ assert is_url('http://deluge-torrent.org')
+ assert not is_url('file://test.torrent')
def test_is_magnet(self):
- self.assertTrue(
- is_magnet('magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN')
- )
- self.assertFalse(is_magnet(None))
+ assert is_magnet('magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN')
+ assert not is_magnet(None)
def test_is_infohash(self):
- self.assertTrue(is_infohash('2dc5d0e71a66fe69649a640d39cb00a259704973'))
+ assert is_infohash('2dc5d0e71a66fe69649a640d39cb00a259704973')
def test_get_path_size(self):
if windows_check() and sys.version_info < (3, 8):
# https://bugs.python.org/issue1311
- raise unittest.SkipTest('os.devnull returns False on Windows')
- self.assertTrue(get_path_size(os.devnull) == 0)
- self.assertTrue(get_path_size('non-existant.file') == -1)
+ pytest.skip('os.devnull returns False on Windows')
+ assert get_path_size(os.devnull) == 0
+ assert get_path_size('non-existant.file') == -1
def test_is_ip(self):
- self.assertTrue(is_ip('192.0.2.0'))
- self.assertFalse(is_ip('192..0.0'))
- self.assertTrue(is_ip('2001:db8::'))
- self.assertFalse(is_ip('2001:db8:'))
+ assert is_ip('192.0.2.0')
+ assert not is_ip('192..0.0')
+ assert is_ip('2001:db8::')
+ assert not is_ip('2001:db8:')
def test_is_ipv4(self):
- self.assertTrue(is_ipv4('192.0.2.0'))
- self.assertFalse(is_ipv4('192..0.0'))
+ assert is_ipv4('192.0.2.0')
+ assert not is_ipv4('192..0.0')
def test_is_ipv6(self):
- self.assertTrue(is_ipv6('2001:db8::'))
- self.assertFalse(is_ipv6('2001:db8:'))
+ assert is_ipv6('2001:db8::')
+ assert not is_ipv6('2001:db8:')
+
+ def test_is_interface_name(self):
+ if windows_check():
+ assert not is_interface_name('2001:db8:')
+ assert not is_interface_name('{THIS0000-IS00-ONLY-FOR0-TESTING00000}')
+ else:
+ assert is_interface_name('lo')
+ assert not is_interface_name('127.0.0.1')
+ assert not is_interface_name('eth01101')
+
+ def test_is_interface(self):
+ if windows_check():
+ assert is_interface('127.0.0.1')
+ assert not is_interface('127')
+ assert not is_interface('{THIS0000-IS00-ONLY-FOR0-TESTING00000}')
+ else:
+ assert is_interface('lo')
+ assert is_interface('127.0.0.1')
+ assert not is_interface('127.')
+ assert not is_interface('eth01101')
def test_version_split(self):
- self.assertTrue(VersionSplit('1.2.2') == VersionSplit('1.2.2'))
- self.assertTrue(VersionSplit('1.2.1') < VersionSplit('1.2.2'))
- self.assertTrue(VersionSplit('1.1.9') < VersionSplit('1.2.2'))
- self.assertTrue(VersionSplit('1.2.2') > VersionSplit('1.2.1'))
- self.assertTrue(VersionSplit('1.2.2') > VersionSplit('1.2.2-dev0'))
- self.assertTrue(VersionSplit('1.2.2-dev') < VersionSplit('1.3.0-rc2'))
- self.assertTrue(VersionSplit('1.2.2') > VersionSplit('1.2.2-rc2'))
- self.assertTrue(VersionSplit('1.2.2-rc2-dev') < VersionSplit('1.2.2-rc2'))
- self.assertTrue(VersionSplit('1.2.2-rc3') > VersionSplit('1.2.2-rc2'))
- self.assertTrue(VersionSplit('0.14.9') == VersionSplit('0.14.9'))
- self.assertTrue(VersionSplit('0.14.9') > VersionSplit('0.14.5'))
- self.assertTrue(VersionSplit('0.14.10') >= VersionSplit('0.14.9'))
- self.assertTrue(VersionSplit('1.4.0') > VersionSplit('1.3.900.dev123'))
- self.assertTrue(VersionSplit('1.3.2rc2.dev1') < VersionSplit('1.3.2-rc2'))
- self.assertTrue(VersionSplit('1.3.900.dev888') > VersionSplit('1.3.900.dev123'))
- self.assertTrue(VersionSplit('1.4.0') > VersionSplit('1.4.0.dev123'))
- self.assertTrue(VersionSplit('1.4.0.dev1') < VersionSplit('1.4.0'))
- self.assertTrue(VersionSplit('1.4.0a1') < VersionSplit('1.4.0'))
+ assert VersionSplit('1.2.2') == VersionSplit('1.2.2')
+ assert VersionSplit('1.2.1') < VersionSplit('1.2.2')
+ assert VersionSplit('1.1.9') < VersionSplit('1.2.2')
+ assert VersionSplit('1.2.2') > VersionSplit('1.2.1')
+ assert VersionSplit('1.2.2') > VersionSplit('1.2.2-dev0')
+ assert VersionSplit('1.2.2-dev') < VersionSplit('1.3.0-rc2')
+ assert VersionSplit('1.2.2') > VersionSplit('1.2.2-rc2')
+ assert VersionSplit('1.2.2-rc2-dev') < VersionSplit('1.2.2-rc2')
+ assert VersionSplit('1.2.2-rc3') > VersionSplit('1.2.2-rc2')
+ assert VersionSplit('0.14.9') == VersionSplit('0.14.9')
+ assert VersionSplit('0.14.9') > VersionSplit('0.14.5')
+ assert VersionSplit('0.14.10') >= VersionSplit('0.14.9')
+ assert VersionSplit('1.4.0') > VersionSplit('1.3.900.dev123')
+ assert VersionSplit('1.3.2rc2.dev1') < VersionSplit('1.3.2-rc2')
+ assert VersionSplit('1.3.900.dev888') > VersionSplit('1.3.900.dev123')
+ assert VersionSplit('1.4.0') > VersionSplit('1.4.0.dev123')
+ assert VersionSplit('1.4.0.dev1') < VersionSplit('1.4.0')
+ assert VersionSplit('1.4.0a1') < VersionSplit('1.4.0')
def test_parse_human_size(self):
from deluge.common import parse_human_size
@@ -150,17 +161,15 @@ class CommonTestCase(unittest.TestCase):
('1 MiB', 2 ** (10 * 2)),
('1 GiB', 2 ** (10 * 3)),
('1 GiB', 2 ** (10 * 3)),
- ('1M', 10 ** 6),
- ('1MB', 10 ** 6),
- ('1 GB', 10 ** 9),
- ('1 TB', 10 ** 12),
+ ('1M', 10**6),
+ ('1MB', 10**6),
+ ('1 GB', 10**9),
+ ('1 TB', 10**12),
]
for human_size, byte_size in sizes:
parsed = parse_human_size(human_size)
- self.assertEqual(
- parsed, byte_size, 'Mismatch when converting: %s' % human_size
- )
+ assert parsed == byte_size, 'Mismatch when converting: %s' % human_size
def test_archive_files(self):
arc_filelist = [
@@ -171,10 +180,10 @@ class CommonTestCase(unittest.TestCase):
with tarfile.open(arc_filepath, 'r') as tar:
for tar_info in tar:
- self.assertTrue(tar_info.isfile())
- self.assertTrue(
- tar_info.name in [os.path.basename(arcf) for arcf in arc_filelist]
- )
+ assert tar_info.isfile()
+ assert tar_info.name in [
+ os.path.basename(arcf) for arcf in arc_filelist
+ ]
def test_archive_files_missing(self):
"""Archive exists even with file not found."""
@@ -185,8 +194,8 @@ class CommonTestCase(unittest.TestCase):
filelist.remove('missing.file')
with tarfile.open(arc_filepath, 'r') as tar:
- self.assertEqual(tar.getnames(), filelist)
- self.assertTrue(all(tarinfo.isfile() for tarinfo in tar))
+ assert tar.getnames() == filelist
+ assert all(tarinfo.isfile() for tarinfo in tar)
def test_archive_files_message(self):
filelist = ['test.torrent', 'deluge.png']
@@ -196,9 +205,22 @@ class CommonTestCase(unittest.TestCase):
result_files = filelist + ['archive_message.txt']
with tarfile.open(arc_filepath, 'r') as tar:
- self.assertEqual(tar.getnames(), result_files)
+ assert tar.getnames() == result_files
for tar_info in tar:
- self.assertTrue(tar_info.isfile())
+ assert tar_info.isfile()
if tar_info.name == 'archive_message.txt':
result = tar.extractfile(tar_info).read().decode()
- self.assertEqual(result, 'test')
+ assert result == 'test'
+
+ def test_get_magnet_info_tiers(self):
+ tracker1 = 'udp://tracker1.example.com'
+ tracker2 = 'udp://tracker2.example.com'
+ magnet = (
+ 'magnet:?xt=urn:btih:SU5225URMTUEQLDXQWRB2EQWN6KLTYKN'
+ f'&tr.1={quote_plus(tracker1)}'
+ f'&tr.2={quote_plus(tracker2)}'
+ )
+ result = get_magnet_info(magnet)
+ assert result['info_hash'] == '953bad769164e8482c7785a21d12166f94b9e14d'
+ assert result['trackers'][tracker1] == 1
+ assert result['trackers'][tracker2] == 2