summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/testing/suite/test_dialect.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/testing/suite/test_dialect.py')
-rw-r--r--lib/sqlalchemy/testing/suite/test_dialect.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_dialect.py b/lib/sqlalchemy/testing/suite/test_dialect.py
index 0e62c347f..5dd1f0501 100644
--- a/lib/sqlalchemy/testing/suite/test_dialect.py
+++ b/lib/sqlalchemy/testing/suite/test_dialect.py
@@ -43,6 +43,49 @@ class ExceptionTest(fixtures.TablesTest):
)
+class AutocommitTest(fixtures.TablesTest):
+
+ run_deletes = 'each'
+
+ __requires__ = 'autocommit',
+
+ __backend__ = True
+
+ @classmethod
+ def define_tables(cls, metadata):
+ Table('some_table', metadata,
+ Column('id', Integer, primary_key=True, autoincrement=False),
+ Column('data', String(50)),
+ test_needs_acid=True
+ )
+
+ def _test_conn_autocommits(self, conn, autocommit):
+ trans = conn.begin()
+ conn.execute(
+ self.tables.some_table.insert(),
+ {"id": 1, "data": "some data"}
+ )
+ trans.rollback()
+
+ eq_(
+ conn.scalar(select([self.tables.some_table.c.id])),
+ 1 if autocommit else None
+ )
+
+ conn.execute(self.tables.some_table.delete())
+
+ def test_autocommit_on(self):
+ conn = config.db.connect()
+ c2 = conn.execution_options(isolation_level='AUTOCOMMIT')
+ self._test_conn_autocommits(c2, True)
+ conn.invalidate()
+ self._test_conn_autocommits(conn, False)
+
+ def test_autocommit_off(self):
+ conn = config.db.connect()
+ self._test_conn_autocommits(conn, False)
+
+
class EscapingTest(fixtures.TestBase):
@provide_metadata
def test_percent_sign_round_trip(self):