summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schubert <contact@benschubert.me>2020-07-03 12:47:14 +0000
committerBenjamin Schubert <contact@benschubert.me>2020-08-22 12:22:15 +0000
commitdd6867dc9c41818f7390e59ec7fbff87ef8fe787 (patch)
tree14295930dc2c8d6c3547adc7fdf34904d918ad9a
parent4929020e85b68c3446ddc276821219fc1f687d18 (diff)
downloadbuildstream-bschubert/stricter-thread-checks.tar.gz
_fixtures.py: Only get the normal number of threads at the start of sessionbschubert/stricter-thread-checks
This ensures that we also have our tests correctly shutting down background threads and not interferring with each other
-rw-r--r--src/buildstream/testing/_fixtures.py15
-rw-r--r--src/buildstream/testing/_sourcetests/conftest.py2
-rwxr-xr-xtests/conftest.py6
3 files changed, 17 insertions, 6 deletions
diff --git a/src/buildstream/testing/_fixtures.py b/src/buildstream/testing/_fixtures.py
index 5da51bb45..98778936d 100644
--- a/src/buildstream/testing/_fixtures.py
+++ b/src/buildstream/testing/_fixtures.py
@@ -14,19 +14,26 @@
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
+# pylint: disable=redefined-outer-name
+
import psutil
import pytest
from buildstream import node, utils
-# Catch tests that don't shut down background threads, which could then lead
-# to other tests hanging when BuildStream uses fork().
-@pytest.fixture(autouse=True)
-def thread_check():
+
+@pytest.fixture(autouse=True, scope="session")
+def default_thread_number():
# xdist/execnet has its own helper thread.
# Ignore that for `utils._is_single_threaded` checks.
utils._INITIAL_NUM_THREADS_IN_MAIN_PROCESS = psutil.Process().num_threads()
+
+# Catch tests that don't shut down background threads, which could then lead
+# to other tests hanging when BuildStream uses fork().
+@pytest.fixture(autouse=True)
+def thread_check(default_thread_number):
+ assert utils._is_single_threaded()
yield
assert utils._is_single_threaded()
diff --git a/src/buildstream/testing/_sourcetests/conftest.py b/src/buildstream/testing/_sourcetests/conftest.py
index 64dd404ef..6790712a9 100644
--- a/src/buildstream/testing/_sourcetests/conftest.py
+++ b/src/buildstream/testing/_sourcetests/conftest.py
@@ -14,4 +14,4 @@
# You should have received a copy of the GNU Lesser General Public
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
-from .._fixtures import reset_global_node_state, thread_check # pylint: disable=unused-import
+from .._fixtures import reset_global_node_state, default_thread_number, thread_check # pylint: disable=unused-import
diff --git a/tests/conftest.py b/tests/conftest.py
index 28e120d5e..476113105 100755
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -25,7 +25,11 @@ import pkg_resources
import pytest
from buildstream.testing import register_repo_kind, sourcetests_collection_hook
-from buildstream.testing._fixtures import reset_global_node_state, thread_check # pylint: disable=unused-import
+from buildstream.testing._fixtures import ( # pylint: disable=unused-import
+ default_thread_number,
+ reset_global_node_state,
+ thread_check,
+)
from buildstream.testing.integration import integration_cache # pylint: disable=unused-import