def test_semver(self): self.assertTrue(is_valid_verion("0.0.1")) self.assertTrue(is_valid_verion("1.1.1-beta")) self.assertTrue(is_valid_verion("1.1.1-beta+compile10")) self.assertFalse(is_valid_verion("1.0.1.0")) self.assertFalse(is_valid_verion("v2.19.10")) self.assertTrue(is_match_appversion()) self.assertTrue(is_match_appversion(VER)) self.assertFalse(is_match_appversion("<{}".format(VER))) self.assertFalse(is_match_appversion(">{}".format(VER))) self.assertTrue(is_match_appversion(">={}".format(VER))) self.assertTrue(is_match_appversion("<={}".format(VER))) self.assertTrue(is_match_appversion("=={}".format(VER))) self.assertFalse(is_match_appversion("!={}".format(VER)))
def __scan_third(self): if self.__third_hooks and isinstance(self.__third_hooks, list): for hn in self.__third_hooks: #: hn: the name of the hook module that can be imported if hn in modules: hm = modules[hn] if getattr(hm, '__mtime__', 0) < getmtime( self.__get_fileorparent(hm)): del modules[hn] try: ho = __import__(hn) except ImportError as e: logger.error(e, exc_info=True) continue if hasattr(ho, "__version__") and hasattr(ho, "__author__"): #: 语义化版本号 if not is_valid_verion(ho.__version__): warnings.warn("%s: irregular version number" % hn) continue #: 匹配扩展要求的应用版本 appversion = getattr(ho, "__appversion__", None) if not is_match_appversion(appversion): warnings.warn( "%s: app version number does not match for %s" % (hn, appversion)) continue ho.__mtime__ = getmtime(self.__get_fileorparent(ho)) ho.__family__ = "third" self.__hooks[hn] = self.__get_meta(ho)