summaryrefslogtreecommitdiff
path: root/tests/regressiontests
diff options
context:
space:
mode:
Diffstat (limited to 'tests/regressiontests')
-rw-r--r--tests/regressiontests/backends/tests.py34
1 files changed, 28 insertions, 6 deletions
diff --git a/tests/regressiontests/backends/tests.py b/tests/regressiontests/backends/tests.py
index 33c8763037..29db6a705a 100644
--- a/tests/regressiontests/backends/tests.py
+++ b/tests/regressiontests/backends/tests.py
@@ -196,12 +196,34 @@ class PostgresVersionTest(TestCase):
self.assertEqual(pg_version._parse_version(version_string), version)
def test_parsing(self):
- self.assert_parses("PostgreSQL 8.3 beta4", (8, 3, None))
- self.assert_parses("PostgreSQL 8.3", (8, 3, None))
- self.assert_parses("EnterpriseDB 8.3", (8, 3, None))
- self.assert_parses("PostgreSQL 8.3.6", (8, 3, 6))
- self.assert_parses("PostgreSQL 8.4beta1", (8, 4, None))
- self.assert_parses("PostgreSQL 8.3.1 on i386-apple-darwin9.2.2, compiled by GCC i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5478)", (8, 3, 1))
+ """Test PostgreSQL version parsing from `SELECT version()` output"""
+ self.assert_parses("PostgreSQL 8.3 beta4", 80300)
+ self.assert_parses("PostgreSQL 8.3", 80300)
+ self.assert_parses("EnterpriseDB 8.3", 80300)
+ self.assert_parses("PostgreSQL 8.3.6", 80306)
+ self.assert_parses("PostgreSQL 8.4beta1", 80400)
+ self.assert_parses("PostgreSQL 8.3.1 on i386-apple-darwin9.2.2, compiled by GCC i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5478)", 80301)
+
+ def test_version_detection(self):
+ """Test PostgreSQL version detection"""
+
+ # Helper mocks
+ class CursorMock(object):
+ "Very simple mock of DB-API cursor"
+ def execute(self, arg):
+ pass
+
+ def fetchone(self):
+ return ["PostgreSQL 8.3"]
+
+ class OlderConnectionMock(object):
+ "Mock of psycopg2 (< 2.0.12) connection"
+ def cursor(self):
+ return CursorMock()
+
+ # psycopg2 < 2.0.12 code path
+ conn = OlderConnectionMock()
+ self.assertEqual(pg_version.get_version(conn), 80300)
# Unfortunately with sqlite3 the in-memory test database cannot be
# closed, and so it cannot be re-opened during testing, and so we