File: test_future.py

package info (click to toggle)
python-baron 0.10.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 2,080 kB
  • sloc: python: 26,926; makefile: 126; sh: 27
file content (95 lines) | stat: -rw-r--r-- 2,734 bytes parent folder | download
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
from baron.future import has_print_function, replace_print_by_name
from baron.baron import parse, tokenize
import json


def print_token_is_a_function(code):
    return has_print_function(tokenize(code))


def print_is_parsed_as_a_function(parsed_code):
    code_json = json.dumps(parsed_code)
    return '"type": "name", "value": "print"' in code_json \
           or '"value": "print", "type": "name"' in code_json


def test_no_future():
    code = "a = 1"
    assert not print_token_is_a_function(code)


def test_other_future():
    code = "from __future__ import other"
    assert not print_token_is_a_function(code)


def test_print_future():
    code = "from __future__ import print_function"
    assert print_token_is_a_function(code)


def test_print_future_as():
    code = "from __future__ import print_function as p_f"
    assert print_token_is_a_function(code)


def test_print_future_comma():
    code = "from __future__ import a, b, print_function"
    assert print_token_is_a_function(code)


def test_print_future_comma_as():
    code = "from __future__ import a as c, b as d, print_function as e"
    assert print_token_is_a_function(code)


def test_print_no_future_comma_as():
    code = "from __future__ import a as c, b as d"
    assert not print_token_is_a_function(code)


def test_print_future_in_parenthesis():
    code = "from __future__ import (a, b, print_function)"
    assert print_token_is_a_function(code)


def test_print_future_in_parenthesis_as():
    code = "from __future__ import (a as c, b as d, print_function as e)"
    assert print_token_is_a_function(code)


def test_print_no_future_in_parenthesis_as():
    code = "from __future__ import (a as c, b as d)"
    assert not print_token_is_a_function(code)


def test_print_future_second():
    code = """from __future__ import a, b as e
from __future__ import c, print_function"""
    assert print_token_is_a_function(code)


def test_auto_print_as_name():
    code = "from __future__ import print_function\nprint(a)"
    assert print_is_parsed_as_a_function(parse(code))


def test_auto_print_as_print():
    code = "print(a)"
    assert not print_is_parsed_as_a_function(parse(code))


def test_print_as_name():
    code = "print(a)"
    assert print_is_parsed_as_a_function(parse(code, True))


def test_print_as_print():
    code = "print(a)"
    assert not print_is_parsed_as_a_function(parse(code, False))


def test_replace_print_token():
    tokens = [('PRINT', 'print'), ('LEFT_PARENTHESIS', '('), ('NAME', 'A'), ('RIGHT_PARENTHESIS', ')'), ('ENDMARKER', '')]
    after = [('NAME', 'print'), ('LEFT_PARENTHESIS', '('), ('NAME', 'A'), ('RIGHT_PARENTHESIS', ')'), ('ENDMARKER', '')]
    assert after == replace_print_by_name(tokens)