From adc6ba89ecc4cfaf3734405201fecfae93e91cdd Mon Sep 17 00:00:00 2001 From: anonymous <anonymous> Date: Thu, 6 Jun 2019 12:02:24 +0200 Subject: [PATCH] add version check --- ckanext/odsh/helpers.py | 7 +++++++ ckanext/odsh/plugin.py | 3 ++- .../odsh/templates/qv4yAI2rgotamXGk98gJ.html | 1 + ckanext/odsh/tests/test_env.py | 21 +++++++++++++++---- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 ckanext/odsh/templates/qv4yAI2rgotamXGk98gJ.html diff --git a/ckanext/odsh/helpers.py b/ckanext/odsh/helpers.py index 60fccc73..9927ec0c 100644 --- a/ckanext/odsh/helpers.py +++ b/ckanext/odsh/helpers.py @@ -14,6 +14,7 @@ import hashlib import re from ckan.common import request from urlparse import urlsplit, urlunsplit +import subprocess get_action = logic.get_action @@ -225,3 +226,9 @@ def odsh_public_resource_url(res): return urlunsplit((0, 0, f[2], f[3], f[4])) else: return res['url'] + +def odsh_get_version_id(): + try: + return subprocess.check_output(["git", "rev-parse", "HEAD"]).strip() + except: + return 'unknown' diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index d798c617..be9f8f7f 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -290,7 +290,8 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm 'odsh_tracking_url': odsh_helpers.odsh_tracking_url, 'odsh_has_more_facets': odsh_helpers.odsh_has_more_facets, 'odsh_public_url': odsh_helpers.odsh_public_url, - 'odsh_public_resource_url': odsh_helpers.odsh_public_resource_url + 'odsh_public_resource_url': odsh_helpers.odsh_public_resource_url, + 'odsh_get_version_id': odsh_helpers.odsh_get_version_id } def after_map(self, map): diff --git a/ckanext/odsh/templates/qv4yAI2rgotamXGk98gJ.html b/ckanext/odsh/templates/qv4yAI2rgotamXGk98gJ.html new file mode 100644 index 00000000..2ba851cb --- /dev/null +++ b/ckanext/odsh/templates/qv4yAI2rgotamXGk98gJ.html @@ -0,0 +1 @@ +{{ h.odsh_get_version_id()}} \ No newline at end of file diff --git a/ckanext/odsh/tests/test_env.py b/ckanext/odsh/tests/test_env.py index bc4025eb..47d797c2 100644 --- a/ckanext/odsh/tests/test_env.py +++ b/ckanext/odsh/tests/test_env.py @@ -9,6 +9,8 @@ import sys import ConfigParser from collections import OrderedDict +expected_commit = '5298c6f4b86b1a03fbf177974e3ab4eefb1b1192' + # run with nosetests --ckan --nologcapture --with-pylons=<config to test> ckanext/odsh/tests/test_env.py @@ -23,12 +25,16 @@ def checkConfig(key, expected=None, minLength=None): return value -def checkConfigUrl(key, expectedKey=None, responseContains=None): - value = checkConfig(key, expected=expectedKey) - +def readUrl(value): req = urllib2.Request(value) response = urllib2.urlopen(req) data = response.read() + return data + + +def checkConfigUrl(key, expectedKey=None, responseContains=None): + value = checkConfig(key, expected=expectedKey) + data = readUrl(value) if responseContains: assert responseContains in data @@ -45,7 +51,7 @@ def checkConfigFile(key, expectedKey=None, responseContains=None): def checkConfigDir(key, expectedKey=None): value = checkConfig(key, expected=expectedKey) assert os.access(value.replace('file://', ''), - os.W_OK), "expected '{key}={val}' to be writeable (user was '{user}')".format(key=key,val=value, user=os.getlogin()) + os.W_OK), "expected '{key}={val}' to be writeable (user was '{user}')".format(key=key, val=value, user=os.getlogin()) def checkJsonFile(key, expectedKey=None, expectedLength=None): @@ -156,3 +162,10 @@ class TestEnv: checkConfig('ckanext.odsh.matomo_id', expected='3') checkConfigUrl('ckanext.odsh.matomo_url', responseContains='This resource is part of Matomo') + + def test_version(self): + url = checkConfig('ckan.site_url') + if url[-1] == '/': + url = url[:-1] + version = readUrl(url+'/qv4yAI2rgotamXGk98gJ').strip() + assert version == expected_commit, "wrong version: {was}!={exp}".format(version, expected_commit) -- GitLab