Author: jelmer Date: 2007-10-14 22:28:45 +0000 (Sun, 14 Oct 2007) New Revision: 25639
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=25639 Log: Test rename, search scopes, fix segfault, support optional parameter to LdbDn. Modified: branches/4.0-python/ branches/4.0-python/source/lib/ldb/swig/ldb.i branches/4.0-python/source/lib/ldb/tests/python/api.py Changeset: Property changes on: branches/4.0-python ___________________________________________________________________ Name: bzr:revision-info ...skipped... Name: bzr:revision-id:v3-trunk0 ...skipped... Modified: branches/4.0-python/source/lib/ldb/swig/ldb.i =================================================================== --- branches/4.0-python/source/lib/ldb/swig/ldb.i 2007-10-14 20:50:17 UTC (rev 25638) +++ branches/4.0-python/source/lib/ldb/swig/ldb.i 2007-10-14 22:28:45 UTC (rev 25639) @@ -1,4 +1,4 @@ -/* +/* Unix SMB/CIFS implementation. Swig interface to ldb. @@ -179,7 +179,11 @@ ldb_dn *dn; %extend { - ldb_msg() { return ldb_msg_new(NULL); } + ldb_msg(ldb_dn *dn = NULL) { + ldb_msg *ret = ldb_msg_new(NULL); + ret->dn = talloc_reference(ret, dn); + return ret; + } ~ldb_msg() { talloc_free($self); } #ifdef SWIGPYTHON @@ -207,7 +211,7 @@ void __setitem__(const char *attr_name, PyObject *set_obj) { - struct ldb_message_element *me = talloc(NULL, + struct ldb_message_element *me = talloc($self, struct ldb_message_element); ldb_msg_remove_attr($self, attr_name); me->flags =0 ; @@ -231,7 +235,6 @@ me->values[0].data = PyString_AsString(set_obj); } ldb_msg_add($self, me, 0); - talloc_free(me); } unsigned int __len__() { return $self->num_elements; } Modified: branches/4.0-python/source/lib/ldb/tests/python/api.py =================================================================== --- branches/4.0-python/source/lib/ldb/tests/python/api.py 2007-10-14 20:50:17 UTC (rev 25638) +++ branches/4.0-python/source/lib/ldb/tests/python/api.py 2007-10-14 22:28:45 UTC (rev 25639) @@ -23,6 +23,11 @@ l = ldb.Ldb("foo.tdb") self.assertEquals(len(l.search()), 1) + def test_search_scope_base(self): + l = ldb.Ldb("foo.tdb") + self.assertEquals(len(l.search(ldb.Dn(l, "dc=foo"), + ldb.LDB_SCOPE_ONELEVEL)), 0) + def test_delete(self): l = ldb.Ldb("foo.tdb") self.assertRaises(RuntimeError, lambda: l.delete(ldb.Dn(l, "dc=foo"))) @@ -47,11 +52,23 @@ l = ldb.Ldb("foo.tdb") m = ldb.Message() m.dn = ldb.Dn(l, "dc=foo") - m["bla"] = "bla" + m["bla"] = set("bla") self.assertEquals(len(l.search()), 1) l.add(m) self.assertEquals(len(l.search()), 2) + l.delete(ldb.Dn(l, "dc=foo")) + def test_rename(self): + l = ldb.Ldb("foo.tdb") + m = ldb.Message() + m.dn = ldb.Dn(l, "dc=foo") + m["bla"] = set("bla") + self.assertEquals(len(l.search()), 1) + l.add(m) + l.rename(ldb.Dn(l, "dc=foo"), ldb.Dn(l, "dc=bar")) + self.assertEquals(len(l.search()), 2) + l.delete(ldb.Dn(l, "dc=bar")) + class DnTests(unittest.TestCase): def setUp(self): self.ldb = ldb.Ldb("foo.tdb") @@ -133,6 +150,10 @@ def setUp(self): self.msg = ldb.Message() + def test_init_dn(self): + self.msg = ldb.Message(ldb.Dn(ldb.Ldb(), "dc=foo")) + self.assertEquals("dc=foo", str(self.msg.dn)) + def test_len(self): self.assertEquals(0, len(self.msg))
