From c81eb967d870a793985de2becfcad153970e03a0 Mon Sep 17 00:00:00 2001 From: Christoph Miksche Date: Sat, 20 Apr 2019 15:42:01 +0200 Subject: [PATCH] fix: add function to check the versions after semver Add a function to check the two versions after the semver specification. Added some unit tests for testing the function too. (Should fix GH-1, but wasn't fully tested yet) --- functions.py | 42 ++++++++++++++++++++++++++++++++++++++++++ tests.py | 19 +++++++++++++++++++ updater.py | 31 ++++--------------------------- 3 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 functions.py create mode 100644 tests.py diff --git a/functions.py b/functions.py new file mode 100644 index 0000000..c9f4a24 --- /dev/null +++ b/functions.py @@ -0,0 +1,42 @@ +import settings +import requests +import os + +# Function to download a file +def download(url, file_name): + # open in binary mode + with open(file_name, "wb") as file: + # get request + response = requests.get(url) + # write to file + file.write(response.content) + +# Function to build the new version from source +def buildFromSource(tag): + # Change to source dir + os.chdir(settings.source_dir) + # Checkout master + os.system("git checkout master") + # Update + os.system("git pull") + # Checkout relase branch + os.system("git checkout "+tag) + # Build from source + os.system('TAGS="bindata sqlite sqlite_unlock_notify" make generate build') + # Move binary + os.system("mv gitea "+settings.gtfile) + +# Function to create a list from a version string +def getVersionList(string): + return list(map(int, string.split('.'))) + +# Function to check if there is a new version +def checkVersion(new_version, old_version): + new_version_list = getVersionList(new_version) + old_version_list = getVersionList(old_version) + + for id, val in enumerate(new_version_list): + if val > old_version_list[id]: + return True + + return None \ No newline at end of file diff --git a/tests.py b/tests.py new file mode 100644 index 0000000..8f92cb7 --- /dev/null +++ b/tests.py @@ -0,0 +1,19 @@ +import functions +import unittest + +class Tests(unittest.TestCase): + + def checkSimpleVersion(self): + self.assertTrue(functions.checkVersion('1.9.1', '1.9.0')) + + def checkTwoIntVersion(self): + self.assertTrue(functions.checkVersion('1.10.0', '1.9.0')) + + def checkFalseVersion(self): + self.assertFalse(functions.checkVersion('1.8.0', '1.9.0')) + + def checkSameVersion(self): + self.assertFalse(functions.checkVersion('1.9.7', '1.9.7')) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/updater.py b/updater.py index f0e95a3..c26565e 100644 --- a/updater.py +++ b/updater.py @@ -9,30 +9,7 @@ License: GNU General Public License import settings import requests import os - -# Function to download a file -def download(url, file_name): - # open in binary mode - with open(file_name, "wb") as file: - # get request - response = requests.get(url) - # write to file - file.write(response.content) - -# Function to build the new version from source -def buildFromSource(tag): - # Change to source dir - os.chdir(settings.source_dir) - # Checkout master - os.system("git checkout master") - # Update - os.system("git pull") - # Checkout relase branch - os.system("git checkout "+tag) - # Build from source - os.system('TAGS="bindata sqlite sqlite_unlock_notify" make generate build') - # Move binary - os.system("mv gitea "+settings.gtfile) +import functions # Version from gitea site current_version = requests.get(settings.gtsite).json()['version'] @@ -44,7 +21,7 @@ github_version_tag = requests.get(settings.gtgithubapiurl).json()['tag_name'] github_version = github_version_tag[1:] # Check if there is a new version -if github_version > current_version: +if functions.checkVersion(github_version, current_version): # Stop systemd service os.system("systemctl stop gitea.service") @@ -52,7 +29,7 @@ if github_version > current_version: # Should the new version be build from source? if settings.build_from_source: - buildFromSource(github_version_tag) + functions.buildFromSource(github_version_tag) else: @@ -60,7 +37,7 @@ if github_version > current_version: gtdownload = 'https://github.com/go-gitea/gitea/releases/download/'+github_version_tag+'/gitea-'+github_version+'-'+settings.gtsystem # Download file - download(gtdownload, settings.gtfile) + functions.download(gtdownload, settings.gtfile) # Start systemd service os.system("systemctl start gitea.service")