[SCM] Samba Shared Repository - branch master updated
Andrew Bartlett
abartlet at samba.org
Sat May 20 00:27:02 UTC 2017
The branch, master has been updated
via 1116ee1 selftest: Actually run python3 tests during the selftest
via e99c0e6 python3:tests: Fix Python 3 test issues
via 40e409b python3: Use "y#" instead of "s#" for binary data in PyArg_ParseTuple
from b691f6d s3: smbd: Fix open_files.idl to correctly ignore share_mode_lease *lease in share_mode_entry.
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 1116ee1c5c47b405666a0d52f646d05613a803ab
Author: Andrew Bartlett <abartlet at samba.org>
Date: Tue May 2 12:55:45 2017 +0200
selftest: Actually run python3 tests during the selftest
These previously only ran if the develper was using EXTRA_PYTHON in their
OS environment
Signed-off-by: Andrew Bartlett <abartlet at samba.org>
Reviewed-by: Andreas Schneider <asn at samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
Autobuild-Date(master): Sat May 20 02:26:33 CEST 2017 on sn-devel-144
commit e99c0e6503d5cfa048c62b0a6d954d3e7504ff62
Author: Petr Viktorin <pviktori at redhat.com>
Date: Wed May 3 19:11:03 2017 +0200
python3:tests: Fix Python 3 test issues
- Forgotten text strings that should be binary
- Inverted PY3 condition
Signed-off-by: Petr Viktorin <pviktori at redhat.com>
Reviewed-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
commit 40e409bf9e89a163c771b2a58493d2c1b496fae7
Author: Petr Viktorin <pviktori at redhat.com>
Date: Wed May 3 16:57:07 2017 +0200
python3: Use "y#" instead of "s#" for binary data in PyArg_ParseTuple
The "s#" format code for PyArg_ParseTupleAndKeywords and Py_BuildValue
converts a char* and size to/from Python str (with utf-8 encoding under
Python 3).
In some cases, we want bytes (str on Python 2, bytes on 3) instead. The
code for this is "y#" in Python 3, but that is not available in 2.
Introduce a PYARG_BYTES_LEN macro that expands to "s#" or "y#", and use
that in:
- credentials.get_ntlm_response (for input and output)
- ndr_unpack argument in PIDL generated code
Signed-off-by: Petr Viktorin <pviktori at redhat.com>
Reviewed-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Andrew Bartlett <abartlet at samba.org>
-----------------------------------------------------------------------
Summary of changes:
auth/credentials/pycredentials.c | 6 ++++--
pidl/lib/Parse/Pidl/Samba4/Python.pm | 6 +++---
python/py3compat.h | 8 ++++++++
python/samba/tests/core.py | 4 ++--
python/samba/tests/dcerpc/misc.py | 2 +-
selftest/selftesthelpers.py | 2 +-
selftest/wscript | 4 ++++
7 files changed, 23 insertions(+), 9 deletions(-)
Changeset truncated at 500 lines:
diff --git a/auth/credentials/pycredentials.c b/auth/credentials/pycredentials.c
index 7f03f1f..283a73f 100644
--- a/auth/credentials/pycredentials.c
+++ b/auth/credentials/pycredentials.c
@@ -96,7 +96,8 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
tv_now = timeval_current();
server_timestamp = timeval_to_nttime(&tv_now);
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "is#|s#K",
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs,
+ "i" PYARG_BYTES_LEN "|" PYARG_BYTES_LEN "K",
discard_const_p(char *, kwnames),
&flags, &challenge, &target_info.data, &target_info.length)) {
return NULL;
@@ -116,7 +117,8 @@ static PyObject *py_creds_get_ntlm_response(PyObject *self, PyObject *args, PyOb
return NULL;
}
- ret = Py_BuildValue("{siss#ss#ss#ss#}",
+ ret = Py_BuildValue("{sis" PYARG_BYTES_LEN "s" PYARG_BYTES_LEN
+ "s" PYARG_BYTES_LEN "s" PYARG_BYTES_LEN "}",
"flags", flags,
"lm_reponse",
(const char *)lm_response.data, lm_response.length,
diff --git a/pidl/lib/Parse/Pidl/Samba4/Python.pm b/pidl/lib/Parse/Pidl/Samba4/Python.pm
index e40f4f1..79beb2e 100644
--- a/pidl/lib/Parse/Pidl/Samba4/Python.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/Python.pm
@@ -320,7 +320,7 @@ sub PythonStruct($$$$$$)
$self->pidl("PyObject *allow_remaining_obj = NULL;");
$self->pidl("bool allow_remaining = false;");
$self->pidl("");
- $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"s#|O:__ndr_unpack__\",");
+ $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, PYARG_BYTES_LEN \"|O:__ndr_unpack__\",");
$self->indent;
$self->pidl("discard_const_p(char *, kwnames),");
$self->pidl("&blob.data, &blob_length,");
@@ -705,7 +705,7 @@ sub PythonFunctionStruct($$$$)
$self->pidl("PyObject *allow_remaining_obj = NULL;");
$self->pidl("bool allow_remaining = false;");
$self->pidl("");
- $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"s#|OOO:__ndr_unpack_in__\",");
+ $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, PYARG_BYTES_LEN \"|OOO:__ndr_unpack_in__\",");
$self->indent;
$self->pidl("discard_const_p(char *, kwnames),");
$self->pidl("&blob.data, &blob_length,");
@@ -753,7 +753,7 @@ sub PythonFunctionStruct($$$$)
$self->pidl("PyObject *allow_remaining_obj = NULL;");
$self->pidl("bool allow_remaining = false;");
$self->pidl("");
- $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, \"s#|OOO:__ndr_unpack_out__\",");
+ $self->pidl("if (!PyArg_ParseTupleAndKeywords(args, kwargs, PYARG_BYTES_LEN \"|OOO:__ndr_unpack_out__\",");
$self->indent;
$self->pidl("discard_const_p(char *, kwnames),");
$self->pidl("&blob.data, &blob_length,");
diff --git a/python/py3compat.h b/python/py3compat.h
index c7724c9..f54b391 100644
--- a/python/py3compat.h
+++ b/python/py3compat.h
@@ -98,6 +98,10 @@
PyMODINIT_FUNC PyInit_ ## name(void); \
PyMODINIT_FUNC PyInit_ ## name(void)
+/* PyArg_ParseTuple/Py_BuildValue argument */
+
+#define PYARG_BYTES_LEN "y#"
+
#else
/***** Python 2 *****/
@@ -140,6 +144,10 @@
#define PyBytes_ConcatAndDel PyString_ConcatAndDel
#define _PyBytes_Resize _PyString_Resize
+/* PyArg_ParseTuple/Py_BuildValue argument */
+
+#define PYARG_BYTES_LEN "s#"
+
/* Module init */
#define PyModuleDef_HEAD_INIT 0
diff --git a/python/samba/tests/core.py b/python/samba/tests/core.py
index 7fb3698..504d458 100644
--- a/python/samba/tests/core.py
+++ b/python/samba/tests/core.py
@@ -52,8 +52,8 @@ class SubstituteVarTestCase(TestCase):
class ArcfourTestCase(TestCase):
def test_arcfour_direct(self):
- key = '12345678'
- plain = 'abcdefghi'
+ key = b'12345678'
+ plain = b'abcdefghi'
crypt_expected = b'\xda\x91Z\xb0l\xd7\xb9\xcf\x99'
crypt_calculated = arcfour_encrypt(key, plain)
self.assertEquals(crypt_expected, crypt_calculated)
diff --git a/python/samba/tests/dcerpc/misc.py b/python/samba/tests/dcerpc/misc.py
index 68654a7..2ec0950 100644
--- a/python/samba/tests/dcerpc/misc.py
+++ b/python/samba/tests/dcerpc/misc.py
@@ -25,7 +25,7 @@ text1 = "76f53846-a7c2-476a-ae2c-20e2b80d7b34"
text2 = "344edffa-330a-4b39-b96e-2c34da52e8b1"
-if not PY3:
+if PY3:
# cmp() exists only in Python 2
def cmp(a, b):
return (a > b) - (a < b)
diff --git a/selftest/selftesthelpers.py b/selftest/selftesthelpers.py
index 6b22a16..8b885b5 100644
--- a/selftest/selftesthelpers.py
+++ b/selftest/selftesthelpers.py
@@ -140,7 +140,7 @@ def planpythontestsuite(env, module, name=None, extra_path=[], py3_compatible=Fa
if py3_compatible and extra_python is not None:
# Plan one more test for Python 3 compatible module
args[0] = extra_python
- plantestsuite_loadlist(name, env, args)
+ plantestsuite_loadlist(name + ".python3", env, args)
def get_env_torture_options():
diff --git a/selftest/wscript b/selftest/wscript
index 2299195..d8094af 100644
--- a/selftest/wscript
+++ b/selftest/wscript
@@ -209,6 +209,10 @@ def cmd_testonly(opt):
env.TESTLISTS = '--testlist=%r' % Options.options.TEST_LIST
elif Options.options.PERF_TEST:
env.TESTLISTS = '--testlist="${PYTHON} ${srcdir}/selftest/perf_tests.py|" '
+ elif CONFIG_SET(opt, 'EXTRA_PYTHON'):
+ env.TESTLISTS = ('--testlist="EXTRA_PYTHON=${EXTRA_PYTHON} ${PYTHON} ${srcdir}/selftest/tests.py|" ' +
+ '--testlist="EXTRA_PYTHON=${EXTRA_PYTHON} ${PYTHON} ${srcdir}/source3/selftest/tests.py|" ' +
+ '--testlist="EXTRA_PYTHON=${EXTRA_PYTHON} ${PYTHON} ${srcdir}/source4/selftest/tests.py|"')
else:
env.TESTLISTS = ('--testlist="${PYTHON} ${srcdir}/selftest/tests.py|" ' +
'--testlist="${PYTHON} ${srcdir}/source3/selftest/tests.py|" ' +
--
Samba Shared Repository
More information about the samba-cvs
mailing list