diff options
author | Michael DeHaan <michael.dehaan@gmail.com> | 2012-03-14 21:49:27 -0400 |
---|---|---|
committer | Michael DeHaan <michael.dehaan@gmail.com> | 2012-03-14 21:49:27 -0400 |
commit | a735dd2b17f4106348774de6d04c73f0f7d65c8e (patch) | |
tree | 96309e2a4314ec75c316af9b21c96db86a1fc868 /hacking | |
parent | 4bde4926c330094a0cd8b23928dfdc0e7959aa84 (diff) | |
download | ansible-a735dd2b17f4106348774de6d04c73f0f7d65c8e.tar.gz |
Added the 'test-module' script, useful for testing modules without running them in Ansible.
Diffstat (limited to 'hacking')
-rwxr-xr-x | hacking/test-module | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/hacking/test-module b/hacking/test-module new file mode 100755 index 0000000000..3fcd0071c9 --- /dev/null +++ b/hacking/test-module @@ -0,0 +1,78 @@ +#!/usr/bin/python + +# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com> +# +# This file is part of Ansible +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see <http://www.gnu.org/licenses/>. +# + +# this script is for testing modules without running through the +# entire guts of ansible, and is very helpful for when developing +# modules +# +# example: +# test-module ../library/command /bin/sleep 3 +# test-module ../library/service name=httpd ensure=restarted + +import sys +import os +import subprocess +import traceback +import ansible.utils + +try: + import json +except ImportError: + import simplejson as json + +modfile = None + +if len(sys.argv) == 1: + print >>sys.stderr, "usage: test-module ./library/command [key=value ...]" + sys.exit(1) + +modfile = sys.argv[1] +if len(sys.argv) > 1: + args = " ".join(sys.argv[2:]) +else: + args = "" + +argspath = os.path.expanduser("/.ansible_test_module_arguments") +argsfile = open(argspath, 'w') +argsfile.write(args) +argsfile.close() + +os.system("chmod +x %s" % modfile) +cmd = subprocess.Popen("%s %s" % (modfile, argspath), + shell=True, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) +(out, err) = cmd.communicate() + +try: + results = ansible.utils.parse_json(out) +except: + print "INVALID OUTPUT FORMAT" + print "*********************" + print out + print "*********************" + traceback.print_exc() + sys.exit(1) + +print results + +sys.exit(0) + + |