From c8823ef318285d0abd6d245b2a1fea6d51e2f43c Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Mon, 7 Feb 2022 17:24:57 +0100
Subject: [PATCH] WIP: pipeline

---
 tests/test_administration.py        |  4 +-
 tests/test_affiliation.py           |  4 +-
 tests/test_authentication.py        |  6 +--
 tests/test_creation.py              |  2 +-
 tests/test_datatype.py              |  4 +-
 tests/test_datatype_inheritance.py  |  6 +--
 tests/test_deletion.py              |  2 +-
 tests/test_empty_text_value.py      |  6 +--
 tests/test_error_stuff.py           |  6 +--
 tests/test_file.py                  |  8 +--
 tests/test_importance.py            |  2 +-
 tests/test_inheritance.py           |  6 +--
 tests/test_issues_mysqlbackend.py   |  4 +-
 tests/test_issues_server.py         |  4 +-
 tests/test_list.py                  |  6 +--
 tests/test_misc.py                  |  2 +-
 tests/test_name_properties.py       | 77 ++++++++++++-----------------
 tests/test_parents.py               |  6 +--
 tests/test_permissions.py           |  6 +--
 tests/test_properties.py            |  4 +-
 tests/test_query.py                 |  6 +--
 tests/test_query_template.py        |  4 +-
 tests/test_records.py               |  2 +-
 tests/test_recursive_parents.py     |  4 +-
 tests/test_server_side_scripting.py |  4 +-
 tests/test_state.py                 |  6 +--
 tests/test_tickets.py               |  6 +--
 tests/test_tickets_300.py           |  4 +-
 tests/test_update.py                |  6 +--
 tests/test_version.py               |  6 +--
 tox.ini                             |  2 +-
 31 files changed, 101 insertions(+), 114 deletions(-)

diff --git a/tests/test_administration.py b/tests/test_administration.py
index 25c96e9..4ba69d8 100644
--- a/tests/test_administration.py
+++ b/tests/test_administration.py
@@ -59,11 +59,11 @@ def teardown_module():
         print(e)
 
 
-def setup():
+def setup_function(function):
     switch_to_admin_user()
 
 
-def teardown():
+def teardown_function(function):
     switch_to_admin_user()
     try:
         admin._delete_user(name=test_user + "2")
diff --git a/tests/test_affiliation.py b/tests/test_affiliation.py
index 70a619c..bb66cdc 100644
--- a/tests/test_affiliation.py
+++ b/tests/test_affiliation.py
@@ -48,7 +48,7 @@ prop_name = "TestPropertyParent"
 file_path = "testfile.dat"
 
 
-def setup():
+def setup_function(function):
     d = db.execute_query("FIND ENTITY WITH ID > 99")
     if len(d) > 0:
         d.delete()
@@ -58,7 +58,7 @@ def setup():
     db.Property(name=prop_name, datatype=db.TEXT).insert()
 
 
-def teardown():
+def teardown_function(function):
     db.execute_query("FIND Test*").delete()
 
 
diff --git a/tests/test_authentication.py b/tests/test_authentication.py
index ef0657c..c885523 100644
--- a/tests/test_authentication.py
+++ b/tests/test_authentication.py
@@ -41,7 +41,7 @@ from .test_server_side_scripting import request
 _USED_OTA_TOKEN = set()
 
 
-def setup():
+def setup_function(function):
     db.configure_connection()
 
     # deactivate anonymous user
@@ -51,8 +51,8 @@ def setup():
         d.delete()
 
 
-def teardown():
-    setup()
+def teardown_function(function):
+    setup_function(function)
 
 
 @mark.skipif(
diff --git a/tests/test_creation.py b/tests/test_creation.py
index a2a431e..1530579 100755
--- a/tests/test_creation.py
+++ b/tests/test_creation.py
@@ -30,7 +30,7 @@ from caosdb import Container, RecordType, Property, execute_query
 from nose.tools import with_setup  # @UnresolvedImport
 
 
-def setup():
+def setup_function(function):
     try:
         execute_query("FIND PA_*").delete()
     except BaseException:
diff --git a/tests/test_datatype.py b/tests/test_datatype.py
index 3abba3f..46c5210 100644
--- a/tests/test_datatype.py
+++ b/tests/test_datatype.py
@@ -29,14 +29,14 @@ import caosdb as db
 from pytest import raises
 
 
-def setup():
+def setup_function(function):
     try:
         db.execute_query("FIND Test*").delete()
     except BaseException:
         pass
 
 
-def teardown():
+def teardown_function(function):
     try:
         db.execute_query("FIND Test*").delete()
     except BaseException:
diff --git a/tests/test_datatype_inheritance.py b/tests/test_datatype_inheritance.py
index 6382071..6af35b2 100644
--- a/tests/test_datatype_inheritance.py
+++ b/tests/test_datatype_inheritance.py
@@ -32,11 +32,11 @@ from caosdb.exceptions import TransactionError
 from pytest import raises
 
 
-def setup():
-    teardown()
+def setup_function(function):
+    teardown_function(function)
 
 
-def teardown():
+def teardown_function(function):
     try:
         db.execute_query("FIND test_*").delete()
     except BaseException:
diff --git a/tests/test_deletion.py b/tests/test_deletion.py
index fd2236e..ef374b4 100755
--- a/tests/test_deletion.py
+++ b/tests/test_deletion.py
@@ -61,7 +61,7 @@ def test_delete_referencing_properties():
     h.execute_query("FIND ENTITY WITH ID > 100").delete()
 
 
-def setup():
+def setup_function(function):
     try:
         h.execute_query("FIND Test*").delete()
     except Exception as e:
diff --git a/tests/test_empty_text_value.py b/tests/test_empty_text_value.py
index fe705d6..64be317 100644
--- a/tests/test_empty_text_value.py
+++ b/tests/test_empty_text_value.py
@@ -24,15 +24,15 @@ import pytest
 import caosdb as db
 
 
-def setup():
-    teardown()
+def setup_function(function):
+    teardown_function(function)
     rt = db.RecordType("TestRT")
     rt.insert()
     p = db.Property("TestProp", datatype=db.TEXT)
     p.insert()
 
 
-def teardown():
+def teardown_function(function):
     try:
         db.execute_query("FIND Test*").delete()
     except Exception as e:
diff --git a/tests/test_error_stuff.py b/tests/test_error_stuff.py
index d6eb85b..ca33fb2 100644
--- a/tests/test_error_stuff.py
+++ b/tests/test_error_stuff.py
@@ -40,16 +40,16 @@ from caosdb.exceptions import (AmbiguousEntityError,
 import pytest
 
 
-def setup():
+def setup_function(function):
     try:
         h.execute_query("FIND Test*").delete()
     except BaseException:
         pass
 
 
-def teardown():
+def teardown_function(function):
     """Delete everything."""
-    setup()
+    setup_function(function)
 
 
 def test_retrieval_no_exception_raised():
diff --git a/tests/test_file.py b/tests/test_file.py
index 7b24c97..b6db06e 100644
--- a/tests/test_file.py
+++ b/tests/test_file.py
@@ -43,11 +43,11 @@ from caosdb.utils.checkFileSystemConsistency import runCheck
 
 
 def setup_module():
-    teardown()
+    teardown_function(function)
 
 
-def setup():
-    teardown()
+def setup_function(function):
+    teardown_function(function)
     with open("test.dat", "w") as upload_file:
         upload_file.write("hello world\n")
     os.makedirs("testfolder/subfolder")
@@ -57,7 +57,7 @@ def setup():
         upload_file.write("hello world\n")
 
 
-def teardown():
+def teardown_function(function):
     d = execute_query("FIND ENTITY WHICH HAS AN ID >= 100")
     if len(d) > 0:
         d.delete()
diff --git a/tests/test_importance.py b/tests/test_importance.py
index afa63ef..6bcf4a0 100644
--- a/tests/test_importance.py
+++ b/tests/test_importance.py
@@ -22,7 +22,7 @@ from pytest import raises
 import caosdb as db
 
 
-def setup():
+def setup_function(function):
     teardown_module()
 
 
diff --git a/tests/test_inheritance.py b/tests/test_inheritance.py
index 6b4fd2c..bffb128 100644
--- a/tests/test_inheritance.py
+++ b/tests/test_inheritance.py
@@ -30,11 +30,11 @@
 import caosdb as db
 
 
-def setup():
-    teardown()
+def setup_function(function):
+    teardown_function(function)
 
 
-def teardown():
+def teardown_function(function):
     d = db.execute_query("FIND ENTITY WITH ID > 99")
     if len(d) > 0:
         d.delete()
diff --git a/tests/test_issues_mysqlbackend.py b/tests/test_issues_mysqlbackend.py
index 64de2f2..5904ded 100644
--- a/tests/test_issues_mysqlbackend.py
+++ b/tests/test_issues_mysqlbackend.py
@@ -33,12 +33,12 @@ def setup_module():
         print(delete_exc)
 
 
-def setup():
+def setup_function(function):
     """No setup required."""
     setup_module()
 
 
-def teardown():
+def teardown_function(function):
     """Deleting entities again."""
     setup_module()
 
diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py
index 54f7709..844de46 100644
--- a/tests/test_issues_server.py
+++ b/tests/test_issues_server.py
@@ -41,12 +41,12 @@ def setup_module():
         print(delete_exc)
 
 
-def setup():
+def setup_function(function):
     """No setup required."""
     setup_module()
 
 
-def teardown():
+def teardown_function(function):
     """Deleting entities again."""
     setup_module()
 
diff --git a/tests/test_list.py b/tests/test_list.py
index 2888552..63ece67 100644
--- a/tests/test_list.py
+++ b/tests/test_list.py
@@ -33,16 +33,16 @@ from nose.tools import assert_true, assert_equal
 from pytest import raises
 
 
-def setup():
+def setup_function(function):
     d = db.execute_query("FIND ENTITY WITH ID > 99")
     if len(d) > 0:
         d.delete()
 
 
-def teardown():
+def teardown_function(function):
     if os.path.isfile("test.dat"):
         os.remove("test.dat")
-    setup()
+    setup_function(function)
 
 
 def test_list_of_files():
diff --git a/tests/test_misc.py b/tests/test_misc.py
index da5e815..15ba810 100644
--- a/tests/test_misc.py
+++ b/tests/test_misc.py
@@ -31,7 +31,7 @@ from pytest import raises
 from pytest import mark
 
 
-def setup():
+def setup_function(function):
     try:
         db.execute_query("FIND Test*").delete()
     except Exception as e:
diff --git a/tests/test_name_properties.py b/tests/test_name_properties.py
index 028592b..d02d61d 100644
--- a/tests/test_name_properties.py
+++ b/tests/test_name_properties.py
@@ -27,8 +27,8 @@
 """
 
 import caosdb as db
-from pytest import raises, mark
-from nose.tools import nottest, assert_true, assert_raises, assert_equal, with_setup, assert_is_not_none  # @UnresolvedImport
+from pytest import raises
+from nose.tools import assert_true, assert_equal
 
 
 def setup_module():
@@ -36,36 +36,34 @@ def setup_module():
 
 
 def teardown_module():
-    teardown()
+    teardown_function(function)
 
 
-def setup():
+def setup_function(function):
     try:
         db.execute_query("FIND Test*").delete()
     except BaseException:
         pass
 
 
-def teardown():
+def teardown_function(function):
     try:
         db.execute_query("FIND Test*").delete()
     except BaseException:
         pass
 
 
-@with_setup(setup, teardown)
 def test_property_insertion():
     p = db.Property(
         name="TestShortName",
         datatype=db.TEXT,
         value="TestSN").add_parent(
         name="name").insert()
-    assert_true(p.is_valid())
+    assert p.is_valid()
 
     return p
 
 
-@with_setup(setup, teardown)
 def test_property_query():
     pid = test_property_insertion().id
     assert_equal(db.execute_query("FIND TestShortName", unique=True).id, pid)
@@ -74,29 +72,26 @@ def test_property_query():
     assert_equal(len(db.execute_query("FIND TestSN")), 0)
 
 
-@with_setup(setup, teardown)
 def test_recordtype_insertion_separately_prop_by_id_direct_name_child():
     pid = test_property_insertion().id
     rt = db.RecordType(
         name="TestRecordType").add_property(
         id=pid, value="TestRT").insert()
-    assert_true(rt.is_valid())
+    assert rt.is_valid()
 
     return rt
 
 
-@with_setup(setup, teardown)
 def test_recordtype_is_stored_correctly():
     test_recordtype_insertion_separately_prop_by_id_direct_name_child()
 
     rt = db.RecordType(name="TestRecordType").retrieve()
-    assert_true(rt.is_valid())
+    assert rt.is_valid()
     assert_equal(len(rt.get_properties()), 1)
-    assert_is_not_none(rt.get_property("TestShortName"))
+    assert rt.get_property("TestShortName") is not None
     assert_equal(rt.get_property("TestShortName").value, "TestRT")
 
 
-@with_setup(setup, teardown)
 def test_recordtype_insertion_container_prop_by_tempid_direct_name_child():
     p = db.Property(
         name="TestShortName",
@@ -109,13 +104,12 @@ def test_recordtype_insertion_container_prop_by_tempid_direct_name_child():
         id=-1, value="TestRT")
     c = db.Container().extend([p, rt])
     c.insert()
-    assert_true(c.is_valid())
-    assert_true(p.is_valid())
-    assert_true(rt.is_valid())
+    assert c.is_valid()
+    assert p.is_valid()
+    assert rt.is_valid()
     return rt
 
 
-@with_setup(setup, teardown)
 def test_recordtype_insertion_container_prop_by_name_direct_name_child():
     p = db.Property(
         name="TestShortName",
@@ -128,40 +122,37 @@ def test_recordtype_insertion_container_prop_by_name_direct_name_child():
         value="TestRT")
     c = db.Container().extend([p, rt])
     c.insert()
-    assert_true(c.is_valid())
-    assert_true(p.is_valid())
-    assert_true(rt.is_valid())
+    assert c.is_valid()
+    assert p.is_valid()
+    assert rt.is_valid()
     return rt
 
 
-@with_setup(setup, teardown)
 def test_recordtype_insertion_separately_prop_by_name_direct_name_child():
     test_property_insertion()
     rt = db.RecordType(
         name="TestRecordType").add_property(
         name="TestShortName",
         value="TestRT").insert()
-    assert_true(rt.is_valid())
+    assert rt.is_valid()
     return rt
 
 
-@with_setup(setup, teardown)
 def test_recordtpye_insertion_with_indirect_child_with_existing_parent():
     test_property_insertion()
     p = db.Property(
         name="TestExtraShortName").add_parent(
         name="TestShortName").insert()
-    assert_true(p.is_valid())
+    assert p.is_valid()
 
     rt = db.RecordType(
         name="TestRecordType").add_property(
         name="TestExtraShortName",
         value="TestRT").insert()
-    assert_true(rt.is_valid())
+    assert rt.is_valid()
     return rt
 
 
-@with_setup(setup, teardown)
 def test_recordtpye_insertion_with_indirect_child_with_new_parent():
     parp = db.Property(name="TestShortName").add_parent(name="name")
     p = db.Property(name="TestExtraShortName").add_parent(name="TestShortName")
@@ -171,40 +162,39 @@ def test_recordtpye_insertion_with_indirect_child_with_new_parent():
         value="TestRT")
     c = db.Container().extend([parp, p, rt]).insert()
 
-    assert_true(c.is_valid())
-    assert_true(p.is_valid())
-    assert_true(parp.is_valid())
-    assert_true(rt.is_valid())
+    assert c.is_valid()
+    assert p.is_valid()
+    assert parp.is_valid()
+    assert rt.is_valid()
 
     return rt
 
 
-@nottest
-def do_unique_query_test(call, queries):
-    setup()
+def assert_same_unique_results(call, queries):
+    setup(None)
     rtid = call().id
     for q in queries:
         assert_equal(db.execute_query(q, unique=True).id, rtid)
-    teardown()
+    teardown_function(function)
 
 
 def test_recordtype_query():
-    do_unique_query_test(
+    assert_same_unique_results(
         test_recordtype_insertion_separately_prop_by_id_direct_name_child, [
             "FIND TestRecordType", "FIND TestRT"])
-    do_unique_query_test(
+    assert_same_unique_results(
         test_recordtype_insertion_separately_prop_by_name_direct_name_child, [
             "FIND TestRecordType", "FIND TestRT"])
-    do_unique_query_test(
+    assert_same_unique_results(
         test_recordtype_insertion_container_prop_by_name_direct_name_child, [
             "FIND TestRecordType", "FIND TestRT"])
-    do_unique_query_test(
+    assert_same_unique_results(
         test_recordtype_insertion_container_prop_by_tempid_direct_name_child, [
             "FIND TestRecordType", "FIND TestRT"])
-    do_unique_query_test(
+    assert_same_unique_results(
         test_recordtpye_insertion_with_indirect_child_with_new_parent, [
             "FIND TestRecordType", "FIND TestRT"])
-    do_unique_query_test(
+    assert_same_unique_results(
         test_recordtpye_insertion_with_indirect_child_with_existing_parent, [
             "FIND TestRecordType", "FIND TestRT"])
 
@@ -224,7 +214,7 @@ def test_query_name_property():
     with raises(db.BadQueryError):
         db.execute_query("FIND John", unique=True)
 
-    teardown()
+    teardown_function(function)
 
     # test behavior WITH the name parent
     db.RecordType("TestPerson").insert()
@@ -239,7 +229,6 @@ def test_query_name_property():
                             unique=True).id == rec.id
 
 
-@with_setup(setup, teardown)
 def test_query_property_with_pov():
     """ Insert a Record with a property which can be searched using two
     different names.
@@ -285,7 +274,6 @@ def test_query_property_with_pov():
         rec.id)
 
 
-@with_setup(setup, teardown)
 def test_query_with_reference():
     """ Insert a Record with two names. Both work in a reference query.
 
@@ -321,7 +309,6 @@ def test_query_with_reference():
         rec.id)
 
 
-@with_setup(setup, teardown)
 def test_query_with_back_reference():
     """ Insert a Record with two names. Both work in a back-ref query.
 
diff --git a/tests/test_parents.py b/tests/test_parents.py
index 19b5894..d038350 100644
--- a/tests/test_parents.py
+++ b/tests/test_parents.py
@@ -22,11 +22,11 @@ from pytest import raises, mark
 import caosdb as db
 
 
-def setup():
-    teardown()
+def setup_function(function):
+    teardown_function(function)
 
 
-def teardown():
+def teardown_function(function):
     d = db.execute_query("FIND Test*")
     if len(d) > 0:
         d.delete()
diff --git a/tests/test_permissions.py b/tests/test_permissions.py
index 16bb9cf..f35d496 100644
--- a/tests/test_permissions.py
+++ b/tests/test_permissions.py
@@ -151,11 +151,11 @@ def revoke_permissions_test_role():
         role=test_role, permission_rules=[])
 
 
-def teardown():
-    setup()
+def teardown_function(function):
+    setup_function(function)
 
 
-def setup():
+def setup_function(function):
     switch_to_admin_user()
     try:
         db.execute_query("FIND Test*").delete()
diff --git a/tests/test_properties.py b/tests/test_properties.py
index ffedcdb..ca6aac4 100644
--- a/tests/test_properties.py
+++ b/tests/test_properties.py
@@ -32,11 +32,11 @@ def setup_module():
         d.delete()
 
 
-def setup():
+def setup_function(function):
     setup_module()
 
 
-def teardown():
+def teardown_function(function):
     setup_module()
 
 
diff --git a/tests/test_query.py b/tests/test_query.py
index ad3fc94..403aa0a 100644
--- a/tests/test_query.py
+++ b/tests/test_query.py
@@ -43,16 +43,16 @@ def setup_module():
     assert perms == set()
 
 
-def setup():
+def setup_function(function):
     try:
         db.execute_query("FIND *").delete()
     except Exception as e:
         print(e)
 
 
-def teardown():
+def teardown_function(function):
     db.configure_connection()
-    setup()
+    setup_function(function)
     try:
         os.remove("test.dat")
     except Exception as e:
diff --git a/tests/test_query_template.py b/tests/test_query_template.py
index e4c662d..58eccf8 100644
--- a/tests/test_query_template.py
+++ b/tests/test_query_template.py
@@ -78,11 +78,11 @@ def teardown_module():
         print(e)
 
 
-def setup():
+def setup_function(function):
     pass
 
 
-def teardown():
+def teardown_function(function):
     db.configure_connection()
     try:
         db.execute_query("FIND QUERYTEMPLATE Test*").delete()
diff --git a/tests/test_records.py b/tests/test_records.py
index 011ebef..182375b 100644
--- a/tests/test_records.py
+++ b/tests/test_records.py
@@ -30,7 +30,7 @@ from caosdb.exceptions import CaosDBException
 import caosdb
 
 
-def teardown():
+def teardown_function(function):
     try:
         caosdb.execute_query("FIND Test*").delete()
     except Exception as e:
diff --git a/tests/test_recursive_parents.py b/tests/test_recursive_parents.py
index 1efd939..76178ce 100644
--- a/tests/test_recursive_parents.py
+++ b/tests/test_recursive_parents.py
@@ -38,12 +38,12 @@ def setup_module():
         raise_exception_on_error=False)
 
 
-def setup():
+def setup_function(function):
     """No further setup required"""
     setup_module()
 
 
-def teardown():
+def teardown_function(function):
     """Delete again"""
     setup_module()
 
diff --git a/tests/test_server_side_scripting.py b/tests/test_server_side_scripting.py
index 6e8a86a..5801f98 100644
--- a/tests/test_server_side_scripting.py
+++ b/tests/test_server_side_scripting.py
@@ -70,11 +70,11 @@ def clean_database():
         d.delete()
 
 
-def setup():
+def setup_function(function):
     clean_database()
 
 
-def teardown():
+def teardown_function(function):
     admin.set_server_property("SERVER_SIDE_SCRIPTING_BIN_DIRS",
                               _ORIGINAL_SERVER_SCRIPTING_BIN_DIR)
     clean_database()
diff --git a/tests/test_state.py b/tests/test_state.py
index e376dd0..eee4b1d 100644
--- a/tests/test_state.py
+++ b/tests/test_state.py
@@ -144,16 +144,16 @@ def setup_module():
         "State1").insert()
 
 
-def teardown():
+def teardown_function(function):
     switch_to_admin_user()
     d = db.execute_query("FIND TestRT")
     if len(d) > 0:
         d.delete(flags={"forceFinalState": "true"})
 
 
-def setup():
+def setup_function(function):
     admin.set_server_property("EXT_ENTITY_STATE", "ENABLED")
-    teardown()
+    teardown_function(function)
     db.RecordType("TestRT").insert()
 
 
diff --git a/tests/test_tickets.py b/tests/test_tickets.py
index bcffcd3..fb41af3 100644
--- a/tests/test_tickets.py
+++ b/tests/test_tickets.py
@@ -32,14 +32,14 @@ import pytest
 from tests import test_misc
 
 
-def setup():
+def setup_function(function):
     d = db.execute_query("FIND Test*")
     if len(d) > 0:
         d.delete()
 
 
-def teardown():
-    setup()
+def teardown_function(function):
+    setup_function(function)
 
 
 def test_ticket_103a():
diff --git a/tests/test_tickets_300.py b/tests/test_tickets_300.py
index 43fbd97..cf34637 100644
--- a/tests/test_tickets_300.py
+++ b/tests/test_tickets_300.py
@@ -45,11 +45,11 @@ def teardown_module():
     _delete_test_entities()
 
 
-def setup():
+def setup_function(function):
     setup_module()
 
 
-def teardown():
+def teardown_function(function):
     teardown_module()
 
 
diff --git a/tests/test_update.py b/tests/test_update.py
index f783ff1..becaf5b 100644
--- a/tests/test_update.py
+++ b/tests/test_update.py
@@ -34,14 +34,14 @@ from caosdb.common.utils import xml2str
 from caosdb.common.models import raise_errors
 
 
-def setup():
+def setup_function(function):
     d = db.execute_query("FIND Entity WITH ID > 99")
     if len(d) > 0:
         d.delete()
 
 
-def teardown():
-    setup()
+def teardown_function(function):
+    setup_function(function)
 
 
 def test_property_no_id():
diff --git a/tests/test_version.py b/tests/test_version.py
index 2b8aafa..4abf10a 100644
--- a/tests/test_version.py
+++ b/tests/test_version.py
@@ -25,14 +25,14 @@ from pytest import mark, raises
 import caosdb as c
 
 
-def setup():
+def setup_function(function):
     d = c.execute_query("FIND Test*")
     if len(d) > 0:
         d.delete()
 
 
-def teardown():
-    setup()
+def teardown_function(function):
+    setup_function(function)
 
 
 def test_version_object():
diff --git a/tox.ini b/tox.ini
index 70f0bb3..26c5d15 100644
--- a/tox.ini
+++ b/tox.ini
@@ -12,4 +12,4 @@ commands_pre=pip install ../caosdb-pylib/
     python --version
     python -c "import caosdb; print(caosdb.version.version)"
 # Add "-x" to stop at first error.
-commands=pytest --cov=caosdb -vvx {posargs}
+commands=pytest --cov=caosdb -vv {posargs}
-- 
GitLab