Exemplo n.º 1
0
    def parse_examples(self, json_element):
        """
        e = {
            'keyword': examples.keyword,
            'name': examples.name,
            'location': examples.location,
        }

        if examples.table:
            e['table'] = self.make_table(examples.table)

        element = self.current_feature_element
        element['examples'].append(e)
        """
        keyword = json_element.get("keyword", u"")
        name    = json_element.get("name", u"")
        location = json_element.get("location", u"")

        table = None
        json_table = json_element.get("table", None)
        if json_table:
            table = self.parse_table(json_table)
        filename, line = location.split(":")
        examples = model.Examples(filename, line, keyword, name, table)
        return examples
Exemplo n.º 2
0
    def action_steps(self, line):
        stripped = line.lstrip()
        if stripped.startswith('"""') or stripped.startswith("'''"):
            self.state = 'multiline'
            self.multiline_start = self.line
            self.multiline_terminator = stripped[:3]
            self.multiline_leading = line.index(stripped[0])
            return True

        line = line.strip()

        step = self.parse_step(line)
        if step:
            self.statement.steps.append(step)
            return True

        if line.startswith('@'):
            self.tags.extend([model.Tag(tag.strip(), self.line)
                for tag in line[1:].split('@')])
            return True

        scenario_kwd = self.match_keyword('scenario', line)
        if scenario_kwd:
            name = line[len(scenario_kwd) + 1:].strip()
            self.statement = model.Scenario(self.filename, self.line,
                                            scenario_kwd, name, tags=self.tags)
            self.tags = []
            self.feature.add_scenario(self.statement)
            return True

        scenario_outline_kwd = self.match_keyword('scenario_outline', line)
        if scenario_outline_kwd:
            name = line[len(scenario_outline_kwd) + 1:].strip()
            self.statement = model.ScenarioOutline(self.filename, self.line,
                                                   scenario_outline_kwd, name,
                                                   tags=self.tags)
            self.tags = []
            self.feature.add_scenario(self.statement)
            self.state = 'steps'
            return True

        examples_kwd = self.match_keyword('examples', line)
        if examples_kwd:
            if not isinstance(self.statement, model.ScenarioOutline):
                message = 'Examples must only appear inside scenario outline'
                raise ParserError(message, self.line)
            name = line[len(examples_kwd) + 1:].strip()
            self.examples = model.Examples(self.filename, self.line,
                                           examples_kwd, name)
            self.statement.examples.append(self.examples)
            self.state = 'table'
            return True

        if line.startswith('|'):
            self.state = 'table'
            return self.action_table(line)

        return False
Exemplo n.º 3
0
 def _build_examples(self, keyword, line):
     if not isinstance(self.statement, model.ScenarioOutline):
         message = 'Examples must only appear inside scenario outline'
         raise ParserError(message, self.line, self.filename, line)
     name = line[len(keyword) + 1:].strip()
     self.examples = model.Examples(self.filename, self.line, keyword, name)
     # pylint: disable=E1103
     #   E1103   Instance of 'Background' has no 'examples' member
     #           (but some types could not be inferred).
     self.statement.examples.append(self.examples)
Exemplo n.º 4
0
    def _build_examples_from_file(self, keyword, line):
        fn = line[len(keyword) + 1:].strip()
        with open(fn) as f:
            payload = json.load(f)
            headings = payload.get("headings", [])
            rows = payload.get("rows", [])
            table = model.Table(headings, rows=rows)

        self.examples = model.Examples(self.filename,
                                       self.line,
                                       keyword,
                                       name=fn,
                                       tags=self.tags)
        self.examples.table = table
        self.statement.examples.append(self.examples)
        self.tags = []