Author: jelmer
Date: 2007-11-19 18:20:55 +0000 (Mon, 19 Nov 2007)
New Revision: 26040

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26040

Log:
Add registry tests, run python tests when possible.
Added:
   branches/4.0-python/source/lib/registry/tests/bindings.py
Modified:
   branches/4.0-python/
   branches/4.0-python/.bzrignore
   branches/4.0-python/source/lib/registry/registry.i
   branches/4.0-python/source/libcli/util/errors.i
   branches/4.0-python/source/scripting/python/samba/provision.py
   branches/4.0-python/source/selftest/samba4_tests.sh


Changeset:

Property changes on: branches/4.0-python
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:file-ids
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/4.0-python/.bzrignore
===================================================================
--- branches/4.0-python/.bzrignore      2007-11-19 18:20:50 UTC (rev 26039)
+++ branches/4.0-python/.bzrignore      2007-11-19 18:20:55 UTC (rev 26040)
@@ -221,3 +221,12 @@
 libtalloc.so.*
 source/lib/registry/tests/proto.h
 source/dsdb/samdb/util.h
+source/auth/credentials/credentials.py
+source/auth/credentials/credentials.py
+source/bin/python/*
+source/lib/registry/registry.py
+source/lib/registry/registry.py
+source/auth/credentials/credentials_wrap.c
+source/lib/registry/registry_wrap.c
+source/lib/ldb/ldb_wrap.c
+source/lib/ldb/ldb.py

Modified: branches/4.0-python/source/lib/registry/registry.i
===================================================================
--- branches/4.0-python/source/lib/registry/registry.i  2007-11-19 18:20:50 UTC 
(rev 26039)
+++ branches/4.0-python/source/lib/registry/registry.i  2007-11-19 18:20:55 UTC 
(rev 26040)
@@ -60,6 +60,33 @@
                       struct auth_session_info *session_info,
                       struct cli_credentials *credentials);
 
+%typemap(in) const char ** {
+  /* Check if is a list */
+  if (PyList_Check($input)) {
+    int size = PyList_Size($input);
+    int i = 0;
+    $1 = (char **) malloc((size+1)*sizeof(const char *));
+    for (i = 0; i < size; i++) {
+      PyObject *o = PyList_GetItem($input,i);
+      if (PyString_Check(o))
+    $1[i] = PyString_AsString(PyList_GetItem($input,i));
+      else {
+    PyErr_SetString(PyExc_TypeError,"list must contain strings");
+    free($1);
+    return NULL;
+      }
+    }
+    $1[i] = 0;
+  } else {
+    PyErr_SetString(PyExc_TypeError,"not a list");
+    return NULL;
+  }
+}
+
+%typemap(freearg) const char ** {
+  free((char **) $1);
+}
+
 typedef struct registry_context {
     %extend {
 
@@ -67,19 +94,19 @@
     WERROR get_predefined_key_by_name(const char *name, 
                                       struct registry_key **key);
 
-    WERROR get_predefined_key(uint32_t hkey, struct registry_key **key);
+    WERROR get_predefined_key(uint32_t hkey_id, struct registry_key **key);
     WERROR apply_patchfile(const char *filename)
     {
         return reg_diff_apply(filename, $self);
     }
 
-    WERROR mount_hive(struct hive_key *hive_key, uint32_t key_id,
+    WERROR mount_hive(struct hive_key *hive_key, uint32_t hkey_id,
                       const char **elements=NULL);
     }
 
     %pythoncode {
-        def mount(self, path, key_id, elements=[]):
-            self.mount_hive(Hive(path), key_id, elements)
+        def mount(self, path, hkey_id, elements=[]):
+            self.mount_hive(Hive(path), hkey_id, elements)
     }
 } reg;
 

Added: branches/4.0-python/source/lib/registry/tests/bindings.py
===================================================================
--- branches/4.0-python/source/lib/registry/tests/bindings.py   2007-11-19 
18:20:50 UTC (rev 26039)
+++ branches/4.0-python/source/lib/registry/tests/bindings.py   2007-11-19 
18:20:55 UTC (rev 26040)
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+
+# Unix SMB/CIFS implementation.
+# Copyright (C) Jelmer Vernooij <[EMAIL PROTECTED]> 2007
+#   
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#   
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#   
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import unittest
+import registry
+
+class HelperTests(unittest.TestCase):
+    def test_predef_to_name(self):
+        self.assertEquals("HKEY_LOCAL_MACHINE", 
+                          registry.reg_get_predef_name(0x80000002))
+
+    def test_str_regtype(self):
+        self.assertEquals("REG_DWORD", registry.str_regtype(4))
+
+
+class RegistryTests(unittest.TestCase):
+    def test_new(self):
+        self.registry = registry.Registry()

Modified: branches/4.0-python/source/libcli/util/errors.i
===================================================================
--- branches/4.0-python/source/libcli/util/errors.i     2007-11-19 18:20:50 UTC 
(rev 26039)
+++ branches/4.0-python/source/libcli/util/errors.i     2007-11-19 18:20:55 UTC 
(rev 26040)
@@ -22,6 +22,8 @@
     if (!W_ERROR_IS_OK($1)) {
         PyObject *obj = Py_BuildValue("(i,s)", $1.v, win_errstr($1));
         PyErr_SetObject(PyExc_RuntimeError, obj);
+    } else if ($result == NULL) {
+        $result = Py_None;
     }
 };
 
@@ -29,6 +31,8 @@
     if (NT_STATUS_IS_ERR($1)) {
         PyObject *obj = Py_BuildValue("(i,s)", $1.v, nt_errstr($1));
         PyErr_SetObject(PyExc_RuntimeError, obj);
+    } else if ($result == NULL) {
+        $result = Py_None;
     }
 };
 

Modified: branches/4.0-python/source/scripting/python/samba/provision.py
===================================================================
--- branches/4.0-python/source/scripting/python/samba/provision.py      
2007-11-19 18:20:50 UTC (rev 26039)
+++ branches/4.0-python/source/scripting/python/samba/provision.py      
2007-11-19 18:20:55 UTC (rev 26040)
@@ -467,7 +467,7 @@
     message("Setting up registry")
     import registry
     reg = registry.Registry()
-    reg.mount(paths.hklm, registry.HKEY_LOCAL_MACHINE)
+    reg.mount(paths.hklm, registry.HKEY_LOCAL_MACHINE, [])
     reg.apply_patchfile(os.path.join(setup_dir, "provision.reg"))
 
     message("Setting up templates into %s" % paths.templates)

Modified: branches/4.0-python/source/selftest/samba4_tests.sh
===================================================================
--- branches/4.0-python/source/selftest/samba4_tests.sh 2007-11-19 18:20:50 UTC 
(rev 26039)
+++ branches/4.0-python/source/selftest/samba4_tests.sh 2007-11-19 18:20:55 UTC 
(rev 26040)
@@ -283,6 +283,15 @@
 # export PYTHONPATH=lib/tdb/swig:lib/ldb/swig:scripting/swig:$PYTHONPATH
 # export LD_LIBRARY_PATH=bin:$LD_LIBRARY_PATH
 
+# if trial is available, run the python tests:
+if which trial 2>/dev/null >/dev/null
+then
+       plantest "ldb.python" none PYTHONPATH=bin/python trial 
lib/ldb/tests/python/api.py
+       plantest "credentials.python" none PYTHONPATH=bin/python trial 
auth/credentials/tests/bindings.py
+       #plantest "tdb.python" none PYTHONPATH=bin/python trial 
lib/tdb/python/tests/simple.py
+       plantest "registry.python" none PYTHONPATH=bin/python trial 
lib/registry/tests/bindings.py
+fi
+
 # plantest "tdb wrappers" scripting/swig/torture/torture_tdb.py
 # plantest "ldb wrappers" scripting/swig/torture/torture_ldb.py
 

Reply via email to