def update_by_regex(self, new_regex): """ Assigns self.regex to new_regex. Throws NotMatchingRegexError if new_regex doesn't match self.line_text If needed, improves new_regex: new_regex = '^' + new_regex + '$' (regex must match whole line) Updates self.param_groups so that they correspond to new_regex groups """ if new_regex[-1] != '$': new_regex += '$' try: verify_regex(new_regex, self.line_text) except NotMatchingRegexError: self.param_groups = {} self.primary_key = [] else: groups = regex_groups(new_regex, self.line_text) default_converter = ConverterType.TO_STRING self.param_groups = dict( (key + 1, ParamGroup(groups[key], default_converter)) for key in six.moves.range(len(groups)) ) finally: self.regex = new_regex
def verify_regex_match(self, regex, line, wanted_groups=None): try: groups = regex_groups(regex, line) if wanted_groups is not None: assert groups == wanted_groups except NotMatchingRegexError as e: self.fail(e)
def verify_regex_match(self, regex, line, wanted_groups=None): try: groups = regex_groups(regex, line) if wanted_groups is not None: assert groups == wanted_groups except NotMatchingRegexError as e: self.fail(e)