Skip to content
Snippets Groups Projects
Commit df3424e5 authored by Natanael Copa's avatar Natanael Copa
Browse files

python: move version to a submodule

Move the version methods and constats to a submodule so they get their
own namespace.
parent 9afe8dae
No related branches found
No related tags found
1 merge request!269python: move version to a submodule
Pipeline #287180 passed
......@@ -57,19 +57,44 @@ static PyObject *version_match(PyObject *self, PyObject *args) {
int result = apk_version_match(ver1, op, ver2);
return PyBool_FromLong(result);
}
static PyMethodDef ApkMethods[] = {
{"version_validate", version_validate, METH_VARARGS, "Validate a version string."},
{"version_compare", version_compare, METH_VARARGS, "Compare two version strings. Returns an integer"},
{"version_match", version_match, METH_VARARGS, "Match two version strings with a specified operation."},
static PyMethodDef ApkVersionMethods[] = {
{"validate", version_validate, METH_VARARGS, "Validate a version string."},
{"compare", version_compare, METH_VARARGS, "Compare two version strings. Returns an integer."},
{"match", version_match, METH_VARARGS, "Match two version strings with a specified operation."},
{NULL, NULL, 0, NULL}
};
static struct PyModuleDef apkversionmodule = {
PyModuleDef_HEAD_INIT,
"apk.version",
"Namespace for version-related functions in libapk.",
-1,
ApkVersionMethods
};
static PyObject *PyInit_apk_version(void) {
PyObject *version_module = PyModule_Create(&apkversionmodule);
if (!version_module) {
return NULL;
}
PyModule_AddIntConstant(version_module, "UNKNOWN", APK_VERSION_UNKNOWN);
PyModule_AddIntConstant(version_module, "EQUAL", APK_VERSION_EQUAL);
PyModule_AddIntConstant(version_module, "LESS", APK_VERSION_LESS);
PyModule_AddIntConstant(version_module, "GREATER", APK_VERSION_GREATER);
PyModule_AddIntConstant(version_module, "FUZZY", APK_VERSION_FUZZY);
PyModule_AddIntConstant(version_module, "CONFLICT", APK_VERSION_CONFLICT);
return version_module;
}
static struct PyModuleDef apkmodule = {
PyModuleDef_HEAD_INIT,
"apk", // Module name
"Python bindings for libapk version functions.",
"apk",
"Python bindings for libapk functions.",
-1,
ApkMethods
NULL
};
PyMODINIT_FUNC PyInit_apk(void) {
......@@ -78,12 +103,12 @@ PyMODINIT_FUNC PyInit_apk(void) {
return NULL;
}
PyModule_AddIntConstant(module, "VERSION_UNKNOWN", APK_VERSION_UNKNOWN);
PyModule_AddIntConstant(module, "VERSION_EQUAL", APK_VERSION_EQUAL);
PyModule_AddIntConstant(module, "VERSION_LESS", APK_VERSION_LESS);
PyModule_AddIntConstant(module, "VERSION_GREATER", APK_VERSION_GREATER);
PyModule_AddIntConstant(module, "VERSION_FUZZY", APK_VERSION_FUZZY);
PyModule_AddIntConstant(module, "VERSION_CONFLICT", APK_VERSION_CONFLICT);
PyObject *version_module = PyInit_apk_version();
if (!version_module) {
Py_DECREF(module);
return NULL;
}
PyModule_AddObject(module, "version", version_module);
return module;
}
import unittest
import apk
from apk import version
class TestApkModule(unittest.TestCase):
def test_version_validate(self):
self.assertTrue(apk.version_validate("1.0"))
self.assertFalse(apk.version_validate("invalid-version"))
self.assertTrue(version.validate("1.0"))
self.assertFalse(version.validate("invalid-version"))
def test_version_compare(self):
self.assertEqual(apk.version_compare("1.0", "1.0"), apk.VERSION_EQUAL)
self.assertEqual(apk.version_compare("1.0", "2.0"), apk.VERSION_LESS)
self.assertTrue(apk.version_compare("2.0", "1.0"), apk.VERSION_GREATER)
self.assertEqual(version.compare("1.0", "1.0"), version.EQUAL)
self.assertEqual(version.compare("1.0", "2.0"), version.LESS)
self.assertTrue(version.compare("2.0", "1.0"), version.GREATER)
def test_version_match(self):
self.assertTrue(apk.version_match("1.0", apk.VERSION_EQUAL, "1.0"))
self.assertFalse(apk.version_match("1.0", apk.VERSION_LESS, "1.0"))
self.assertTrue(version.match("1.0", version.EQUAL, "1.0"))
self.assertFalse(version.match("1.0", version.LESS, "1.0"))
if __name__ == "__main__":
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment