def test_no_pattern_at_all(argparse_args): try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted when no pattern specified')
def test_delim_other_char(argparse_args, fixt_printable): if fixt_printable in '(){}[]<>': return pattern1 = 'a' if fixt_printable != 'a' else 'q' replacement1 = 'b' if fixt_printable != 'b' else 'w' argparse_args.pattern_and_replace = 's' + fixt_printable + pattern1 + fixt_printable + replacement1 + fixt_printable + 'gsx' pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == pattern1 assert pat.flags == re.UNICODE | re.DOTALL | re.VERBOSE assert rep == replacement1 assert cnt == 0 argparse_args.pattern_and_replace = 's' + fixt_printable + pattern1 + fixt_printable + replacement1 + fixt_printable pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == pattern1 assert pat.flags == re.UNICODE assert rep == replacement1 assert cnt == 1
def test_delim_in_pattern(argparse_args): argparse_args.pattern_and_replace = 's!a!b!c!' try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted for pattern: ' + argparse_args.pattern_and_replace)
def test_no_replace_specified(argparse_args): argparse_args.pattern = 's' try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted when no replace specified')
def test_no_s_prefix(argparse_args): argparse_args.pattern_and_replace = '/a/b/' try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted when "s" prefix is missing')
def test_invalid_braces(argparse_args, fixt_opening_brace): argparse_args.pattern_and_replace = 's' + fixt_opening_brace + 'a' + fixt_opening_brace + 'b' + fixt_opening_brace + 'gsx' try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted for ' + argparse_args.pattern_and_replace) argparse_args.pattern_and_replace = 's' + fixt_opening_brace + 'a' + fixt_opening_brace + 'b' + fixt_opening_brace try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted for ' + argparse_args.pattern_and_replace)
def test_delim_sharp_brackets(argparse_args): argparse_args.pattern_and_replace = 's<a><b>gsx' pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' assert pat.flags == re.UNICODE | re.DOTALL | re.VERBOSE assert rep == 'b' assert cnt == 0 argparse_args.pattern_and_replace = 's<a><b>' pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' assert pat.flags == re.UNICODE assert rep == 'b' assert cnt == 1
def test_with_single_flag(argparse_args, fixt_single_flag): argparse_args.pattern_and_replace = 's/a/b/' + fixt_single_flag pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' assert pat.flags == re.UNICODE | _re_flag(fixt_single_flag) assert rep == 'b' assert cnt == 1
def test_with_single_flag_and_g_flag(argparse_args, fixt_single_flag): argparse_args.pattern_and_replace = 's/a/b/g' + fixt_single_flag pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' assert pat.flags == re.UNICODE | _re_flag(fixt_single_flag) assert rep == 'b' assert cnt == 0
def test_no_flags(argparse_args): argparse_args.pattern_and_replace = 's/a/b/' pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' assert pat.flags == re.UNICODE assert rep == 'b' assert cnt == 1
def test_with_no_flags(argparse_args): argparse_args.pattern = 'a.b' argparse_args.replace = 'c' pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == r'a.b' assert pat.flags == re.UNICODE assert rep == 'c' assert cnt == 0
def test_with_count_with_g_flag(argparse_args): argparse_args.pattern_and_replace = 's/a/b/g' argparse_args.count = 3 pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' assert pat.flags == re.UNICODE assert rep == 'b' assert cnt == 0
def test_unknown_flag(argparse_args, fixt_printable): if fixt_printable in 'gixsm': return argparse_args.pattern_and_replace = 's/a/b/' + fixt_printable try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted for invalid flag: ' + fixt_printable) argparse_args.pattern_and_replace = 's/a/b/gxs' + fixt_printable try: subst._parse_args__pattern(argparse_args) except subst.ParserException: pass else: pytest.fail('ParserException excepted for invalid flag: ' + fixt_printable)
def test_with_all_flags_and_g_flag(argparse_args, fixt_all_flags): argparse_args.pattern_and_replace = 's/a/b/g' + fixt_all_flags pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' expected_flags = re.UNICODE for flag in fixt_all_flags: expected_flags |= _re_flag(flag) assert pat.flags == expected_flags assert rep == 'b' assert cnt == 0
def test_no_flags_with_flags_in_params(argparse_args, param): argparse_args.pattern_and_replace = 's/a/b/' setattr(argparse_args, param, True) pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' param_flag = dict(ignore_case=re.IGNORECASE, pattern_dot_all=re.DOTALL, pattern_verbose=re.VERBOSE, pattern_multiline=re.MULTILINE)[param] assert pat.flags == re.UNICODE | param_flag assert rep == 'b' assert cnt == 1
def test_no_flags_with_flags_in_params(argparse_args, param): argparse_args.pattern_and_replace = 's/a/b/' setattr(argparse_args, param, True) pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' param_flag = dict( ignore_case=re.IGNORECASE, pattern_dot_all=re.DOTALL, pattern_verbose=re.VERBOSE, pattern_multiline=re.MULTILINE )[param] assert pat.flags == re.UNICODE | param_flag assert rep == 'b' assert cnt == 1
def test_with_params_flags(argparse_args, param1, param2): argparse_args.pattern = 'a' argparse_args.replace = 'b' setattr(argparse_args, param1, True) setattr(argparse_args, param2, True) pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' params_mapper = dict(ignore_case=re.IGNORECASE, pattern_dot_all=re.DOTALL, pattern_verbose=re.VERBOSE, pattern_multiline=re.MULTILINE) param1_flag = params_mapper[param1] param2_flag = params_mapper[param2] assert pat.flags == re.UNICODE | param1_flag | param2_flag assert rep == 'b' assert cnt == 0
def test_with_params_flags(argparse_args, param1, param2): argparse_args.pattern = 'a' argparse_args.replace = 'b' setattr(argparse_args, param1, True) setattr(argparse_args, param2, True) pat, rep, cnt = subst._parse_args__pattern(argparse_args) assert isinstance(pat, RE_TYPE) assert pat.pattern == 'a' params_mapper = dict( ignore_case=re.IGNORECASE, pattern_dot_all=re.DOTALL, pattern_verbose=re.VERBOSE, pattern_multiline=re.MULTILINE ) param1_flag = params_mapper[param1] param2_flag = params_mapper[param2] assert pat.flags == re.UNICODE | param1_flag | param2_flag assert rep == 'b' assert cnt == 0