1
0
mirror of https://github.com/samba-team/samba.git synced 2025-09-02 01:49:29 +03:00

r26079: Some cleanups in the old SWIG wrappers: - remove old torture tests for LDB (replaced by a much more extensive test) - moved tool to bin directory

(This used to be commit d6d3b0ad7a)
This commit is contained in:
Jelmer Vernooij
2007-11-21 12:31:43 +01:00
committed by Stefan Metzmacher
parent d1d958caa1
commit e5e2b64449
4 changed files with 13 additions and 110 deletions

View File

@ -6,26 +6,9 @@ Instructions for building:
1. Run configure with the --with-python option to enable python 1. Run configure with the --with-python option to enable python
extensions. extensions.
2. Edit the script/build_idl.sh script to pass the --swig option to 2. Run 'make idl_full swig' to build extensions.
pidl. Here's a patch:
Index: script/build_idl.sh 3. At some stage there will be a proper system for installing the
===================================================================
--- script/build_idl.sh (revision 2413)
+++ script/build_idl.sh (working copy)
@@ -4,7 +4,7 @@
[ -d librpc/gen_ndr ] || mkdir -p librpc/gen_ndr || exit 1
-PIDL="$PERL ./build/pidl/pidl.pl --output librpc/gen_ndr/ndr_ --parse --header --parser --server"
+PIDL="$PERL ./build/pidl/pidl.pl --output librpc/gen_ndr/ndr_ --parse --header --parser --server --swig"
TABLES="$PERL ./build/pidl/tables.pl --output librpc/gen_ndr/tables"
if [ x$FULLBUILD = xFULL ]; then
3. Run 'make idl_full swig' to build extensions.
4. At some stage there will be a proper system for installing the
extensions, but right now it's easier to run them in place. Set extensions, but right now it's easier to run them in place. Set
your PYTHONPATH to include the modules. From the Samba source your PYTHONPATH to include the modules. From the Samba source
directory, run: directory, run:
@ -34,4 +17,4 @@ Index: script/build_idl.sh
Now you can go nuts and use the extensions. Check the Now you can go nuts and use the extensions. Check the
scripting/swig/torture directory for a testsuite. There will scripting/swig/torture directory for a testsuite. There will
hopefully be a bunch of usage examples somewhere. hopefully be a bunch of usage examples somewhere.

View File

@ -1,16 +1,19 @@
# Swig extensions # Swig extensions
swig: lib/tdb/swig/_tdb.$(SHLIBEXT) lib/ldb/swig/_ldb.$(SHLIBEXT) \ swig: pythonmods
libcli/swig/_libcli_nbt.$(SHLIBEXT) libcli/swig/_libcli_smb.$(SHLIBEXT)
pythonmods: $(PYTHON_DSOS)
.SUFFIXES: _wrap.c .i .SUFFIXES: _wrap.c .i
.i_wrap.c: .i_wrap.c:
swig -I$(srcdir)/scripting/swig -python $< swig -Wall -I$(srcdir)/scripting/swig -python $<
clean:: clean::
@echo "Removing SWIG output files" @echo "Removing SWIG output files"
@-rm -f scripting/swig/tdb.pyc scripting/swig/tdb.py @-rm -f bin/python/*
# FIXME: Remove _wrap.c files
# Swig testing PYDOCTOR_MODULES=bin/python/ldb.py bin/python/auth.py bin/python/credentials.py bin/python/registry.py
swigtest: swig
./selftest/test_swig.sh pydoctor::
LD_LIBRARY_PATH=bin/shared PYTHONPATH=bin/python pydoctor --make-html --docformat=restructedtext --add-package scripting/python/samba/ $(addprefix --add-module , $(PYDOCTOR_MODULES))

View File

@ -1,83 +0,0 @@
#!/usr/bin/python
#
# A torture test for the Python Ldb bindings. Also a short guide on
# how the API works.
#
from Ldb import *
# Helpers
def t(cond, msg):
"""Test a condition."""
if not cond:
raise RuntimeError('FAILED: %s' % msg)
#
# Torture LdbMessage
#
m = LdbMessage()
# Empty message
t(m.keys() == [], 'empty msg')
t(m.dn == None, 'empty dn')
t(m.sanity_check() == LDB_ERR_INVALID_DN_SYNTAX, 'sanity check')
# Test invalid dn
try:
m.dn = 'invalid dn'
except LdbError, arg:
if arg[0] != LDB_ERR_INVALID_DN_SYNTAX:
raise
else:
t(False, 'LdbError not raised')
# Test valid dn
m.dn = 'name=spotty'
t(m.dn == 'name=spotty', 'specified dn')
t(m.sanity_check() == LDB_SUCCESS, 'sanity check')
# Test some single-valued attributes
m['animal'] = 'dog'
m['name'] = 'spotty'
t(m.keys() == ['animal', 'name'], 'keys() test failed')
t(m.values() == [['dog'], ['spotty']], 'values() test failed')
t(m.items() == [('animal', ['dog']), ('name', ['spotty'])],
'items() test failed')
t(m.sanity_check() == LDB_SUCCESS, 'sanity check')
m['animal'] = 'canine'
t(m['animal'] == ['canine'], 'replace value failed')
# Test a multi-valued attribute
names = ['spotty', 'foot']
m['name'] = names
t(m['name'] == names, 'multi-valued attr failed')
t(m.sanity_check() == LDB_SUCCESS, 'sanity check')
# Test non-string attributes
try:
m['foo'] = 42
except TypeError:
pass
else:
t(False, 'TypeError not raised')
#
# Torture Ldb
#
l = Ldb('foo.ldb')