17 from ast
import NodeVisitor
21 from robot.parsing import get_model, get_resource_model, get_init_model, Token
24 from .settings
import Defaults
25 from .transformers
import SuiteBuilder, SettingsBuilder, ResourceBuilder
26 from ..model
import TestSuite, ResourceFile
32 raise NotImplementedError
35 raise NotImplementedError
38 raise NotImplementedError
43 def __init__(self, lang=None, process_curdir=True):
48 directory = os.path.dirname(source)
50 return self.
_build_build(suite, source, defaults, get_model=get_init_model)
54 return self.
_build_build(suite, source, defaults)
59 return self.
_build_build(suite, source, defaults, model)
61 def _build(self, suite, source, defaults, model=None, get_model=get_model):
76 return os.path.dirname(source).replace(
'\\',
'\\\\')
92 tasks = [s.tasks
for s
in data.sections
if hasattr(s,
'tasks')]
93 if all(tasks)
or not any(tasks):
94 return tasks[0]
if tasks
else None
95 raise DataError(
'One file cannot have both tests and tasks.')
101 with FileReader(source)
as reader:
112 def strip_possible_prefix_from_name(name):
113 result = name.split(
'__', 1)[-1]
119 name = strip_possible_prefix_from_name(name)
120 name = name.replace(
'_',
' ').strip()
121 return name.title()
if name.islower()
else name
125 if os.path.isdir(source):
126 basename = os.path.basename(source)
128 basename = os.path.splitext(os.path.basename(source))[0]
138 fatal = node.get_token(Token.FATAL_ERROR)
141 for error
in node.get_tokens(Token.ERROR):
145 return f
"Error in file '{self.source}' on line {token.lineno}: {token.error}"
def parse_suite_file(self, source, defaults=None)
def parse_resource_file(self, source)
def parse_init_file(self, source, defaults=None)
def _format_message(self, token)
def __init__(self, source)
def visit_Error(self, node)
def parse_init_file(self, source, defaults=None)
def _get_source(self, source)
def __init__(self, lang=None, process_curdir=True)
def parse_init_file(self, source, defaults=None)
def parse_suite_file(self, source, defaults=None)
def parse_resource_file(self, source)
def _get_rpa_mode(self, data)
def _get_curdir(self, source)
def _build(self, suite, source, defaults, model=None, get_model=get_model)
def _get_source(self, source)
def build_suite(self, model, name=None, defaults=None)
Represents a single executable test suite.
def get_model(source, data_only=False, curdir=None, lang=None)
Parses the given source to a model represented as an AST.
def get_resource_model(source, data_only=False, curdir=None, lang=None)
Parses the given source to a resource file model.
def read_rest_data(rstfile)