Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pydoll/browser/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ async def stop(self):
if await self._is_browser_running():
await self._execute_command(BrowserCommands.CLOSE)
self._browser_process_manager.stop_process()
await asyncio.sleep(1) # small delay to ensure browser is closed
self._temp_directory_manager.cleanup()
else:
raise exceptions.BrowserNotRunning('Browser is not running')
Expand Down
10 changes: 4 additions & 6 deletions pydoll/browser/managers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import os
import shutil
import subprocess
from contextlib import suppress
from tempfile import TemporaryDirectory
Expand Down Expand Up @@ -201,7 +200,7 @@ def __init__(self, temp_dir_factory=TemporaryDirectory):
temporary directories. Defaults to TemporaryDirectory.
"""
self._temp_dir_factory = temp_dir_factory
self._temp_dirs = []
self._temp_dirs: list[temp_dir_factory] = []

def create_temp_dir(self):
"""
Expand All @@ -213,7 +212,7 @@ def create_temp_dir(self):
Returns:
TemporaryDirectory: The created temporary directory instance.
"""
temp_dir = self._temp_dir_factory()
temp_dir = self._temp_dir_factory(delete=False) # avoid auto-deletion
self._temp_dirs.append(temp_dir)
return temp_dir

Expand All @@ -222,15 +221,14 @@ def cleanup(self):
Cleans up all temporary directories created by this manager.

This method removes all temporary directories created with
create_temp_dir, suppressing any OS errors that might occur
during deletion.
create_temp_dir.

Returns:
None
"""
for temp_dir in self._temp_dirs:
with suppress(OSError):
shutil.rmtree(temp_dir.name)
temp_dir.cleanup()


class BrowserOptionsManager:
Expand Down
13 changes: 7 additions & 6 deletions tests/test_browser_managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ def proxy_options():
def temp_manager():
mock_dir = MagicMock()
mock_dir.name = '/fake/temp/dir'
return TempDirectoryManager(temp_dir_factory=lambda: mock_dir)
mock_dir.cleanup = MagicMock()
return TempDirectoryManager(
temp_dir_factory=lambda **kwargs: mock_dir
)


@pytest.fixture
Expand Down Expand Up @@ -101,12 +104,10 @@ def test_cleanup_temp_dirs(temp_manager):
mock_dir2 = MagicMock()
temp_manager._temp_dirs = [mock_dir1, mock_dir2]

with patch('shutil.rmtree') as mock_rmtree:
temp_manager.cleanup()
temp_manager.cleanup()

assert mock_rmtree.call_count == 2
mock_rmtree.assert_any_call(mock_dir1.name)
mock_rmtree.assert_any_call(mock_dir2.name)
assert mock_dir1.cleanup.call_count == 1
assert mock_dir2.cleanup.call_count == 1


def test_initialize_options_with_none():
Expand Down
Loading