Browse Source

Py3: Further extend testing-framework and use PyTest style

pull/1253/head
Safihre 6 years ago
parent
commit
155fb8e5d2
  1. 37
      tests/test_filesystem.py
  2. 23
      tests/test_misc.py
  3. 32
      tests/testhelper.py

37
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

23
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)

32
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'}

Loading…
Cancel
Save