diff --git a/modules/bindings/pymod/msms.py b/modules/bindings/pymod/msms.py index 893e6c4b509c2faa88b88037ef55dc0282c0eb88..1d260de4b1aa41335c75a762924fb6888fca1bd9 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 5720372c050568f6097f6f55087c159ec2b34f17..054a63cffa472d01fbef5d5cd20289cd0a409fb6 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: