Skip to content

Commit 2a6bcd4

Browse files
authored
Merge pull request python-ldap#198 – Make SlapdObject a context manager
python-ldap#198
2 parents e5492c7 + ca705aa commit 2a6bcd4

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

Lib/slapdtest/_slapdtest.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,14 @@ class SlapdObject(object):
164164
165165
When a reference to an instance of this class is lost, the slapd
166166
server is shut down.
167+
168+
An instance can be used as a context manager. When exiting the context
169+
manager, the slapd server is shut down and the temporary data store is
170+
removed.
171+
172+
.. versionchanged:: 3.1
173+
174+
Added context manager functionality
167175
"""
168176
slapd_conf_template = SLAPD_CONF_TEMPLATE
169177
database = 'mdb'
@@ -553,6 +561,13 @@ def ldapdelete(self, dn, recursive=False, extra_args=None):
553561
extra_args.append(dn)
554562
self._cli_popen(self.PATH_LDAPDELETE, extra_args=extra_args)
555563

564+
def __enter__(self):
565+
self.start()
566+
return self
567+
568+
def __exit__(self, exc_type, exc_value, traceback):
569+
self.stop()
570+
556571

557572
class SlapdTestCase(unittest.TestCase):
558573
"""

Tests/t_slapdobject.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import unittest
2+
3+
import slapdtest
4+
5+
6+
class TestSlapdObject(unittest.TestCase):
7+
def test_context_manager(self):
8+
with slapdtest.SlapdObject() as server:
9+
self.assertIsNotNone(server._proc)
10+
self.assertIsNone(server._proc)
11+
12+
def test_context_manager_after_start(self):
13+
server = slapdtest.SlapdObject()
14+
server.start()
15+
self.assertIsNotNone(server._proc)
16+
with server:
17+
self.assertIsNotNone(server._proc)
18+
self.assertIsNone(server._proc)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy