mirror of
https://github.com/SickGear/SickGear.git
synced 2024-11-25 14:25:05 +00:00
32987134ba
Cleanup most init warnings. Cleanup some vars, pythonic instead of js. Some typos and python var/func names for Scheduler. Remove legacy handlers deprecated in 2020. Remove some legacy tagged stuff. Cleanup ConfigParser and 23.py Change cleanup vendored scandir. Remove redundant pkg_resources.py in favour of the vendor folder. Remove backports. Remove trakt checker. Change remove redundant WindowsSelectorEventLoopPolicy from webserveInit. Cleanup varnames and providers Various minor tidy ups to remove ide warnings.
191 lines
6.9 KiB
Python
191 lines
6.9 KiB
Python
# coding=UTF-8
|
|
# Author: Dennis Lutter <lad1337@gmail.com>
|
|
#
|
|
# This file is part of SickGear.
|
|
#
|
|
# SickGear 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 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# SickGear 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 SickGear. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
from __future__ import print_function
|
|
import warnings
|
|
warnings.filterwarnings('ignore', module=r'.*fuz.*', message='.*Sequence.*')
|
|
|
|
import os.path
|
|
import sys
|
|
import test_lib as test
|
|
import unittest
|
|
|
|
import sickgear
|
|
from sickgear.helpers import real_path
|
|
from sickgear.name_cache import add_name_to_cache
|
|
from sickgear.postProcessor import PostProcessor
|
|
from sickgear.processTV import ProcessTVShow
|
|
from sickgear.tv import TVEpisode, TVShow, logger
|
|
from sickgear.indexers.indexer_config import TVINFO_TVDB, TVINFO_TVMAZE
|
|
|
|
if 'win32' == sys.platform:
|
|
root_folder_tests = [
|
|
# root_dirs, path, expected
|
|
('1|C:\\dir', 'C:\\folder', None),
|
|
('1|c:\\dir', 'c:\\dir', 'c:\\dir'),
|
|
('1|c:\\dir2', 'c:\\dir2\\dir', 'c:\\dir2'),
|
|
('1|c:\\tv_complete|c:\\tv', 'c:\\tv', 'c:\\tv')
|
|
]
|
|
else:
|
|
root_folder_tests = [
|
|
# root_dirs, path, expected
|
|
('1|~/dir', '~/dir/dir', '~/dir'),
|
|
('1|/mnt/hdd/dir', '/mnt/hdd/folder', None),
|
|
('1|/mnt/hdd/dir', '/mnt/hdd/dir', '/mnt/hdd/dir'),
|
|
('1|/mnt/hdd/dir2', '/mnt/hdd/dir2/dir', '/mnt/hdd/dir2'),
|
|
('1|/mnt/hdd/tv_complete|/mnt/hdd/tv', '/mnt/hdd/tv', '/mnt/hdd/tv')
|
|
]
|
|
|
|
script_tests = [{'name': 'TheTVdb',
|
|
'EXTRA_SCRIPTS': 'extra_script.py',
|
|
'SG_EXTRA_SCRIPTS': 'sg_extra_script.py',
|
|
'file_path': '/mnt/hdd/folder/',
|
|
'tvid': TVINFO_TVDB,
|
|
'result': [False, False]},
|
|
{'name': 'TVmaze',
|
|
'EXTRA_SCRIPTS': 'extra_script.py',
|
|
'SG_EXTRA_SCRIPTS': 'sg_extra_script.py',
|
|
'file_path': '/mnt/hdd/folder/',
|
|
'tvid': TVINFO_TVMAZE,
|
|
'result': [True, False]},
|
|
]
|
|
|
|
|
|
class PPInitTests(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self.pp = PostProcessor(test.FILEPATH)
|
|
|
|
def test_init_file_name(self):
|
|
self.assertEqual(self.pp.file_name, test.FILENAME)
|
|
|
|
def test_init_folder_name(self):
|
|
self.assertEqual(self.pp.folder_name, test.SHOWNAME)
|
|
|
|
|
|
class PPBasicTests(test.SickbeardTestDBCase):
|
|
|
|
def test_process(self):
|
|
show_obj = TVShow(1, 3)
|
|
show_obj.tvid = TVINFO_TVDB
|
|
show_obj.name = test.SHOWNAME
|
|
show_obj.location = test.SHOWDIR
|
|
show_obj.save_to_db()
|
|
|
|
sickgear.showList = [show_obj]
|
|
sickgear.showDict = {show_obj.sid_int: show_obj}
|
|
ep_obj = TVEpisode(show_obj, test.SEASON, test.EPISODE)
|
|
ep_obj.name = 'some ep name'
|
|
ep_obj.release_name = 'test setter'
|
|
ep_obj.save_to_db()
|
|
|
|
add_name_to_cache('show name', tvid=TVINFO_TVDB, prodid=3)
|
|
sickgear.PROCESS_METHOD = 'move'
|
|
|
|
pp = PostProcessor(test.FILEPATH)
|
|
self.assertTrue(pp.process())
|
|
|
|
|
|
class PPFolderTests(test.SickbeardTestDBCase):
|
|
|
|
def test_root_folder(self):
|
|
for root_dirs, path, expected in root_folder_tests:
|
|
sickgear.ROOT_DIRS = root_dirs
|
|
self.assertEqual(expected and real_path(expected) or expected, ProcessTVShow.find_parent(path))
|
|
|
|
|
|
class PPTest(PostProcessor):
|
|
|
|
def __init__(self, file_path, nzb_name=None, process_method=None, force_replace=None, use_trash=None,
|
|
webhandler=None, show_obj=None):
|
|
super(PPTest, self).__init__(file_path, nzb_name, process_method, force_replace,
|
|
use_trash, webhandler, show_obj)
|
|
self.has_errors = []
|
|
self.current_script = None
|
|
self.current_script_num = -1
|
|
|
|
def _execute_extra_scripts(self, script_name, ep_obj, new_call=False):
|
|
if self.current_script != script_name:
|
|
self.current_script_num += 1
|
|
self.has_errors.append(False)
|
|
self.current_script = script_name
|
|
super(PPTest, self)._execute_extra_scripts(script_name, ep_obj, new_call)
|
|
|
|
def _log(self, message, level=logger.MESSAGE):
|
|
if logger.ERROR == level:
|
|
self.has_errors[self.current_script_num] = True
|
|
if 'Script result: ' in message and 'ERROR' in message:
|
|
self.has_errors[self.current_script_num] = True
|
|
super(PPTest, self)._log(message, level)
|
|
|
|
|
|
class PPScriptTests(test.SickbeardTestDBCase):
|
|
|
|
@staticmethod
|
|
def _create_ep(tvid):
|
|
show_obj = TVShow(tvid, 3)
|
|
show_obj.name = test.SHOWNAME
|
|
show_obj.location = test.SHOWDIR
|
|
show_obj.save_to_db()
|
|
|
|
sickgear.showList = [show_obj]
|
|
sickgear.showDict = {show_obj.sid_int: show_obj}
|
|
ep_obj = TVEpisode(show_obj, test.SEASON, test.EPISODE)
|
|
ep_obj.name = 'some ep name'
|
|
ep_obj.location = '/mnt/hdd/folder/the show/season 01/the show - s01e01 - name.mkv'
|
|
ep_obj.save_to_db()
|
|
return ep_obj
|
|
|
|
@staticmethod
|
|
def _remove_show(ep_obj):
|
|
ep_obj.show_obj.delete_show()
|
|
|
|
def test_extra_script(self):
|
|
self.longMessage = True
|
|
base_path = os.path.join(test.TESTDIR, 'scripts')
|
|
|
|
for t in script_tests:
|
|
self.has_errors = []
|
|
self.current_script = None
|
|
self.current_script_num = -1
|
|
sickgear.EXTRA_SCRIPTS = ['%s %s' % (sys.executable, os.path.join(base_path, t['EXTRA_SCRIPTS']))]
|
|
sickgear.SG_EXTRA_SCRIPTS = ['%s %s' % (sys.executable, os.path.join(base_path, t['SG_EXTRA_SCRIPTS']))]
|
|
pp = PPTest(t['file_path'])
|
|
ep_obj = self._create_ep(t['tvid'])
|
|
pp._run_extra_scripts(ep_obj)
|
|
self.assertEqual(t['result'], pp.has_errors, msg='Test Case: %s' % t['name'])
|
|
self._remove_show(ep_obj)
|
|
|
|
|
|
if '__main__' == __name__:
|
|
|
|
print('===============================')
|
|
print('STARTING - Post Processor TESTS')
|
|
print('===============================')
|
|
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(PPInitTests)
|
|
unittest.TextTestRunner(verbosity=2).run(suite)
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(PPBasicTests)
|
|
unittest.TextTestRunner(verbosity=2).run(suite)
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(PPFolderTests)
|
|
unittest.TextTestRunner(verbosity=2).run(suite)
|
|
# disabled due to security alert... https://github.com/clinton-hall/nzbToMedia/issues/1721
|
|
# suite = unittest.TestLoader().loadTestsFromTestCase(PPScriptTests)
|
|
# unittest.TextTestRunner(verbosity=2).run(suite)
|
|
|
|
print('===============================')
|