source: tests/Python/AllActions/moltest.py@ 9928ece

Candidate_v1.7.0 stable
Last change on this file since 9928ece was d083cc, checked in by Frederik Heber <frederik.heber@…>, 21 months ago

Python3: Test/Python changed.

  • print -> print()
  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[6ca7b9]1#!/usr/bin/python
2#
3# gathers all Actions in pyMoleCuilder module and tests them with some default
4# values.
5#
6# date: Oct 5, 2011
7# author: Gregor Bollerhey
8
9import pyMoleCuilder as mol
[cbb32d]10import sys, re, subprocess
[6ca7b9]11
[f89b45]12# cmd given?
13if len(sys.argv) < 1:
14 sys.stderr.write("Usage: "+sys.argv[0]+" <cmd>\n")
15 sys.exit(255)
16
17cmd = sys.argv[1]
[6ca7b9]18
19# options.dat einlesen
20
21Defaults = {}
22
23with open('options.dat') as f:
24 for line in f:
25 if len(line) > 0 and line[0] != '#':
[61c364]26 try:
27 key, value = line.split('\t', 1)
28 except ValueError:
[d083cc]29 print("line needs two values, tab-separated: "+line)
[61c364]30 sys.exit(1)
[6ca7b9]31 value = value[1:-2] # quotes entfernen
32
33 Defaults[key] = value
34
35# aufrufen
36
37Allparams = []
38
39def ParseParameters(docstring):
40 result = []
[cd91bd]41 params = re.findall(r'\(str\)([-_a-zA-Z]*)', docstring)
[6ca7b9]42
43 for param in params:
44 if not param in Allparams:
45 Allparams.append(param)
46
47 if not param in Defaults:
[d083cc]48 print('Fehlender Defaultwert:', param)
[6ca7b9]49
50 # direkt substituieren, oder erst beim aufruf?
51 if param in Defaults:
52 param = Defaults[param]
53
54 result.append(param)
55
56 return result
57
[f89b45]58doc = eval('mol.%s.__doc__' % cmd)
59params = ParseParameters(doc)
60
[d083cc]61print('--BEGIN-- %s mit %s --------' % (cmd, params))
[cbb32d]62
[f89b45]63# write command to file
64output=open("test.py", "w")
[975b83]65output.write('import pyMoleCuilder as mol\nparams = %s\nmol.%s(*params)\nmol.wait()\n' % (params, cmd))
[f89b45]66output.close()
67# call python externally on this file and catch retcode
[d083cc]68p = subprocess.Popen(["python3", "test.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
[f89b45]69stdout, stderr = p.communicate()
[d083cc]70print(' --- STDOUT ---')
71print(' %s ' % (stdout))
72print(' --- STDERR ---')
73print(' %s ' % (stderr))
[f89b45]74retcode = p.returncode
75if retcode == 134 or retcode == 0:
[d083cc]76 print(' ---- ok ----')
[f89b45]77else:
[d083cc]78 print(' -- FAILED with %s --' % (retcode))
[f89b45]79# if retcode == 1:
80# sys.exit(1)
81#exec('mol.%s(*params)' % cmd)
82
[d083cc]83print('---END--- %s mit %s --------' % (cmd, params))
[cbb32d]84
85sys.exit(0)
Note: See TracBrowser for help on using the repository browser.