Skip to content

Commit 7a859f4

Browse files
authored
Merge pull request #131 – Add tests and coverage for tracing
https://github.com/python-ldap/python-ldap/pull/131Add tests and coverage for tracing
2 parents f3868ea + 06800b3 commit 7a859f4

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ matrix:
4545
env:
4646
- TOXENV=py3-nosasltls
4747
- WITH_GCOV=1
48+
- python: 3.6
49+
env:
50+
- TOXENV=py3-trace
4851
- python: 3.6
4952
env: TOXENV=doc
5053
allow_failures:

Lib/ldap/__init__.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,20 @@
88

99
from ldap.pkginfo import __version__, __author__, __license__
1010

11+
import os
1112
import sys
1213

1314
if __debug__:
1415
# Tracing is only supported in debugging mode
16+
import atexit
1517
import traceback
16-
_trace_level = 0
17-
_trace_file = sys.stderr
18+
_trace_level = int(os.environ.get("PYTHON_LDAP_TRACE_LEVEL", 0))
19+
_trace_file = os.environ.get("PYTHON_LDAP_TRACE_FILE")
20+
if _trace_file is None:
21+
_trace_file = sys.stderr
22+
else:
23+
_trace_file = open(_trace_file, 'a')
24+
atexit.register(_trace_file.close)
1825
_trace_stack_limit = None
1926

2027
import _ldap

Lib/ldap/ldapobject.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ def __init__(
9696
trace_level=0,trace_file=None,trace_stack_limit=5,bytes_mode=None,
9797
bytes_strictness=None,
9898
):
99-
self._trace_level = trace_level
100-
self._trace_file = trace_file or sys.stdout
99+
self._trace_level = trace_level or ldap._trace_level
100+
self._trace_file = trace_file or ldap._trace_file
101101
self._trace_stack_limit = trace_stack_limit
102102
self._uri = uri
103103
self._ldap_object_lock = self._ldap_lock('opcall')
@@ -1123,7 +1123,8 @@ def __setstate__(self,d):
11231123
self._last_bind = getattr(SimpleLDAPObject, self._last_bind[0]), self._last_bind[1], self._last_bind[2]
11241124
self._ldap_object_lock = self._ldap_lock()
11251125
self._reconnect_lock = ldap.LDAPLock(desc='reconnect lock within %s' % (repr(self)))
1126-
self._trace_file = sys.stdout
1126+
# XXX cannot pickle file, use default trace file
1127+
self._trace_file = ldap._trace_file
11271128
self.reconnect(self._uri)
11281129

11291130
def _store_last_bind(self,method,*args,**kwargs):

Tests/t_ldapobject.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ def test103_reconnect_get_state(self):
690690
str('_retry_delay'): 60.0,
691691
str('_retry_max'): 1,
692692
str('_start_tls'): 0,
693-
str('_trace_level'): 0,
693+
str('_trace_level'): ldap._trace_level,
694694
str('_trace_stack_limit'): 5,
695695
str('_uri'): self.server.ldap_uri,
696696
str('bytes_mode'): l1.bytes_mode,

tox.ini

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
[tox]
77
# Note: when updating Python versions, also change setup.py and .travis.yml
8-
envlist = py27,py34,py35,py36,{py2,py3}-nosasltls,doc,coverage-report
8+
envlist = py27,py34,py35,py36,{py2,py3}-nosasltls,doc,py3-trace,coverage-report
99
minver = 1.8
1010

1111
[testenv]
@@ -49,6 +49,15 @@ passenv = {[testenv]passenv}
4949
setenv = {[testenv:py2-nosasltls]setenv}
5050
commands = {[testenv:py2-nosasltls]commands}
5151

52+
[testenv:py3-trace]
53+
basepython = python3
54+
deps = {[testenv]deps}
55+
passenv = {[testenv]passenv}
56+
setenv =
57+
PYTHON_LDAP_TRACE_LEVEL=9
58+
PYTHON_LDAP_TRACE_FILE={envtmpdir}/trace.log
59+
commands = {[testenv]commands}
60+
5261
[testenv:pypy]
5362
# PyPy doesn't have working setup.py test
5463
deps = pytest

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