Fix bugs, add update system + tests + fix deployment/build system
This commit is contained in:
@@ -12,27 +12,32 @@ class TestUpdateRegex(unittest.TestCase):
|
||||
"""
|
||||
regex: Pattern = compile(r'^(\d{1,2}\.)(\d{1,2}\.)(\d{1,2})$')
|
||||
|
||||
|
||||
def test_first_version(self):
|
||||
self.assertTrue(fullmatch(self.regex, '1.0.0'))
|
||||
|
||||
|
||||
|
||||
def test_patch_version(self):
|
||||
self.assertTrue(fullmatch(self.regex, '1.0.00'))
|
||||
self.assertTrue(fullmatch(self.regex, '1.0.1'))
|
||||
self.assertTrue(fullmatch(self.regex, '1.0.12'))
|
||||
self.assertTrue(fullmatch(self.regex, '1.0.54'))
|
||||
|
||||
|
||||
|
||||
def test_minor_version(self):
|
||||
self.assertTrue(fullmatch(self.regex, '1.00.0'))
|
||||
self.assertTrue(fullmatch(self.regex, '1.1.0'))
|
||||
self.assertTrue(fullmatch(self.regex, '1.98.0'))
|
||||
self.assertTrue(fullmatch(self.regex, '1.24.0'))
|
||||
|
||||
|
||||
|
||||
def test_major_version(self):
|
||||
self.assertTrue(fullmatch(self.regex, '00.0.0'))
|
||||
self.assertTrue(fullmatch(self.regex, '10.0.0'))
|
||||
self.assertTrue(fullmatch(self.regex, '99.0.0'))
|
||||
self.assertTrue(fullmatch(self.regex, '42.0.0'))
|
||||
|
||||
|
||||
def test_bad_version(self):
|
||||
self.assertFalse(fullmatch(self.regex, '1.0.0000'))
|
||||
self.assertFalse(fullmatch(self.regex, '1.00000.0'))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import unittest
|
||||
from urllib.error import HTTPError, URLError
|
||||
from test_update_regex import TestUpdateRegex
|
||||
from webpicdownloader.util.UpdateUtils import fetch_version, is_new_version_available
|
||||
from webpicdownloader.util.UpdateUtils import fetch_version, check_for_update
|
||||
|
||||
class TestUpdateUtils(unittest.TestCase):
|
||||
"""
|
||||
@@ -11,32 +11,64 @@ class TestUpdateUtils(unittest.TestCase):
|
||||
* regex -> use UpdateRegex unittest regex.
|
||||
* good_url -> use a permalink VERSION file.
|
||||
* bad_url -> bad link that point a 404 error.
|
||||
* bad_version -> use a permalink VERSION file for wich version format is bad.
|
||||
"""
|
||||
regex = TestUpdateRegex.regex
|
||||
good_url = 'https://git.endmove.eu/EndMove/WebPicDownloader/raw/commit/6b26b89c6901841faaa09154c185d202223492c2/VERSION'
|
||||
bad_url = 'https://git.endmove.eu/EndMove/WebPicDownloader/raw/commit/bad-commit/VERSION'
|
||||
bad_version = 'https://git.endmove.eu/EndMove/WebPicDownloader/src/commit/6b26b89c6901841faaa09154c185d202223492c2/app_version_file.txt'
|
||||
|
||||
|
||||
|
||||
def test_fetch_version__good_url(self):
|
||||
"""
|
||||
We test the recovery of the available version with a URL
|
||||
indicating a correct version file.
|
||||
"""
|
||||
self.assertTrue(fetch_version(self.good_url) == '1.0.0')
|
||||
|
||||
|
||||
|
||||
def test_fetch_version__bad_url(self):
|
||||
"""
|
||||
We test the recovery of the version with erroneous URLs,
|
||||
or not leading to any specific file
|
||||
"""
|
||||
self.assertRaises(HTTPError, lambda: fetch_version(self.bad_url))
|
||||
self.assertRaises(URLError, lambda: fetch_version('https://bad'))
|
||||
self.assertRaises(ValueError, lambda: fetch_version('bad'))
|
||||
|
||||
def test_is_new_version_available__new_version_available(self):
|
||||
self.assertTrue(is_new_version_available('0.0.0', self.good_url, self.regex))
|
||||
self.assertTrue(is_new_version_available('0.48.0', self.good_url, self.regex))
|
||||
self.assertTrue(is_new_version_available('0.48.14', self.good_url, self.regex))
|
||||
self.assertTrue(is_new_version_available('5.48.14', self.good_url, self.regex))
|
||||
|
||||
def test_is_new_version_available__no_new_version_available(self):
|
||||
self.assertFalse(is_new_version_available('1.0.0', self.good_url, self.regex))
|
||||
|
||||
def test_is_new_version_available__bad_version(self):
|
||||
self.assertRaises(ValueError, lambda: is_new_version_available('1.0.0', self.bad_version, self.regex))
|
||||
def test_check_for_update__new_version(self):
|
||||
"""
|
||||
We check the availability of an update with softwares whose
|
||||
versions are different from the one indicated by the repository
|
||||
(thus available update).
|
||||
"""
|
||||
self.assertTrue(check_for_update('0.0.0', self.good_url, self.regex))
|
||||
self.assertTrue(check_for_update('0.48.0', self.good_url, self.regex))
|
||||
self.assertTrue(check_for_update('0.48.14', self.good_url, self.regex))
|
||||
self.assertTrue(check_for_update('5.48.14', self.good_url, self.regex))
|
||||
|
||||
def test_is_new_version_available__bad_url(self):
|
||||
self.assertRaises(HTTPError, lambda: is_new_version_available('1.0.0', self.bad_url, self.regex))
|
||||
|
||||
def test_check_for_update__no_new_version(self):
|
||||
"""
|
||||
We check the availability of an update with software that has the
|
||||
same version as the one on the repository (so no update available).
|
||||
"""
|
||||
self.assertFalse(check_for_update('1.0.0', self.good_url, self.regex))
|
||||
|
||||
|
||||
def test_check_for_update__bad_version(self):
|
||||
"""
|
||||
We check for the availability of an update with an incorrect version
|
||||
in the repository.
|
||||
"""
|
||||
self.assertRaises(ValueError, lambda: check_for_update(
|
||||
'1.0.0',
|
||||
'https://git.endmove.eu/EndMove/WebPicDownloader/src/commit/6b26b89c6901841faaa09154c185d202223492c2/app_version_file.txt',
|
||||
self.regex
|
||||
))
|
||||
|
||||
|
||||
def test_check_for_update__bad_url(self):
|
||||
"""
|
||||
We check the availability of an update with a bad repository url
|
||||
"""
|
||||
self.assertRaises(HTTPError, lambda: check_for_update('1.0.0', self.bad_url, self.regex))
|
||||
|
||||
Reference in New Issue
Block a user