From ba8a139e7220a342cddbd4efcb7e937254345f5a Mon Sep 17 00:00:00 2001 From: Iris <58442094+sleepyStick@users.noreply.github.com> Date: Tue, 3 Sep 2024 11:18:58 -0700 Subject: [PATCH] PYTHON-4651: Migrate test_client_context.py to async (#1819) --- .github/workflows/test-python.yml | 2 +- test/__init__.py | 4 +- test/asynchronous/__init__.py | 4 +- test/asynchronous/test_client_context.py | 66 ++++++++++++++++++++++++ test/test_client_context.py | 6 ++- tools/synchro.py | 1 + 6 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 test/asynchronous/test_client_context.py diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 036b2c4b7..921168c13 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 2a23ae0fd..d978d7da3 100644 --- a/test/__init__.py +++ b/test/__init__.py @@ -947,11 +947,11 @@ class UnitTest(PyMongoTestCase): @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 3d22b5ff7..def4bc1b8 100644 --- a/test/asynchronous/__init__.py +++ b/test/asynchronous/__init__.py @@ -949,11 +949,11 @@ class AsyncUnitTest(AsyncPyMongoTestCase): @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 000000000..a0cb53a14 --- /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 196647cb0..be8a56214 100644 --- a/test/test_client_context.py +++ b/test/test_client_context.py @@ -18,10 +18,12 @@ import sys 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 6fb711674..adc0de297 100644 --- a/tools/synchro.py +++ b/tools/synchro.py @@ -163,6 +163,7 @@ converted_tests = [ "test_logger.py", "test_session.py", "test_transactions.py", + "test_client_context.py", ] sync_test_files = [