diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 036b2c4b76..921168c130 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -209,4 +209,4 @@ jobs: ls which python pip install -e ".[test]" - PYMONGO_MUST_CONNECT=1 pytest -v test/test_client_context.py + PYMONGO_MUST_CONNECT=1 pytest -v -k client_context diff --git a/test/__init__.py b/test/__init__.py index 2a23ae0fd3..d978d7da34 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -947,11 +947,11 @@ def tearDownClass(cls): @classmethod def _setup_class(cls): - cls._setup_class() + pass @classmethod def _tearDown_class(cls): - cls._tearDown_class() + pass class IntegrationTest(PyMongoTestCase): diff --git a/test/asynchronous/__init__.py b/test/asynchronous/__init__.py index 3d22b5ff76..def4bc1b89 100644 --- a/test/asynchronous/__init__.py +++ b/test/asynchronous/__init__.py @@ -949,11 +949,11 @@ def tearDownClass(cls): @classmethod async def _setup_class(cls): - await cls._setup_class() + pass @classmethod async def _tearDown_class(cls): - await cls._tearDown_class() + pass class AsyncIntegrationTest(AsyncPyMongoTestCase): diff --git a/test/asynchronous/test_client_context.py b/test/asynchronous/test_client_context.py new file mode 100644 index 0000000000..a0cb53a14f --- /dev/null +++ b/test/asynchronous/test_client_context.py @@ -0,0 +1,66 @@ +# Copyright 2018-present MongoDB, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from __future__ import annotations + +import os +import sys + +sys.path[0:0] = [""] + +from test.asynchronous import AsyncUnitTest, SkipTest, async_client_context, unittest + +_IS_SYNC = False + + +class TestAsyncClientContext(AsyncUnitTest): + def test_must_connect(self): + if "PYMONGO_MUST_CONNECT" not in os.environ: + raise SkipTest("PYMONGO_MUST_CONNECT is not set") + + self.assertTrue( + async_client_context.connected, + "client context must be connected when " + "PYMONGO_MUST_CONNECT is set. Failed attempts:\n{}".format( + async_client_context.connection_attempt_info() + ), + ) + + def test_serverless(self): + if "TEST_SERVERLESS" not in os.environ: + raise SkipTest("TEST_SERVERLESS is not set") + + self.assertTrue( + async_client_context.connected and async_client_context.serverless, + "client context must be connected to serverless when " + f"TEST_SERVERLESS is set. Failed attempts:\n{async_client_context.connection_attempt_info()}", + ) + + def test_enableTestCommands_is_disabled(self): + if "PYMONGO_DISABLE_TEST_COMMANDS" not in os.environ: + raise SkipTest("PYMONGO_DISABLE_TEST_COMMANDS is not set") + + self.assertFalse( + async_client_context.test_commands_enabled, + "enableTestCommands must be disabled when PYMONGO_DISABLE_TEST_COMMANDS is set.", + ) + + def test_setdefaultencoding_worked(self): + if "SETDEFAULTENCODING" not in os.environ: + raise SkipTest("SETDEFAULTENCODING is not set") + + self.assertEqual(sys.getdefaultencoding(), os.environ["SETDEFAULTENCODING"]) + + +if __name__ == "__main__": + unittest.main() diff --git a/test/test_client_context.py b/test/test_client_context.py index 196647cb08..be8a562142 100644 --- a/test/test_client_context.py +++ b/test/test_client_context.py @@ -18,10 +18,12 @@ sys.path[0:0] = [""] -from test import SkipTest, client_context, unittest +from test import SkipTest, UnitTest, client_context, unittest +_IS_SYNC = True -class TestClientContext(unittest.TestCase): + +class TestClientContext(UnitTest): def test_must_connect(self): if "PYMONGO_MUST_CONNECT" not in os.environ: raise SkipTest("PYMONGO_MUST_CONNECT is not set") diff --git a/tools/synchro.py b/tools/synchro.py index f45112c4cb..5400183cd2 100644 --- a/tools/synchro.py +++ b/tools/synchro.py @@ -161,6 +161,7 @@ "test_logger.py", "test_session.py", "test_transactions.py", + "test_client_context.py", ] sync_test_files = [