File: test_module.py

package info (click to toggle)
psycopg3 3.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,836 kB
  • sloc: python: 46,657; sh: 403; ansic: 149; makefile: 73
file content (73 lines) | stat: -rw-r--r-- 1,888 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
import pytest

from psycopg._cmodule import _psycopg
from psycopg.conninfo import conninfo_to_dict


@pytest.mark.parametrize(
    "args, kwargs, want",
    [
        ((), {}, ""),
        (("dbname=foo",), {"user": "bar"}, "dbname=foo user=bar"),
        ((), {"port": 15432}, "port=15432"),
        ((), {"user": "foo", "dbname": None}, "user=foo"),
    ],
)
def test_connect(monkeypatch, dsn_env, args, kwargs, want, setpgenv):
    # Check the main args passing from psycopg.connect to the conn generator
    # Details of the params manipulation are in test_conninfo.
    import psycopg.connection

    orig_connect = psycopg.generators.connect

    got_conninfo: str

    def mock_connect(conninfo, *, timeout):
        nonlocal got_conninfo
        got_conninfo = conninfo
        return orig_connect(dsn_env, timeout=timeout)

    setpgenv({})
    monkeypatch.setattr(psycopg.generators, "connect", mock_connect)

    conn = psycopg.connect(*args, **kwargs)
    assert conninfo_to_dict(got_conninfo) == conninfo_to_dict(want)
    conn.close()


def test_version():
    from psycopg import __version__

    assert __version__.startswith("3.")


@pytest.mark.skipif(_psycopg is None, reason="C module test")
def test_version_c():
    # can be psycopg_c, psycopg_binary
    packagename = _psycopg.__name__.split(".")[0]
    cpackage = __import__(packagename)
    assert cpackage.__version__.startswith("3.")


def test_version_static(mypy):
    cp = mypy.run_on_source(
        """\
from psycopg import __version__
assert __version__
"""
    )
    assert not cp.stdout


@pytest.mark.skipif(_psycopg is None, reason="C module test")
def test_version_c_static(mypy):
    # can be psycopg_c, psycopg_binary
    cpackage = _psycopg.__name__.split(".")[0]

    cp = mypy.run_on_source(
        f"""\
from {cpackage} import __version__
assert __version__
"""
    )
    assert not cp.stdout