]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Add docs and tests for ConnectionInfo.timezone
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 14 May 2021 17:26:37 +0000 (19:26 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Fri, 14 May 2021 17:43:40 +0000 (19:43 +0200)
docs/api/connections.rst
tests/test_conninfo.py

index 8137363913b9ac6ed64f4f8fb2b3e64aaa13df9f..d22fb5a9fa774f64eb4fd1669e62085dfc580a03 100644 (file)
@@ -275,6 +275,7 @@ Connection support objects
     .. autoattribute:: error_message
 
     .. automethod:: get_parameters
+    .. autoattribute:: timezone
     .. autoattribute:: host
 
         This can be a host name, an IP address, or a directory path if the
index be1e706ed4b2e19b01e99a268d90b6eecbb8625a..94f936a69e9f3f066ee9e807e55817732094e5a9 100644 (file)
@@ -1,3 +1,5 @@
+import datetime as dt
+
 import pytest
 
 import psycopg3
@@ -188,3 +190,27 @@ class TestConnectionInfo:
         conn.close()
         with pytest.raises(psycopg3.OperationalError):
             conn.info.backend_pid
+
+    def test_timezone(self, conn):
+        conn.execute("set timezone to 'Europe/Rome'")
+        tz = conn.info.timezone
+        assert isinstance(tz, dt.tzinfo)
+        assert tz.utcoffset(dt.datetime(2000, 1, 1)).total_seconds() == 3600
+        assert tz.utcoffset(dt.datetime(2000, 7, 1)).total_seconds() == 7200
+
+    def test_timezone_warn(self, conn, caplog):
+        conn.execute("set timezone to 'FOOBAR0'")
+        assert len(caplog.records) == 0
+        tz = conn.info.timezone
+        assert tz == dt.timezone.utc
+        assert len(caplog.records) == 1
+        assert "FOOBAR0" in caplog.records[0].message
+
+        conn.info.timezone
+        assert len(caplog.records) == 1
+
+        conn.execute("set timezone to 'FOOBAAR0'")
+        assert len(caplog.records) == 1
+        conn.info.timezone
+        assert len(caplog.records) == 2
+        assert "FOOBAAR0" in caplog.records[1].message