From 6424dafeffac7d56d4b342d1bc331bcd2d5bdae6 Mon Sep 17 00:00:00 2001 From: Tobias Schmidt <tobias.schmidt@unibas.ch> Date: Fri, 22 Oct 2010 17:09:14 +0200 Subject: [PATCH] added version check for msms unit test, fixes BZDNG-176 --- modules/bindings/pymod/msms.py | 17 ++++++++++++++++- modules/bindings/tests/test_msms.py | 4 ++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/bindings/pymod/msms.py b/modules/bindings/pymod/msms.py index 893e6c4b5..1d260de4b 100644 --- a/modules/bindings/pymod/msms.py +++ b/modules/bindings/pymod/msms.py @@ -38,6 +38,21 @@ class MsmsProcessError(Exception): return repr(self.returncode) +def GetVersion(msms_exe=None, msms_env=None): + msms_executable = _GetExecutable(msms_exe, msms_env) + command = "%s" % (msms_executable) + proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE) + stdout_value, stderr_value = proc.communicate() + + version = "" + for l in stdout_value.splitlines(): + if l[0:4]=='MSMS': + version = l.split(' ')[1] + return version + if version=="": + LogWarning('Could not parse MSMS version string') + return + ## \brief Method to check if MSMS executable is present # # \param msms_exe Explicit path to msms executable @@ -120,7 +135,7 @@ def _RunMSMS(command): #check for successful completion of msms if proc.returncode!=0: print "WARNING: msms error\n", stdout_value - raise subprocess.MsmsProcessError(proc.returncode, command) + raise MsmsProcessError(proc.returncode, command) return stdout_value diff --git a/modules/bindings/tests/test_msms.py b/modules/bindings/tests/test_msms.py index 5720372c0..054a63cff 100755 --- a/modules/bindings/tests/test_msms.py +++ b/modules/bindings/tests/test_msms.py @@ -33,11 +33,15 @@ class TestMSMSBindings(unittest.TestCase): if __name__ == "__main__": # test if msms package is available on system, otherwise ignore tests + VERSION_REQUIRED = '2.6.1' try: msms._GetExecutable(msms_exe=None, msms_env='MSMSSERVER') except(settings.FileNotFound): print "Could not find msms executable: ignoring unit tests" exit(0) + version = msms.GetVersion(msms_exe=None, msms_env='MSMSSERVER') + if version!=VERSION_REQUIRED: + print "MSMS version (%s) does not match required version %s: ignoring unit tests"%(version, VERSION_REQUIRED) try: unittest.main() except Exception, e: -- GitLab