2 changed files with 53 additions and 0 deletions
Binary file not shown.
@ -0,0 +1,53 @@ |
|||
#!/usr/bin/python3 -OO |
|||
# Copyright 2007-2021 The SABnzbd-Team <team@sabnzbd.org> |
|||
# |
|||
# This program is free software; you can redistribute it and/or |
|||
# modify it under the terms of the GNU General Public License |
|||
# as published by the Free Software Foundation; either version 2 |
|||
# of the License, or (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with this program; if not, write to the Free Software |
|||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|||
|
|||
""" |
|||
Testing SABnzbd par2 parsing |
|||
""" |
|||
|
|||
from sabnzbd.par2file import * |
|||
from tests.testhelper import * |
|||
|
|||
# TODO: Add testing for edge cases, such as non-unique md5of16k or broken par files |
|||
|
|||
|
|||
class TestPar2Parsing: |
|||
def test_parse_par2_file(self): |
|||
# These files are all <16k so the MD5 of the whole file is the same as the 16k one |
|||
assert {"random.bin": b"\xbf\xe0\xe4\x10\xa2#\xf5\xbeN\x7f2\xe5\x9e\xdd\t\x03"} == parse_par2_file( |
|||
os.path.join(SAB_DATA_DIR, "deobfuscate_filenames", "rename.par2"), {} |
|||
) |
|||
assert {"frènch_german_demö.rar": b"C\t\x1d\xbd\xdf\x8c\xb5w \xcco\xbf~L)\xc2"} == parse_par2_file( |
|||
os.path.join(SAB_DATA_DIR, "test_win_unicode", "frènch_german_demö.rar.vol0+1.par2"), {} |
|||
) |
|||
assert { |
|||
"我喜欢编程.part5.rar": b"\x19\xe7\xb7\xb3\xbc\x17\xc4\xefo\x96*+x\x0c]M", |
|||
"我喜欢编程.part6.rar": b"M\x8c.{\xae\x15\xb7\xa1\x8c\xc7\x1f\x8a\xb3^`\xd9", |
|||
"我喜欢编程.part4.rar": b"\xb8D:r\xd8\x04\x98\xb3\xc2\x89\xed\xc1\x90\xe445", |
|||
"我喜欢编程.part2.rar": b"aN#\x04*\x86\xd96|PoDV\xa6S\xa8", |
|||
"我喜欢编程.part3.rar": b"\xc5\x1ep\xeb\x94\xa7\x12\xa1e\x8c\xc5\xda\xda\xae1 ", |
|||
"我喜欢编程.part1.rar": b'_tJ\x15\x1a3;1\xaao\xa9n\n"\xa5p', |
|||
"我喜欢编程.part7.rar": b"M\x1c\x14\x9b\xacY\x81\x8d\x82 VV\x81&\x8eH", |
|||
} == parse_par2_file(os.path.join(SAB_DATA_DIR, "unicode_rar", "我喜欢编程.par2"), {}) |
|||
|
|||
def test_parse_par2_file_16k(self): |
|||
# This file is 18k, so it's md5 of the first 16k is actually different |
|||
md5of16k = {} |
|||
assert {"rss_feed_test.xml": b"\xf8\x8f\x88\x91\xae{\x03\xc8\xad\xcb\xb4Y\xa0+\x06\xf6"} == parse_par2_file( |
|||
os.path.join(SAB_DATA_DIR, "par2file", "basic_16k.par2"), md5of16k |
|||
) |
|||
assert md5of16k == {b"'ky\xd7\xd1\xd3wF\xed\x9c\xf7\x9b\x90\x93\x106": "rss_feed_test.xml"} |
Loading…
Reference in new issue