Accept qBittorrent hidden padding files
This commit is contained in:
@@ -118,6 +118,47 @@ class ResourceTests(unittest.TestCase):
|
||||
self.assertEqual(root.available_file_count, 1)
|
||||
self.assertEqual(root.available_logical_bytes, 3)
|
||||
|
||||
def test_qbittorrent_hidden_padding_files_are_normalized(self):
|
||||
info = {
|
||||
b"files": [
|
||||
{b"length": 3, b"path": [b"first.bin"]},
|
||||
{
|
||||
b"attr": b"p", b"length": 5,
|
||||
b"path": [b"_____padding_file_5"],
|
||||
},
|
||||
{b"length": 7, b"path": [b"last.bin"]},
|
||||
],
|
||||
b"name": b"with-padding",
|
||||
b"piece length": 16384,
|
||||
b"pieces": b"x" * 20,
|
||||
}
|
||||
metainfo = encode({b"info": info})
|
||||
torrent_hash = hashlib.sha1(encode(info)).hexdigest()
|
||||
normalized = normalize_resource(
|
||||
{
|
||||
"hash": torrent_hash,
|
||||
"name": "with-padding",
|
||||
"state": "stalledUP",
|
||||
},
|
||||
[
|
||||
{
|
||||
"index": 0, "name": "with-padding/first.bin",
|
||||
"size": 3, "completed": 3, "priority": 1,
|
||||
},
|
||||
{
|
||||
"index": 1, "name": "with-padding/last.bin",
|
||||
"size": 7, "completed": 7, "priority": 1,
|
||||
},
|
||||
],
|
||||
metainfo,
|
||||
)
|
||||
self.assertEqual(
|
||||
[item.canonical_path for item in normalized.files],
|
||||
["with-padding/first.bin", "with-padding/last.bin"],
|
||||
)
|
||||
self.assertEqual(normalized.summary.total_file_count, 2)
|
||||
self.assertEqual(normalized.summary.selected_complete_bytes, 10)
|
||||
|
||||
def test_noncanonical_and_unsafe_paths_are_distinct(self):
|
||||
info = {
|
||||
b"length": 3,
|
||||
|
||||
Reference in New Issue
Block a user