浏览代码

Stopped a test from executing queries at the module level.

Currently module level queries are executed against the real database
(specified in NAME) instead of the test database; since it is to late
to fix this for 1.6, we at least ensures stable builds. Refs #21443.
Florian Apolloner 11 年之前
父节点
当前提交
4fcc1e4ad8
共有 1 个文件被更改,包括 6 次插入4 次删除
  1. 6 4
      tests/transactions_regress/tests.py

+ 6 - 4
tests/transactions_regress/tests.py

@@ -1,6 +1,6 @@
 from __future__ import unicode_literals
 
-from unittest import skipIf, skipUnless
+from unittest import skipIf, skipUnless, SkipTest
 
 from django.db import (connection, connections, transaction, DEFAULT_DB_ALIAS, DatabaseError,
                        IntegrityError)
@@ -367,11 +367,13 @@ class SavepointTest(IgnoreDeprecationWarningsMixin, TransactionTestCase):
 
     @skipIf(connection.vendor == 'sqlite',
             "SQLite doesn't support savepoints in managed mode")
-    @skipIf(connection.vendor == 'mysql' and
-            connection.features._mysql_storage_engine == 'MyISAM',
-            "MyISAM MySQL storage engine doesn't support savepoints")
     @skipUnlessDBFeature('uses_savepoints')
     def test_savepoint_rollback(self):
+        # _mysql_storage_engine issues a query and as such can't be applied in
+        # a skipIf decorator since that would execute the query on module load.
+        if (connection.vendor == 'mysql' and
+            connection.features._mysql_storage_engine == 'MyISAM'):
+            raise SkipTest("MyISAM MySQL storage engine doesn't support savepoints")
         @commit_manually
         def work():
             mod = Mod.objects.create(fld=1)