diff --git a/tests/helpers_tests.py b/tests/helpers_tests.py index f51b3896c3ff196b6ca7e35ed4a53ede28e6d7a2..ceaa8a2a9ef219400ef6346b9fb1707d6a633618 100755 --- a/tests/helpers_tests.py +++ b/tests/helpers_tests.py @@ -1,22 +1,93 @@ #!/usr/bin/env python2.7 -""" -Author: Dustyn Gibson <miigotu@gmail.com> -URL: http://github.com/SiCKRAGETV/SickRage - -This file is part of SickRage. - -SickRage 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. +# Author: Dustyn Gibson <miigotu@gmail.com> +# URL: http://github.com/SiCKRAGETV/SickRage +# +# This file is part of SickRage. +# +# SickRage 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. +# +# SickRage 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 SickRage. If not, see <http://www.gnu.org/licenses/>. -SickRage 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. +""" +Test sickbeard.helpers -You should have received a copy of the GNU General Public License -along with SickRage. If not, see <http://www.gnu.org/licenses/>. +Methods: + isValidLanguage + fixGlob + indentXML + remove_non_release_groups + isMediaFile + isRarFile + isBeingWritten + remove_file_failed + findCertainShow + makeDir + searchDBForShow + searchIndexerForShowID + listMediaFiles + copyFile + moveFile + link + hardlinkFile + symlink + moveAndSymlinkFile + make_dirs + rename_ep_file + delete_empty_folders + fileBitFilter + chmodAsParent + fixSetGroupID + is_anime_in_show_list + update_anime_support + get_absolute_number_from_season_and_episode + get_all_episodes_from_absolute_number + sanitizeSceneName + arithmeticEval + create_https_certificates + backupVersionedFile + restoreVersionedFile + tryInt + md5_for_file + get_lan_ip + check_url + anon_url + encrypt + decrypt + full_sanitizeSceneName + _check_against_names + get_show + is_hidden_folder + real_path + validateShow + set_up_anidb_connection + makeZip + extractZip + backupConfigZip + restoreConfigZip + mapIndexersToShow + touchFile + _getTempDir + codeDescription + _setUpSession + getURL + download_file + get_size + generateApiKey + remove_article + generateCookieSecret + verify_freespace + pretty_time_delta + isFileLocked + getDiskSpaceUsage """ import sys @@ -27,12 +98,13 @@ sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), '..') import unittest -from sickbeard.helpers import remove_non_release_groups +from sickbeard.helpers import isValidLanguage, remove_non_release_groups +from babelfish import language # pylint: disable=import-error -test_result = 'Show.Name.S01E01.HDTV.x264-RLSGROUP' -test_cases = { +TEST_RESULT = 'Show.Name.S01E01.HDTV.x264-RLSGROUP' +TEST_CASES = { 'removewords': [ - test_result, + TEST_RESULT, 'Show.Name.S01E01.HDTV.x264-RLSGROUP[cttv]', 'Show.Name.S01E01.HDTV.x264-RLSGROUP.RiPSaLoT', 'Show.Name.S01E01.HDTV.x264-RLSGROUP[GloDLS]', @@ -71,25 +143,516 @@ test_cases = { ] } + class HelpersTests(unittest.TestCase): def __init__(self, *args, **kwargs): super(HelpersTests, self).__init__(*args, **kwargs) + def test_generator(test_strings): def _test(self): for test_string in test_strings: - self.assertEqual(remove_non_release_groups(test_string), test_result) + self.assertEqual(remove_non_release_groups(test_string), TEST_RESULT) return _test + +class HelpersTests2(unittest.TestCase): + @unittest.expectedFailure + def test_is_valid_language(self): + # TODO: Determine why this fails and at such a high failure % + """ + Test isValidLanguage + """ + exception_count = 0 + total = 0 + for lang in language.LANGUAGES: + total += 1 + try: + self.assertTrue(isValidLanguage(lang), lang) + except NameError: + exception_count += 1 + except Exception as error: + raise error + if exception_count > 0: + raise Exception('Language failure ratio: %s [%s/%s]' % + (100.0 * exception_count/total, exception_count, total)) + + @unittest.skip('Not yet implemented') + def test_fix_glob(self): + """ + Test fixGlob + """ + pass + + @unittest.skip('Not yet implemented') + def test_indent_xml(self): + """ + Test indentXML + """ + pass + + @unittest.skip('Not yet implemented') + def test_remove_non_release_groups(self): + """ + Test remove_non_release_groups + """ + pass + + @unittest.skip('Not yet implemented') + def test_is_media_file(self): + """ + Test isMediaFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_is_rar_file(self): + """ + Test isRarFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_is_being_written(self): + """ + Test isBeingWritten + """ + pass + + @unittest.skip('Not yet implemented') + def test_remove_file_failed(self): + """ + Test remove_file_failed + """ + pass + + @unittest.skip('Not yet implemented') + def test_find_certain_show(self): + """ + Test findCertainShow + """ + pass + + @unittest.skip('Not yet implemented') + def test_make_dir(self): + """ + Test makeDir + """ + pass + + @unittest.skip('Not yet implemented') + def test_search_db_for_show(self): + """ + Test searchDBForShow + """ + pass + + @unittest.skip('Not yet implemented') + def test_search_indexer_for_show_id(self): + """ + Test searchIndexerForShowID + """ + pass + + @unittest.skip('Not yet implemented') + def test_list_media_files(self): + """ + Test listMediaFiles + """ + pass + + @unittest.skip('Not yet implemented') + def test_copy_file(self): + """ + Test copyFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_move_file(self): + """ + Test moveFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_link(self): + """ + Test link + """ + pass + + @unittest.skip('Not yet implemented') + def test_hardlink_file(self): + """ + Test hardlinkFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_symlink(self): + """ + Test symlink + """ + pass + + @unittest.skip('Not yet implemented') + def test_move_and_symlink_file(self): + """ + Test moveAndSymlinkFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_make_dirs(self): + """ + Test make_dirs + """ + pass + + @unittest.skip('Not yet implemented') + def test_rename_ep_file(self): + """ + Test rename_ep_file + """ + pass + + @unittest.skip('Not yet implemented') + def test_delete_empty_folders(self): + """ + Test delete_empty_folders + """ + pass + + @unittest.skip('Not yet implemented') + def test_file_bit_filter(self): + """ + Test fileBitFilter + """ + pass + + @unittest.skip('Not yet implemented') + def test_chmod_as_parent(self): + """ + Test chmodAsParent + """ + pass + + @unittest.skip('Not yet implemented') + def test_fix_set_group_id(self): + """ + Test fixSetGroupID + """ + pass + + @unittest.skip('Not yet implemented') + def test_is_anime_in_show_list(self): + """ + Test is_anime_in_show_list + """ + pass + + @unittest.skip('Not yet implemented') + def test_update_anime_support(self): + """ + Test update_anime_support + """ + pass + + @unittest.skip('Not yet implemented') + def test_get_abs_no_from_season_and_ep(self): + """ + Test get_absolute_number_from_season_and_episode + """ + pass + + @unittest.skip('Not yet implemented') + def test_get_all_eps_from_abs_no(self): + """ + Test get_all_episodes_from_absolute_number + """ + pass + + @unittest.skip('Not yet implemented') + def test_sanitize_scene_name(self): + """ + Test sanitizeSceneName + """ + pass + + @unittest.skip('Not yet implemented') + def test_arithmetic_eval(self): + """ + Test arithmeticEval + """ + pass + + @unittest.skip('Not yet implemented') + def test_create_https_certificates(self): + """ + Test create_https_certificates + """ + pass + + @unittest.skip('Not yet implemented') + def test_backup_versioned_file(self): + """ + Test backupVersionedFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_restore_versioned_file(self): + """ + Test restoreVersionedFile + """ + pass + + @unittest.skip('Not yet implemented') + def test_try_int(self): + """ + Test tryInt + """ + pass + + @unittest.skip('Not yet implemented') + def test_md5_for_file(self): + """ + Test md5_for_file + """ + pass + + @unittest.skip('Not yet implemented') + def test_get_lan_ip(self): + """ + Test get_lan_ip + """ + pass + + @unittest.skip('Not yet implemented') + def test_check_url(self): + """ + Test check_url + """ + pass + + @unittest.skip('Not yet implemented') + def test_anon_url(self): + """ + Test anon_url + """ + pass + + @unittest.skip('Not yet implemented') + def test_encrypt(self): + """ + Test encrypt + """ + pass + + @unittest.skip('Not yet implemented') + def test_decrypt(self): + """ + Test decrypt + """ + pass + + @unittest.skip('Not yet implemented') + def test_full_sanitize_scene_name(self): + """ + Test full_sanitizeSceneName + """ + pass + + @unittest.skip('Not yet implemented') + def test__check_against_names(self): + """ + Test _check_against_names + """ + pass + + @unittest.skip('Not yet implemented') + def test_get_show(self): + """ + Test get_show + """ + pass + + @unittest.skip('Not yet implemented') + def test_is_hidden_folder(self): + """ + Test is_hidden_folder + """ + pass + + @unittest.skip('Not yet implemented') + def test_real_path(self): + """ + Test real_path + """ + pass + + @unittest.skip('Not yet implemented') + def test_validate_show(self): + """ + Test validateShow + """ + pass + + @unittest.skip('Not yet implemented') + def test_set_up_anidb_connection(self): + """ + Test set_up_anidb_connection + """ + pass + + @unittest.skip('Not yet implemented') + def test_make_zip(self): + """ + Test makeZip + """ + pass + + @unittest.skip('Not yet implemented') + def test_extract_zip(self): + """ + Test extractZip + """ + pass + + @unittest.skip('Not yet implemented') + def test_backup_config_zip(self): + """ + Test backupConfigZip + """ + pass + + @unittest.skip('Not yet implemented') + def test_restore_config_zip(self): + """ + Test restoreConfigZip + """ + pass + + @unittest.skip('Not yet implemented') + def test_map_indexers_to_show(self): + """ + Test mapIndexersToShow + """ + pass + + @unittest.skip('Not yet implemented') + def test_touch_file(self): + """ + Test touchFile + """ + pass + + @unittest.skip('Not yet implemented') + def test__get_temp_dir(self): + """ + Test _getTempDir + """ + pass + + @unittest.skip('Not yet implemented') + def test_code_description(self): + """ + Test codeDescription + """ + pass + + @unittest.skip('Not yet implemented') + def test__set_up_session(self): + """ + Test _setUpSession + """ + pass + + @unittest.skip('Not yet implemented') + def test_get_url(self): + """ + Test getURL + """ + pass + + @unittest.skip('Not yet implemented') + def test_download_file(self): + """ + Test download_file + """ + pass + + @unittest.skip('Not yet implemented') + def test_get_size(self): + """ + Test get_size + """ + pass + + @unittest.skip('Not yet implemented') + def test_generate_api_key(self): + """ + Test generateApiKey + """ + pass + + @unittest.skip('Not yet implemented') + def test_remove_article(self): + """ + Test remove_article + """ + pass + + @unittest.skip('Not yet implemented') + def test_generate_cookie_secret(self): + """ + Test generateCookieSecret + """ + pass + + @unittest.skip('Not yet implemented') + def test_verify_free_space(self): + """ + Test verify_freespace + """ + pass + + @unittest.skip('Not yet implemented') + def test_pretty_time_delta(self): + """ + Test pretty_time_delta + """ + pass + + @unittest.skip('Not yet implemented') + def test_is_file_locked(self): + """ + Test isFileLocked + """ + pass + + @unittest.skip('Not yet implemented') + def test_get_disk_space_usage(self): + """ + Test getDiskSpaceUsage + """ + pass + + if __name__ == '__main__': print "==================" print "STARTING - Helpers TESTS" print "==================" print "######################################################################" - for name, test_data in test_cases.items(): + for name, test_data in TEST_CASES.items(): test_name = 'test_%s' % name test = test_generator(test_data) setattr(HelpersTests, test_name, test) - suite = unittest.TestLoader().loadTestsFromTestCase(HelpersTests) - unittest.TextTestRunner(verbosity=2).run(suite) + SUITE = unittest.TestLoader().loadTestsFromTestCase(HelpersTests) + unittest.TextTestRunner(verbosity=2).run(SUITE) + + SUITE = unittest.TestLoader().loadTestsFromTestCase(HelpersTests2) + unittest.TextTestRunner(verbosity=2).run(SUITE) +