Skip to content

pytest 3.0.0+ and python-ldap #1869

@aoodham

Description

@aoodham

Hi,

We've noticed an issue when using py.test on modules which have a dependency on python-ldap.
The stack trace is:

09:45:24 /usr/lib/python2.7/site-packages/py/_path/common.py:332: in visit
09:45:24     for x in Visitor(fil, rec, ignore, bf, sort).gen(self):
09:45:24 /usr/lib/python2.7/site-packages/py/_path/common.py:368: in gen
09:45:24     if p.check(dir=1) and (rec is None or rec(p))])
09:45:24 /usr/lib/python2.7/site-packages/_pytest/main.py:672: in _recurse
09:45:24     ihook = self.gethookproxy(path)
09:45:24 /usr/lib/python2.7/site-packages/_pytest/main.py:575: in gethookproxy
09:45:24     my_conftestmodules = pm._getconftestmodules(fspath)
09:45:24 /usr/lib/python2.7/site-packages/_pytest/config.py:315: in _getconftestmodules
09:45:24     mod = self._importconftest(conftestpath)
09:45:24 /usr/lib/python2.7/site-packages/_pytest/config.py:340: in _importconftest
09:45:24     raise ConftestImportFailure(conftestpath, sys.exc_info())
09:45:24 E   ConftestImportFailure: SyntaxError('invalid syntax', ('<string>', 1, 1, '@py_builtins'))
09:45:24 E     File "/usr/lib/python2.7/site-packages/_pytest/assertion/rewrite.py", line 207, in load_module
09:45:24 E       py.builtin.exec_(co, mod.__dict__)
09:45:24 E     File "/usr/lib/python2.7/site-packages/py/_builtin.py", line 221, in exec_
09:45:24 E       exec2(obj, globals, locals)
09:45:24 E     File "<string>", line 7, in exec2
09:45:24 E     File "/home/jenkins/workspace/cloud-explorer/software/nexus/cloud_explorer/python/sl/test_explorer/explorer_unit_test/conftest.py", line 6, in <module>
09:45:24 E       from sl.explorer import upgrade
09:45:24 E     File "/usr/lib/python2.7/site-packages/_pytest/assertion/rewrite.py", line 207, in load_module
09:45:24 E       py.builtin.exec_(co, mod.__dict__)
09:45:24 E     File "/usr/lib/python2.7/site-packages/py/_builtin.py", line 221, in exec_
09:45:24 E       exec2(obj, globals, locals)
09:45:24 E     File "<string>", line 7, in exec2
09:45:24 E     File "/home/jenkins/workspace/cloud-explorer/software/nexus/cloud_explorer/python/sl/explorer/upgrade.py", line 9, in <module>
09:45:24 E       import ldap
09:45:24 E     File "/usr/lib64/python2.7/site-packages/ldap/__init__.py", line 85, in <module>
09:45:24 E       from functions import open,initialize,init,get_option,set_option,escape_str
09:45:24 E     File "/usr/lib/python2.7/site-packages/_pytest/assertion/rewrite.py", line 207, in load_module
09:45:24 E       py.builtin.exec_(co, mod.__dict__)
09:45:24 E     File "/usr/lib/python2.7/site-packages/py/_builtin.py", line 221, in exec_
09:45:24 E       exec2(obj, globals, locals)
09:45:24 E     File "<string>", line 7, in exec2
09:45:24 E     File "/usr/lib64/python2.7/site-packages/ldap/functions.py", line 36, in <module>
09:45:24 E       from ldap.ldapobject import LDAPObject
09:45:24 E     File "/usr/lib/python2.7/site-packages/_pytest/assertion/rewrite.py", line 207, in load_module
09:45:24 E       py.builtin.exec_(co, mod.__dict__)
09:45:24 E     File "/usr/lib/python2.7/site-packages/py/_builtin.py", line 221, in exec_
09:45:24 E       exec2(obj, globals, locals)
09:45:24 E     File "<string>", line 7, in exec2
09:45:24 E     File "/usr/lib64/python2.7/site-packages/ldap/ldapobject.py", line 37, in <module>
09:45:24 E       from ldap.schema import SCHEMA_ATTRS
09:45:24 E     File "/usr/lib64/python2.7/site-packages/ldap/schema/__init__.py", line 11, in <module>
09:45:24 E       from ldap.schema.subentry import SubSchema,SCHEMA_ATTRS,SCHEMA_CLASS_MAPPING,SCHEMA_ATTR_MAPPING,urlfetch
09:45:24 E     File "/usr/lib/python2.7/site-packages/_pytest/assertion/rewrite.py", line 207, in load_module
09:45:24 E       py.builtin.exec_(co, mod.__dict__)
09:45:24 E     File "/usr/lib/python2.7/site-packages/py/_builtin.py", line 221, in exec_
09:45:24 E       exec2(obj, globals, locals)
09:45:24 E     File "<string>", line 7, in exec2
09:45:24 E     File "/usr/lib64/python2.7/site-packages/ldap/schema/subentry.py", line 19, in <module>
09:45:24 E       o = eval(_name)

This is running on a Fedora 20 machine with py.test 3.0.1 and python-ldap version 2.4.17. Although I can repeat the same on a fedora 23 machine running py.test 3.0.1/ 3.0.0 and python ldap 2.4.17/27
I can't seem to recreate this with a simple minimal example. Just having a test which references a conftest which imports ldap doesn't seem to work - so something strange must be happening, but I don't know what else to try.


(edited by @The-Compiler to add code symbols around the stacktrace)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions