コード例 #1
0
def test_explicit_raw_string(
    parse_tokens,
    assert_errors,
    default_options,
    code,
):
    """Ensures that implicit raw strings raise a warning."""
    file_tokens = parse_tokens(code)

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [])
コード例 #2
0
def test_necessary_raw_string(
    parse_tokens,
    assert_errors,
    default_options,
    raw_strings,
):
    """Ensures that correct usage of raw string works."""
    file_tokens = parse_tokens(raw_strings)

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [])
コード例 #3
0
def test_unnecessary_raw_string(
    parse_tokens,
    assert_errors,
    default_options,
    raw_strings,
):
    """Ensures that usage of raw string is forbidden if no backslash."""
    file_tokens = parse_tokens(raw_strings)

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [RawStringNotNeededViolation])
コード例 #4
0
def test_correct_unicode_string_escape(
    parse_tokens,
    assert_errors,
    default_options,
    code,
):
    """Ensures that correct unicode escape does not raise a warning."""
    file_tokens = parse_tokens(code, do_compile=False)

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [UnicodeStringViolation])
コード例 #5
0
def test_wrong_unicode_escape(
    parse_tokens,
    assert_errors,
    default_options,
    code,
):
    """Ensures that wrong unicode escape raises a warning."""
    file_tokens = parse_tokens(code)

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [WrongUnicodeEscapeViolation])
コード例 #6
0
def test_correct_multiline_string(
    parse_tokens,
    assert_errors,
    default_options,
    primitives_usages,
    primitive,
    mode,
):
    """Ensures that correct multiline strings are allowed."""
    file_tokens = parse_tokens(mode(primitives_usages.format(primitive)))

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [])
コード例 #7
0
def test_incorrect_multiline_strings(
    parse_tokens,
    assert_errors,
    default_options,
    primitives_usages,
    primitive,
    mode,
):
    """Ensures that incorrect multiline strings are forbiden."""
    file_tokens = parse_tokens(mode(primitives_usages.format(primitive)))

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [WrongMultilineStringViolation])
コード例 #8
0
def test_correct_multiline_docstrings(
    parse_tokens,
    assert_errors,
    default_options,
    code,
    primitive,
    mode,
):
    """Ensures that correct singleline and multiline docstrings are allowed."""
    file_tokens = parse_tokens(mode(code.format(primitive)))

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [])
コード例 #9
0
def test_implicit_unicode_raw_string(
    parse_tokens,
    assert_errors,
    default_options,
    code,
):
    """Ensures that implicit unicode raw string raise a warning."""
    file_tokens = parse_tokens(code)

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [
        UnicodeStringViolation,
        ImplicitRawStringViolation,
    ])
コード例 #10
0
def test_unicode_regression(
    parse_tokens,
    assert_errors,
    default_options,
    primitives_usages,
    mode,
):
    """Ensures that correct uppercase unicode string raises two violations."""
    file_tokens = parse_tokens(mode(primitives_usages.format('U""')))

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [
        UnicodeStringViolation,
        UppercaseStringModifierViolation,
    ])
コード例 #11
0
def test_unicode_prefix(
    parse_tokens,
    assert_errors,
    assert_error_text,
    default_options,
    primitives_usages,
    primitive,
    mode,
):
    """Ensures that unicode prefixes raise a warning."""
    file_tokens = parse_tokens(mode(primitives_usages.format(primitive)))

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [UnicodeStringViolation])
    assert_error_text(visitor, primitive)
コード例 #12
0
def test_correct_prefix(
    parse_tokens,
    assert_errors,
    default_options,
    primitives_usages,
    primitive,
    modifier,
    mode,
):
    """Ensures that correct prefixes work."""
    string = primitive.format(modifier)
    file_tokens = parse_tokens(mode(primitives_usages.format(string)))

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [])
コード例 #13
0
def test_correct_strings(
    parse_tokens,
    assert_errors,
    default_options,
    primitives_usages,
    primitive,
    mode,
):
    """Ensures that correct strings are fine."""
    file_tokens = parse_tokens(
        mode(primitives_usages.format(primitive)),
        do_compile=False,
    )

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [])
コード例 #14
0
def test_uppercase_prefix(
    parse_tokens,
    assert_errors,
    assert_error_text,
    default_options,
    primitives_usages,
    primitive,
    modifier,
    mode,
):
    """Ensures that uppercase modifiers are restricted."""
    string = primitive.format(modifier)
    file_tokens = parse_tokens(mode(primitives_usages.format(string)))

    visitor = WrongStringTokenVisitor(default_options, file_tokens=file_tokens)
    visitor.run()

    assert_errors(visitor, [UppercaseStringModifierViolation])
    assert_error_text(visitor, modifier)