def __init__(self, updateInfo): """Constructor. @param updateInfo: update information such as possible URLs, version and the SHA-1 hash of the file as a hex string. @type updateInfo: dict """ from addonAPIVersion import getAPIVersionTupleFromString self.updateInfo = updateInfo self.urls = updateInfo["launcherUrl"].split(" ") self.version = updateInfo["version"] self.apiVersion = getAPIVersionTupleFromString(updateInfo["apiVersion"]) self.backCompatToAPIVersion = getAPIVersionTupleFromString(updateInfo["apiCompatTo"]) self.versionTuple = None self.fileHash = updateInfo.get("launcherHash") self.destPath = tempfile.mktemp(prefix="nvda_update_", suffix=".exe")
def test_getAPIVersionTupleFromString_succeeds(self): """Tests trying to get the API version tuple from an API version string with one matching group results in an error being raised """ self.assertEqual( (2019, 1, 0), addonAPIVersion.getAPIVersionTupleFromString("2019.1.0"))
def test_getAPIVersionTupleFromString_2_succeeds(self): """Tests trying to get the API version tuple from an API version where the Minor part is omitted and therefore defaults to 0. This will succeed. """ self.assertEqual( (2019, 1, 0), addonAPIVersion.getAPIVersionTupleFromString("2019.1"))
def test_getAPIVersionTupleFromString_3_succeeds(self): """Tests trying to get the API version tuple from an API version string with a standard version layout will succeed. """ self.assertEqual( (2019, 1, 0), addonAPIVersion.getAPIVersionTupleFromString("2019.1.0"))
def validate_apiVersionString(value): from configobj.validate import ValidateError if not isinstance(value, string_types): raise ValidateError('Expected an apiVersion in the form of a string. EG "2019.1.0"') try: tuple = addonAPIVersion.getAPIVersionTupleFromString(value) return tuple except ValueError as e: raise ValidateError('"{}" is not a valid API Version string: {}'.format(value, e))
def checkForNewUpdate(self, addonUpdateInfos): curVersion = self.normalizeVersion(self.addon.manifest["version"]) (curReleaseID, curBuildID) = curVersion channel = "dev" if curBuildID is not None else "release" releaseVersion = addonUpdateInfos["release"].get("version") devVersion = addonUpdateInfos["dev"].get("version") isOldestThanReleaseVersion = self.isOldestVersion( curVersion, self.normalizeVersion(releaseVersion)) isOldestThanDevVersion = self.isOldestVersion( curVersion, self.normalizeVersion(devVersion)) if channel == "dev" and not self.releaseToDev: # update from dev version to stable version updateChannel = "release" latestVersion = releaseVersion elif isOldestThanReleaseVersion: updateChannel = "release" latestVersion = releaseVersion elif isOldestThanDevVersion: if channel == "release" and not self.releaseToDev: return None updateChannel = "dev" latestVersion = devVersion else: return None if updateChannel == "release": url = addonUpdateInfos["localURL"] self.releaseNoteURL = self.getreleaseNoteURL() else: url = "{url}/{channel}".format(channel=updateChannel, url=addonUpdateInfos["localURL"]) self.releaseNoteURL = None minimumVersion = addonUpdateInfos[updateChannel].get( "minimumNVDAVersion", None) minimumNVDAVersion = addonAPIVersion.getAPIVersionTupleFromString( minimumVersion) if minimumVersion is not None else None lastTestedVersion = addonUpdateInfos[updateChannel].get( "lastTestedNVDAVersion", None) lastTestedNVDAVersion = addonAPIVersion.getAPIVersionTupleFromString( lastTestedVersion) if lastTestedVersion is not None else None return (latestVersion, url, minimumNVDAVersion, lastTestedNVDAVersion)
def test_getAPIVersionTupleFromString_2_succeeds(self): """Tests trying to get the API version tuple from an API version where the Minor part is omitted and therefore defaults to 0. This will succeed. """ self.assertEqual((2019, 1, 0), addonAPIVersion.getAPIVersionTupleFromString("2019.1"))
def test_getAPIVersionTupleFromString_3_succeeds(self): """Tests trying to get the API version tuple from an API version string with a standard version layout will succeed. """ self.assertEqual((2019, 1, 0), addonAPIVersion.getAPIVersionTupleFromString("2019.1.0"))
def test_getAPIVersionTupleFromString_allZeros_succeeds(self): """Tests trying to get the API version tuple from an API version string that is all zeros. This is used as the FIRST api version. """ self.assertEqual((0, 0, 0), addonAPIVersion.getAPIVersionTupleFromString("0.0.0"))
def test_getAPIVersionTupleFromString_succeeds(self): """Tests trying to get the API version tuple from an API version string with one matching group results in an error being raised """ self.assertEqual((2019, 1, 0), addonAPIVersion.getAPIVersionTupleFromString("2019.1.0"))