File: std_AM06_test.py

package info (click to toggle)
sqlfluff 3.5.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,000 kB
  • sloc: python: 106,131; sql: 34,188; makefile: 52; sh: 8
file content (66 lines) | stat: -rw-r--r-- 1,653 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"""Tests the python routines within AM06."""

import sqlfluff


def test__rules__std_AM06_raised() -> None:
    """Test case for multiple AM06 errors raised with 'consistent' setting."""
    sql = """
    SELECT
        foo,
        bar,
        sum(baz) AS sum_value
    FROM (
        SELECT
            foo,
            bar,
            sum(baz) AS baz
        FROM fake_table
        GROUP BY
            foo, bar
    )
    GROUP BY
        1, 2
    ORDER BY
        1, 2;
    """
    result = sqlfluff.lint(sql)

    results_AM06 = [r for r in result if r["code"] == "AM06"]
    assert len(results_AM06) == 2
    assert (
        results_AM06[0]["description"]
        == "Inconsistent column references in 'GROUP BY/ORDER BY' clauses."
    )


def test__rules__std_AM06_unparsable() -> None:
    """Test unparsable group by doesn't result in bad rule AM06 error."""
    sql = """
    SELECT foo.set.barr
    FROM foo
    GROUP BY
      foo.set.barr
    """
    result = sqlfluff.lint(sql)

    results_AM06 = [r for r in result if r["code"] == "AM06"]
    results_prs = [r for r in result if r["code"] == "PRS"]
    assert len(results_AM06) == 0
    assert len(results_prs) > 0


def test__rules__std_AM06_noqa() -> None:
    """Test unparsable group by with no qa doesn't result in bad rule AM06 error."""
    sql = """
    SELECT foo.set.barr  --noqa: PRS
    FROM foo
    GROUP BY
      f@oo.set.bar.r --noqa: PRS
    """
    result = sqlfluff.lint(sql)

    results_AM06 = [r for r in result if r["code"] == "AM06"]
    results_prs = [r for r in result if r["code"] == "PRS"]
    assert len(results_AM06) == 0
    assert len(results_prs) == 0