aboutsummaryrefslogtreecommitdiff
path: root/src/mailman_pgp/testing
diff options
context:
space:
mode:
authorJ08nY2017-07-14 02:10:31 +0200
committerJ08nY2017-07-14 02:10:31 +0200
commit6b7b6bfe1044a5c7a548a091a49dcdd2422aaff5 (patch)
tree038516b0b1dcab11227c851ba7c8a8d61ceaf8e6 /src/mailman_pgp/testing
parent615a1e7c01a0710c5ba138d81358d80827bcf680 (diff)
downloadmailman-pgp-6b7b6bfe1044a5c7a548a091a49dcdd2422aaff5.tar.gz
mailman-pgp-6b7b6bfe1044a5c7a548a091a49dcdd2422aaff5.tar.zst
mailman-pgp-6b7b6bfe1044a5c7a548a091a49dcdd2422aaff5.zip
Diffstat (limited to 'src/mailman_pgp/testing')
-rw-r--r--src/mailman_pgp/testing/layers.py45
1 files changed, 37 insertions, 8 deletions
diff --git a/src/mailman_pgp/testing/layers.py b/src/mailman_pgp/testing/layers.py
index aabf216..fb8a3ec 100644
--- a/src/mailman_pgp/testing/layers.py
+++ b/src/mailman_pgp/testing/layers.py
@@ -14,6 +14,7 @@
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see <http://www.gnu.org/licenses/>.
+import contextlib
import os
from os.path import isfile
@@ -24,18 +25,36 @@ from mailman_pgp.database import transaction
from mailman_pgp.model.base import Base
-def reset_pgp_world():
+def reset_rollback():
+ config.db.session.rollback()
+
+
+def reset_pgp_dirs():
for keydir in (config.pgp.keydir_config.values()):
for path in os.listdir(keydir):
full_path = os.path.join(keydir, path)
if isfile(full_path):
os.remove(full_path)
- config.db.session.rollback()
+
+
+def reset_pgp_hard():
+ reset_rollback()
+ reset_pgp_dirs()
with transaction():
Base.metadata.drop_all(config.db.engine)
Base.metadata.create_all(config.db.engine)
+def reset_pgp_soft():
+ reset_rollback()
+ reset_pgp_dirs()
+ with contextlib.closing(config.db.engine.connect()) as con:
+ trans = con.begin()
+ for table in reversed(Base.metadata.sorted_tables):
+ con.execute(table.delete())
+ trans.commit()
+
+
# It's weird that ws have to do this, but for some reason nose2 test layers
# don't work when ws create a mixin class with the two classmethods
# and subclass both it and the respective Mailman Core test layer.
@@ -46,28 +65,38 @@ class PGPConfigLayer(ConfigLayer):
@classmethod
def tearDown(cls):
- reset_pgp_world()
+ reset_pgp_soft()
+
+ @classmethod
+ def testTearDown(cls):
+ reset_pgp_soft()
+
+
+class PGPMigrationLayer(ConfigLayer):
+ @classmethod
+ def tearDown(cls):
+ reset_pgp_hard()
@classmethod
def testTearDown(cls):
- reset_pgp_world()
+ reset_pgp_hard()
class PGPSMTPLayer(SMTPLayer):
@classmethod
def tearDown(cls):
- reset_pgp_world()
+ reset_pgp_soft()
@classmethod
def testTearDown(cls):
- reset_pgp_world()
+ reset_pgp_soft()
class PGPRESTLayer(RESTLayer):
@classmethod
def tearDown(cls):
- reset_pgp_world()
+ reset_pgp_soft()
@classmethod
def testTearDown(cls):
- reset_pgp_world()
+ reset_pgp_soft()