From 155fb8e5d2c425eceb35f12ae4b7f45443d005ff Mon Sep 17 00:00:00 2001 From: Safihre Date: Sun, 27 Jan 2019 13:35:33 +0100 Subject: [PATCH] Py3: Further extend testing-framework and use PyTest style --- tests/test_filesystem.py | 37 ++++++++++++++++++++++++++++++++++--- tests/test_misc.py | 23 +++++++++++------------ tests/testhelper.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 15 deletions(-) diff --git a/tests/test_filesystem.py b/tests/test_filesystem.py index 4ddcde8..3fa3a3d 100644 --- a/tests/test_filesystem.py +++ b/tests/test_filesystem.py @@ -19,11 +19,42 @@ tests.test_misc - Testing functions in filesystem.py """ -import unittest +import sabnzbd.filesystem as filesystem from tests.testhelper import * -class FilesystemTest(unittest.TestCase): + +class TestFileFolderNameSanitizer: + + def test_empty(self): + assert filesystem.sanitize_filename(None) is None + assert filesystem.sanitize_foldername(None) is None + + @set_platform('win32') + def test_colon_handling_windows(self): + assert filesystem.sanitize_filename('test:aftertest') == 'test3Aaftertest' + + @set_platform('darwin') + def test_colon_handling_darwin(self): + assert filesystem.sanitize_filename('test:aftertest') == 'aftertest' + + @set_platform('linux') + def test_colon_handling_other(self): + assert filesystem.sanitize_filename('test:aftertest') == 'test:aftertest' + + @set_platform('win32') + def test_win_devices_on_win(self): + assert filesystem.sanitize_filename('aux.txt') == '_aux.txt' + assert filesystem.sanitize_filename('txt.aux') == 'txt.aux' + + @set_platform('linux') + def test_win_devices_not_win(self): + # Linux and Darwin are the same for this + assert filesystem.sanitize_filename('aux.txt') == 'aux.txt' + assert filesystem.sanitize_filename('txt.aux') == 'txt.aux' + + +class TestFilesystemTest: @set_config({"fail_hopeless_jobs": True}) def test_een(self): - assert cfg.fail_hopeless_jobs() == True + pass diff --git a/tests/test_misc.py b/tests/test_misc.py index d66b226..7d30b77 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -19,28 +19,27 @@ tests.test_misc - Testing functions in misc.py """ -import unittest import datetime from sabnzbd import misc from tests.testhelper import * -class MiscTest(unittest.TestCase): +class TestMisc: def assertTime(self, offset, age): - self.assertEqual(offset, misc.calc_age(age, trans=True)) - self.assertEqual(offset, misc.calc_age(age, trans=False)) + assert offset == misc.calc_age(age, trans=True) + assert offset == misc.calc_age(age, trans=False) def test_timeformat24h(self): - self.assertEqual('%H:%M:%S', misc.time_format('%H:%M:%S')) - self.assertEqual('%H:%M', misc.time_format('%H:%M')) + assert '%H:%M:%S' == misc.time_format('%H:%M:%S') + assert '%H:%M' == misc.time_format('%H:%M') - @set_config({"ampm": True}) + @set_config({'ampm': True}) def test_timeformatampm(self): misc.HAVE_AMPM = True - self.assertEqual('%I:%M:%S %p', misc.time_format('%H:%M:%S')) - self.assertEqual('%I:%M %p', misc.time_format('%H:%M')) + assert '%I:%M:%S %p' == misc.time_format('%H:%M:%S') + assert '%I:%M %p' == misc.time_format('%H:%M') def test_calc_age(self): date = datetime.datetime.now() @@ -53,8 +52,8 @@ class MiscTest(unittest.TestCase): def test_monthrange(self): min_date = datetime.date.today() - datetime.timedelta(days=350) - self.assertEqual(12, len(list(misc.monthrange(min_date, datetime.date.today())))) + assert 12 == len(list(misc.monthrange(min_date, datetime.date.today()))) def test_safe_lower(self): - self.assertEqual("all caps", misc.safe_lower("ALL CAPS")) - self.assertEqual("", misc.safe_lower(None)) + assert 'all caps' == misc.safe_lower('ALL CAPS') + assert '' == misc.safe_lower(None) diff --git a/tests/testhelper.py b/tests/testhelper.py index f77d5c3..3a74f1b 100644 --- a/tests/testhelper.py +++ b/tests/testhelper.py @@ -25,6 +25,7 @@ import subprocess import time import requests +import sabnzbd import sabnzbd.cfg as cfg SAB_HOST = 'localhost' @@ -53,6 +54,37 @@ def set_config(settings_dict): return set_config_decorator +def set_platform(platform): + """ Change config-values on the fly, per test""" + def set_platform_decorator(func): + def wrapper_func(*args, **kwargs): + # Save original values + is_windows = sabnzbd.WIN32 + is_darwin = sabnzbd.DARWIN + + # Set current platform + if platform == 'win32': + sabnzbd.WIN32 = True + sabnzbd.DARWIN = False + elif platform == 'darwin': + sabnzbd.WIN32 = False + sabnzbd.DARWIN = True + elif platform == 'linux': + sabnzbd.WIN32 = False + sabnzbd.DARWIN = False + + # Perform test + value = func(*args, **kwargs) + + # Reset values + sabnzbd.WIN32 = is_windows + sabnzbd.DARWIN = is_darwin + + return value + return wrapper_func + return set_platform_decorator + + def get_url_result(url=''): """ Do basic request to web page """ arguments = {'session': 'apikey'}