예제 #1
0
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_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_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_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_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')
예제 #9
0
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_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_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_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_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_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_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)
예제 #21
0
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_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
예제 #29
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
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