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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
import subprocess
import sys
import pytest
import sqlparse
def test_cli_main_empty():
with pytest.raises(SystemExit):
sqlparse.cli.main([])
def test_parser_empty():
with pytest.raises(SystemExit):
parser = sqlparse.cli.create_parser()
parser.parse_args([])
def test_main_help():
# Call with the --help option as a basic sanity check.
with pytest.raises(SystemExit) as exinfo:
sqlparse.cli.main(["--help", ])
assert exinfo.value.code == 0
def test_valid_args(filepath):
# test doesn't abort
path = filepath('function.sql')
assert sqlparse.cli.main([path, '-r']) is not None
def test_invalid_choice(filepath):
path = filepath('function.sql')
with pytest.raises(SystemExit):
sqlparse.cli.main([path, '-l', 'Spanish'])
def test_invalid_args(filepath, capsys):
path = filepath('function.sql')
sqlparse.cli.main([path, '-r', '--indent_width', '0'])
_, err = capsys.readouterr()
assert err == ("[ERROR] Invalid options: indent_width requires "
"a positive integer\n")
def test_invalid_infile(filepath, capsys):
path = filepath('missing.sql')
sqlparse.cli.main([path, '-r'])
_, err = capsys.readouterr()
assert err[:22] == "[ERROR] Failed to read"
def test_invalid_outfile(filepath, capsys):
path = filepath('function.sql')
outpath = filepath('/missing/function.sql')
sqlparse.cli.main([path, '-r', '-o', outpath])
_, err = capsys.readouterr()
assert err[:22] == "[ERROR] Failed to open"
def test_stdout(filepath, load_file, capsys):
path = filepath('begintag.sql')
expected = load_file('begintag.sql')
sqlparse.cli.main([path])
out, _ = capsys.readouterr()
assert out == expected
def test_script():
# Call with the --help option as a basic sanity check.
cmd = "{:s} -m sqlparse.cli --help".format(sys.executable)
assert subprocess.call(cmd.split()) == 0
@pytest.mark.parametrize('fpath, encoding', (
('encoding_utf8.sql', 'utf-8'),
('encoding_gbk.sql', 'gbk'),
))
def test_encoding_stdout(fpath, encoding, filepath, load_file, capfd):
path = filepath(fpath)
expected = load_file(fpath, encoding)
sqlparse.cli.main([path, '--encoding', encoding])
out, _ = capfd.readouterr()
assert out == expected
@pytest.mark.parametrize('fpath, encoding', (
('encoding_utf8.sql', 'utf-8'),
('encoding_gbk.sql', 'gbk'),
))
def test_encoding_output_file(fpath, encoding, filepath, load_file, tmpdir):
in_path = filepath(fpath)
expected = load_file(fpath, encoding)
out_path = tmpdir.dirname + '/encoding_out.sql'
sqlparse.cli.main([in_path, '--encoding', encoding, '-o', out_path])
out = load_file(out_path, encoding)
assert out == expected
@pytest.mark.parametrize('fpath, encoding', (
('encoding_utf8.sql', 'utf-8'),
('encoding_gbk.sql', 'gbk'),
))
def test_encoding_stdin(fpath, encoding, filepath, load_file, capfd):
path = filepath(fpath)
expected = load_file(fpath, encoding)
old_stdin = sys.stdin
with open(path) as f:
sys.stdin = f
sqlparse.cli.main(['-', '--encoding', encoding])
sys.stdin = old_stdin
out, _ = capfd.readouterr()
assert out == expected
def test_encoding(filepath, capsys):
path = filepath('test_cp1251.sql')
expected = 'insert into foo values (1); -- Песня про надежду\n'
sqlparse.cli.main([path, '--encoding=cp1251'])
out, _ = capsys.readouterr()
assert out == expected
|