Source code for tests.test_update_checker

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
TEST_UPDATE_CHECKER: tests update_checker.py
"""

__author__ = "Zenaro Stefano"
__version__ = "2021-01-08 1.0.0"

import os
import sys
import unittest

# import update_checker.py from the ../bettersis folder
curr_dir = os.path.realpath(os.path.dirname(__file__))
bettersis_path = os.path.join(curr_dir, "..", "bettersis")
sys.path.insert(1, os.path.realpath(bettersis_path))
import update_checker
import _version


[docs]class TestUpdateChecker(unittest.TestCase): """ Tests update_checker.py """
[docs] def test_extract_version(self): """ Tests extract_version() function: extracts the version numbers from a string. """ ver_data = update_checker.extract_version("") self.assertFalse(ver_data["success"], "empty string doesn't contain a correct version") self.assertIsNone(ver_data["major_version"]) self.assertIsNone(ver_data["minor_version"]) self.assertIsNone(ver_data["patch_version"]) ver_data = update_checker.extract_version(".") self.assertFalse(ver_data["success"], "one dot is not a correct version") self.assertIsNone(ver_data["major_version"]) self.assertIsNone(ver_data["minor_version"]) self.assertIsNone(ver_data["patch_version"]) ver_data = update_checker.extract_version("..") self.assertFalse(ver_data["success"], "the string '..' doesn't contain version numbers") self.assertIsNone(ver_data["major_version"]) self.assertIsNone(ver_data["minor_version"]) self.assertIsNone(ver_data["patch_version"]) ver_data = update_checker.extract_version("a.b.c") self.assertFalse(ver_data["success"], "the string 'a.b.c' doesn't contain version numbers") self.assertIsNone(ver_data["major_version"]) self.assertIsNone(ver_data["minor_version"]) self.assertIsNone(ver_data["patch_version"]) ver_data = update_checker.extract_version("1.c.0") self.assertFalse(ver_data["success"], "the string '1.c.0' doesn't contain version numbers") self.assertIsNone(ver_data["major_version"]) self.assertIsNone(ver_data["minor_version"]) self.assertIsNone(ver_data["patch_version"]) ver_data = update_checker.extract_version("-1.4.3") self.assertFalse(ver_data["success"], "the string '-1.4.3' doesn't contain version " "numbers (negative numbers are not allowed)") self.assertIsNone(ver_data["major_version"]) self.assertIsNone(ver_data["minor_version"]) self.assertIsNone(ver_data["patch_version"]) ver_data = update_checker.extract_version("1.2.3") self.assertTrue(ver_data["success"], "the string '1.2.3' is a correct version") self.assertEqual(ver_data["major_version"], 1) self.assertEqual(ver_data["minor_version"], 2) self.assertEqual(ver_data["patch_version"], 3)
[docs] def test_check_updates(self): """ Tests check_updates() function: tells if an update is available and, if so, which version is the latest version. """ cu_data = update_checker.check_updates("https://api.github.com/repos/mario33881/bettersis/releases", "0.0.0") self.assertTrue(cu_data["success"], "check was successfull") self.assertTrue(cu_data["update_available"], "a new version should be available") cu_data = update_checker.check_updates("https://api.github.com/repos/mario33881/bettersis/releases", "9999.9999.9999") self.assertTrue(cu_data["success"], "check was successfull") self.assertFalse(cu_data["update_available"], "a new version should not be not available") current_version = _version.__version__.split(" ")[1] cu_data = update_checker.check_updates("https://api.github.com/repos/mario33881/bettersis/releases", current_version) self.assertTrue(cu_data["success"], "check was successfull") self.assertFalse(cu_data["update_available"], "this should be the latest version")
if __name__ == "__main__": unittest.main()