File tree Expand file tree Collapse file tree 3 files changed +44
-3
lines changed
Expand file tree Collapse file tree 3 files changed +44
-3
lines changed Original file line number Diff line number Diff line change 11import asyncio
2+ import copy
23import os
4+ import sys
5+ from typing import Any
36
47
58def async_test (coro ):
@@ -24,3 +27,19 @@ def remove_os_env_temporarily() -> dict:
2427
2528def restore_os_env (old_env : dict ) -> None :
2629 os .environ .update (old_env )
30+
31+
32+ def create_copy (original : Any ) -> Any :
33+ if sys .version_info .major == 3 and sys .version_info .minor <= 6 :
34+ # NOTE: Unfortunately, copy.deepcopy doesn't work in Python 3.6.5.
35+ # --------------------
36+ # > rv = reductor(4)
37+ # E TypeError: can't pickle _thread.RLock objects
38+ # ../../.pyenv/versions/3.6.10/lib/python3.6/copy.py:169: TypeError
39+ # --------------------
40+ # As a workaround, this operation uses shallow copies in Python 3.6.
41+ # If your code modifies the shared data in threads / async functions, race conditions may arise.
42+ # Please consider upgrading Python major version to 3.7+ if you encounter some issues due to this.
43+ return copy .copy (original )
44+ else :
45+ return copy .deepcopy (original )
Original file line number Diff line number Diff line change 33
44from slack_sdk import WebClient
55from slack_sdk .web import base_client
6+ from tests .helpers import create_copy
7+ from tests .mock_web_api_server import cleanup_mock_web_api_server , setup_mock_web_api_server
68from tests .slack_sdk .web .mock_web_api_handler import MockHandler
7- from tests .mock_web_api_server import setup_mock_web_api_server , cleanup_mock_web_api_server
89
910
1011class TestWebClientLogger (unittest .TestCase ):
1112 test_logger : logging .Logger
1213
1314 def setUp (self ):
14- self .test_logger = logging .Logger ("test-logger" )
15+ self .test_logger = logging .getLogger ("test-logger" )
1516 setup_mock_web_api_server (self , MockHandler )
1617
1718 def tearDown (self ):
@@ -36,3 +37,13 @@ def test_logger_property_has_no_setter(self):
3637 )
3738 with self .assertRaises (AttributeError ):
3839 client .logger = self .test_logger
40+
41+ def test_ensure_web_client_with_logger_is_copyable (self ):
42+ client = WebClient (
43+ base_url = "http://localhost:8888" ,
44+ token = "xoxb-api_test" ,
45+ logger = self .test_logger ,
46+ )
47+ client_copy = create_copy (client )
48+ self .assertEqual (client .logger , self .test_logger )
49+ self .assertEqual (client_copy .logger , self .test_logger )
Original file line number Diff line number Diff line change 33
44from slack_sdk .web .async_client import AsyncWebClient
55from slack_sdk .web import async_base_client
6+ from tests .helpers import create_copy
67from tests .slack_sdk .web .mock_web_api_handler import MockHandler
78from tests .mock_web_api_server import setup_mock_web_api_server_async , cleanup_mock_web_api_server_async
89
@@ -11,7 +12,7 @@ class TestAsyncWebClientLogger(unittest.TestCase):
1112 test_logger : logging .Logger
1213
1314 def setUp (self ):
14- self .test_logger = logging .Logger ("test-logger" )
15+ self .test_logger = logging .getLogger ("test-logger" )
1516 setup_mock_web_api_server_async (self , MockHandler )
1617
1718 def tearDown (self ):
@@ -36,3 +37,13 @@ def test_logger_property_has_no_setter(self):
3637 )
3738 with self .assertRaises (AttributeError ):
3839 client .logger = self .test_logger
40+
41+ def test_ensure_async_web_client_with_logger_is_copyable (self ):
42+ client = AsyncWebClient (
43+ base_url = "http://localhost:8888" ,
44+ token = "xoxb-api_test" ,
45+ logger = self .test_logger ,
46+ )
47+ client_copy = create_copy (client )
48+ self .assertEqual (client .logger , self .test_logger )
49+ self .assertEqual (client_copy .logger , self .test_logger )
You can’t perform that action at this time.
0 commit comments