From ab48075a8c46d8006337754dea80bf8e8930a4b0 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Wed, 10 Mar 2010 15:01:18 +0100 Subject: * python/apt_pkgmodule.cc: - Treat '>>' and '>', '<<' and '<' as identical in check_dep (LP: #535667). * tests: - test_deps: Add tests for apt_pkg.CheckDep, apt_pkg.check_dep, apt_pkg.parse_depends and apt_pkg.parse_src_depends. --- python/apt_pkgmodule.cc | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'python/apt_pkgmodule.cc') diff --git a/python/apt_pkgmodule.cc b/python/apt_pkgmodule.cc index e3da1820..1885a84a 100644 --- a/python/apt_pkgmodule.cc +++ b/python/apt_pkgmodule.cc @@ -91,6 +91,35 @@ static PyObject *CheckDep(PyObject *Self,PyObject *Args) char *OpStr; unsigned int Op = 0; + if (PyArg_ParseTuple(Args,"sss",&A,&OpStr,&B) == 0) + return 0; + + if (strcmp(OpStr, ">") == 0) OpStr = ">>"; + if (strcmp(OpStr, "<") == 0) OpStr = "<<"; + if (*debListParser::ConvertRelation(OpStr,Op) != 0) + { + PyErr_SetString(PyExc_ValueError,"Bad comparision operation"); + return 0; + } + + if (_system == 0) + { + PyErr_SetString(PyExc_ValueError,"_system not initialized"); + return 0; + } + + return Py_BuildValue("i",_system->VS->CheckDep(A,Op,B)); +// return Py_BuildValue("i",pkgCheckDep(B,A,Op)); +} + +static char *doc_CheckDepOld = "CheckDep(PkgVer,DepOp,DepVer) -> int"; +static PyObject *CheckDepOld(PyObject *Self,PyObject *Args) +{ + char *A; + char *B; + char *OpStr; + unsigned int Op = 0; + if (PyArg_ParseTuple(Args,"sss",&A,&OpStr,&B) == 0) return 0; if (*debListParser::ConvertRelation(OpStr,Op) != 0) @@ -473,6 +502,7 @@ static PyMethodDef methods[] = // DEPRECATED #ifdef COMPAT_0_7 + {"CheckDep",CheckDepOld,METH_VARARGS,doc_CheckDepOld}, {"newConfiguration",newConfiguration,METH_VARARGS,doc_newConfiguration}, {"InitConfig",InitConfig,METH_VARARGS,doc_InitConfig}, {"InitSystem",InitSystem,METH_VARARGS,doc_InitSystem}, -- cgit v1.2.3 From b7a0d64a8037535fdb43785105ffce07b5d6089b Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Wed, 10 Mar 2010 15:57:58 +0100 Subject: python/apt_pkgmodule.cc: Fix apt_pkg.CompType to use CompTypeOld. --- python/apt_pkgmodule.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'python/apt_pkgmodule.cc') diff --git a/python/apt_pkgmodule.cc b/python/apt_pkgmodule.cc index 1885a84a..3d40832b 100644 --- a/python/apt_pkgmodule.cc +++ b/python/apt_pkgmodule.cc @@ -83,7 +83,14 @@ static PyObject *VersionCompare(PyObject *Self,PyObject *Args) return Py_BuildValue("i",_system->VS->DoCmpVersion(A,A+LenA,B,B+LenB)); } -static char *doc_CheckDep = "CheckDep(PkgVer,DepOp,DepVer) -> int"; +static char *doc_CheckDep = + "check_dep(pkg_ver: str, dep_op: str, dep_ver: str) -> bool\n\n" + "Check that the given requirement is fulfilled; i.e. that the version\n" + "string given by 'pkg_ver' matches the version string 'dep_ver' under\n" + "the condition specified by the operator 'dep_op' (<,<=,=,>=,>).\n\n" + "This functions returns True if 'pkg_ver' matches 'dep_ver' under the\n" + "condition 'dep_op'; e.g. this returns True:\n\n" + " apt_pkg.check_dep('1', '<=', '2')"; static PyObject *CheckDep(PyObject *Self,PyObject *Args) { char *A; @@ -108,11 +115,11 @@ static PyObject *CheckDep(PyObject *Self,PyObject *Args) return 0; } - return Py_BuildValue("i",_system->VS->CheckDep(A,Op,B)); -// return Py_BuildValue("i",pkgCheckDep(B,A,Op)); + return PyBool_FromLong(_system->VS->CheckDep(A,Op,B)); } -static char *doc_CheckDepOld = "CheckDep(PkgVer,DepOp,DepVer) -> int"; +#ifdef COMPAT_0_7 +static char *doc_CheckDepOld = "CheckDep(PkgVer,DepOp,DepVer) -> bool"; static PyObject *CheckDepOld(PyObject *Self,PyObject *Args) { char *A; @@ -134,9 +141,9 @@ static PyObject *CheckDepOld(PyObject *Self,PyObject *Args) return 0; } - return Py_BuildValue("i",_system->VS->CheckDep(A,Op,B)); -// return Py_BuildValue("i",pkgCheckDep(B,A,Op)); + return PyBool_FromLong(_system->VS->CheckDep(A,Op,B)); } +#endif static char *doc_UpstreamVersion = "UpstreamVersion(a) -> string"; static PyObject *UpstreamVersion(PyObject *Self,PyObject *Args) @@ -521,7 +528,6 @@ static PyMethodDef methods[] = {"ParseCommandLine",ParseCommandLine,METH_VARARGS,doc_ParseCommandLine}, {"VersionCompare",VersionCompare,METH_VARARGS,doc_VersionCompare}, - {"CheckDep",CheckDep,METH_VARARGS,doc_CheckDep}, {"UpstreamVersion",UpstreamVersion,METH_VARARGS,doc_UpstreamVersion}, {"ParseDepends",ParseDepends_old,METH_VARARGS,doc_ParseDepends}, -- cgit v1.2.3