mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
test-module uses optparse with --debugger
Refactored hacking/test-module 1. uses optparse 2. has --debugger option tested only with pdb on Python 2.7
This commit is contained in:
parent
ade0233d57
commit
e8583833a7
1 changed files with 19 additions and 11 deletions
|
@ -47,14 +47,14 @@ def parse():
|
||||||
|
|
||||||
parser.usage = "%prog [options] (-h for help)"
|
parser.usage = "%prog [options] (-h for help)"
|
||||||
|
|
||||||
parser.add_option('-m', '--module-name', dest='module_name',
|
parser.add_option('-m', '--module-path', dest='module_path',
|
||||||
help="module name to execute")
|
help="path of module to execute")
|
||||||
parser.add_option('-a', '--args', dest='module_args', default="",
|
parser.add_option('-a', '--args', dest='module_args', default="",
|
||||||
help="module arguments")
|
help="module arguments")
|
||||||
parser.add_option('-D', '--debugger', dest='debugger',
|
parser.add_option('-D', '--debugger', dest='debugger',
|
||||||
help="path to python debugger (e.g. /usr/bin/pdb)")
|
help="path to python debugger (e.g. /usr/bin/pdb)")
|
||||||
options, args = parser.parse_args()
|
options, args = parser.parse_args()
|
||||||
if not options.module_name:
|
if not options.module_path:
|
||||||
parser.print_help()
|
parser.print_help()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
|
@ -90,14 +90,8 @@ def boilerplate_module( modfile):
|
||||||
print "* module boilerplate substitution not requested in module, line numbers will be unaltered"
|
print "* module boilerplate substitution not requested in module, line numbers will be unaltered"
|
||||||
return modfile
|
return modfile
|
||||||
|
|
||||||
def main():
|
def runtest( modfile, argspath):
|
||||||
options, args = parse()
|
"""Test run a module, piping it's output for reporting."""
|
||||||
|
|
||||||
argspath = write_argsfile( options.module_args)
|
|
||||||
modfile = boilerplate_module( options.module_name)
|
|
||||||
print argspath, modfile
|
|
||||||
sys.exit(0)
|
|
||||||
#===== run or debug the module
|
|
||||||
os.system("chmod +x %s" % modfile)
|
os.system("chmod +x %s" % modfile)
|
||||||
cmd = subprocess.Popen("%s %s" % (modfile, argspath),
|
cmd = subprocess.Popen("%s %s" % (modfile, argspath),
|
||||||
shell=True,
|
shell=True,
|
||||||
|
@ -124,6 +118,20 @@ def main():
|
||||||
|
|
||||||
print utils.jsonify(results,format=True)
|
print utils.jsonify(results,format=True)
|
||||||
|
|
||||||
|
def rundebug(debugger, modfile, argspath):
|
||||||
|
"""Run interactively with console debugger."""
|
||||||
|
subprocess.call( "%s %s %s" % (debugger, modfile, argspath), shell=True)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
options, args = parse()
|
||||||
|
|
||||||
|
argspath = write_argsfile( options.module_args)
|
||||||
|
modfile = boilerplate_module( options.module_path)
|
||||||
|
|
||||||
|
if options.debugger:
|
||||||
|
rundebug( options.debugger, modfile, argspath)
|
||||||
|
else:
|
||||||
|
runtest( modfile, argspath)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Reference in a new issue