mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2025-12-23 15:49:15 -05:00
74 lines
2.7 KiB
Python
74 lines
2.7 KiB
Python
#!/usr/bin/python3 -OO
|
|
# Copyright 2007-2025 by The SABnzbd-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.
|
|
|
|
"""
|
|
tests.test_nzbparser - Tests of basic NZB parsing
|
|
"""
|
|
|
|
from tests.testhelper import *
|
|
import sabnzbd.nzbparser as nzbparser
|
|
from sabnzbd.nzb import NzbObject
|
|
from sabnzbd.filesystem import save_compressed
|
|
|
|
|
|
@pytest.mark.usefixtures("clean_cache_dir")
|
|
class TestNzbParser:
|
|
@set_config({"download_dir": SAB_CACHE_DIR})
|
|
def test_nzbparser(self):
|
|
nzo = NzbObject("test_basic")
|
|
# Create test file
|
|
metadata = {"category": "test", "password": "testpass"}
|
|
nzb_fp = create_and_read_nzb_fp("..", metadata=metadata)
|
|
|
|
# Create folder and save compressed NZB like SABnzbd would do
|
|
save_compressed(SAB_CACHE_DIR, "test", nzb_fp)
|
|
nzb_file = os.path.join(SAB_CACHE_DIR, "test.nzb.gz")
|
|
assert os.path.exists(nzb_file)
|
|
|
|
# Files we expect
|
|
test_dir = os.path.normpath(os.path.join(SAB_DATA_DIR, ".."))
|
|
expected_files = [fl for fl in os.listdir(test_dir) if os.path.isfile(os.path.join(test_dir, fl))]
|
|
expected_files.sort()
|
|
assert expected_files
|
|
|
|
# Parse the file
|
|
nzbparser.nzbfile_parser(nzb_file, nzo)
|
|
|
|
# Compare filenames
|
|
resulting_files = [nzf.filename for nzf in nzo.files]
|
|
resulting_files.sort()
|
|
assert resulting_files == expected_files
|
|
|
|
# Compare sizes
|
|
expected_sizes = [os.path.getsize(os.path.join(test_dir, fl)) for fl in expected_files]
|
|
expected_sizes.sort()
|
|
resulting_sizes = [nzf.bytes for nzf in nzo.files]
|
|
resulting_sizes.sort()
|
|
assert resulting_sizes == expected_sizes
|
|
|
|
# Check meta-data
|
|
for field in metadata:
|
|
assert [metadata[field]] == nzo.meta[field]
|
|
|
|
@pytest.mark.xfail(reason="These tests should be added")
|
|
def test_nzbparser_bad_stuff(self):
|
|
# TODO: Add tests for:
|
|
# Duplicate parts
|
|
# Strange articles sizes
|
|
# Correct parsing of dates
|
|
assert False
|