From 08c59c38a2b117b2f2481cc6a02186b7df6305f2 Mon Sep 17 00:00:00 2001 From: Matthieu Patou Date: Mon, 7 Dec 2009 19:13:00 +0300 Subject: s4: Create unit tests for python "samba.xattr" module --- source4/scripting/python/pyxattr_tdb.c | 7 ++-- source4/scripting/python/samba/tests/xattr.py | 50 +++++++++++++++++++++++++++ source4/selftest/tests.sh | 1 + 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 source4/scripting/python/samba/tests/xattr.py (limited to 'source4') diff --git a/source4/scripting/python/pyxattr_tdb.c b/source4/scripting/python/pyxattr_tdb.c index 19b4f417a8..aa511fa5e7 100644 --- a/source4/scripting/python/pyxattr_tdb.c +++ b/source4/scripting/python/pyxattr_tdb.c @@ -33,12 +33,11 @@ static PyObject *py_is_xattr_supported(PyObject *self) { -/*#if !defined(HAVE_XATTR_SUPPORT) +#if !defined(HAVE_XATTR_SUPPORT) return Py_False; #else return Py_True; -#endif*/ - return Py_True; +#endif } static PyObject *py_wrap_setxattr(PyObject *self, PyObject *args) { @@ -105,7 +104,7 @@ static PyMethodDef py_xattr_methods[] = { "wrap_setxattr(filename,attribute,value)\n" "Set the given attribute to the given value on the given file." }, { "is_xattr_supported", (PyCFunction)py_is_xattr_supported, METH_NOARGS, - "Return true if xattr backed by tdb are supported on this system\n"}, + "Return true if xattr are supported on this system\n"}, { NULL } }; diff --git a/source4/scripting/python/samba/tests/xattr.py b/source4/scripting/python/samba/tests/xattr.py new file mode 100644 index 0000000000..f0e6f31515 --- /dev/null +++ b/source4/scripting/python/samba/tests/xattr.py @@ -0,0 +1,50 @@ +#!/usr/bin/python + +# Unix SMB/CIFS implementation. Tests for xattr manipulation +# Copyright (C) Matthieu Patou 2009 +# +# 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 . +# + +from samba.xattr import wrap_getxattr, wrap_setxattr, is_xattr_supported +from samba.dcerpc import xattr +from samba.ndr import ndr_pack, ndr_unpack +from unittest import TestCase +import random +import os + +class XattrTests(TestCase): + + def test_set_packeddata(self): + if is_xattr_supported(): + random.seed() + + tempf=os.path.join(os.environ("SELFTEST_PREFIX"),"pytests"+str(int(100000*random.random()))) + ntacl=xattr.NTACL() + ntacl.version = 1 + open(tempf, 'w').write("empty") + wrap_setxattr(tempf,"user.unittests",ndr_pack(ntacl)) + os.unlink(tempf) + + def test_set_and_get(self): + if is_xattr_supported(): + random.seed() + tempf=os.path.join(os.environ("SELFTEST_PREFIX"),"pytests"+str(int(100000*random.random()))) + reftxt="this is a test" + open(tempf, 'w').write("empty") + wrap_setxattr(tempf,"user.unittests",reftxt) + text = wrap_getxattr(tempf,"user.unittests") + self.assertEquals(text,reftxt) + os.unlink(tempf) + diff --git a/source4/selftest/tests.sh b/source4/selftest/tests.sh index 12e9b16f12..6bfe428392 100755 --- a/source4/selftest/tests.sh +++ b/source4/selftest/tests.sh @@ -465,6 +465,7 @@ plantest "ldap_schema.python" dc PYTHONPATH="$PYTHONPATH:../lib/subunit/python" plantest "ldap.possibleInferiors.python" dc $PYTHON $samba4srcdir/dsdb/samdb/ldb_modules/tests/possibleinferiors.py $CONFIGURATION ldap://\$SERVER -U\$USERNAME%\$PASSWORD -W \$DOMAIN plantest "ldap.secdesc.python" dc PYTHONPATH="$PYTHONPATH:../lib/subunit/python" $PYTHON $samba4srcdir/lib/ldb/tests/python/sec_descriptor.py $CONFIGURATION \$SERVER -U\$USERNAME%\$PASSWORD -W \$DOMAIN plantest "ldap.acl.python" dc PYTHONPATH="$PYTHONPATH:../lib/subunit/python" $PYTHON $samba4srcdir/lib/ldb/tests/python/acl.py $CONFIGURATION \$SERVER -U\$USERNAME%\$PASSWORD -W \$DOMAIN +plantest "xattr.python" none $SUBUNITRUN samba.tests.xattr plantest "blackbox.samba3dump" none $PYTHON $samba4srcdir/scripting/bin/samba3dump $samba4srcdir/../testdata/samba3 rm -rf $PREFIX/upgrade plantest "blackbox.upgrade" none $PYTHON $samba4srcdir/setup/upgrade_from_s3 $CONFIGURATION --targetdir=$PREFIX/upgrade $samba4srcdir/../testdata/samba3 ../testdata/samba3/smb.conf -- cgit