robotframework-2.7.7.atest.robot.libdoc.LibDocLib.py Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of robotframework Show documentation
Show all versions of robotframework Show documentation
High level test automation framework
The newest version!
import json
import os
import pprint
import tempfile
from os.path import join, dirname, abspath
from subprocess import call, STDOUT
from robot.api import logger
from robot.utils import decode_output
ROBOT_SRC = join(dirname(abspath(__file__)), '..', '..', '..', 'src')
class LibDocLib(object):
def __init__(self, interpreter):
self._interpreter = interpreter
self._cmd = [interpreter, '-m', 'robot.libdoc']
def run_libdoc(self, args):
cmd = self._cmd + [a for a in args.split(' ') if a]
cmd[-1] = cmd[-1].replace('/', os.sep)
logger.info(' '.join(cmd))
stdout = tempfile.TemporaryFile()
call(cmd, cwd=ROBOT_SRC, stdout=stdout, stderr=STDOUT, shell=os.sep=='\\')
stdout.seek(0)
output = stdout.read().replace('\r\n', '\n')
logger.info(output)
return decode_output(output)
def get_libdoc_model_from_html(self, path):
with open(path) as html_file:
model_string = self._find_model(html_file)
model = json.loads(model_string)
logger.info(pprint.pformat(model))
return model
def _find_model(self, html_file):
for line in html_file:
if line.startswith('libdoc = '):
return line.split('=', 1)[1].strip(' \n;')
raise RuntimeError('No model found from HTML')