From c170bb593b6f60eb0dda34bcd4aed20a0b6a39af Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 14 Jan 2020 10:48:53 +0100 Subject: [PATCH 1/6] vici: List newer Python versions in setup.py --- src/libcharon/plugins/vici/python/setup.py.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libcharon/plugins/vici/python/setup.py.in b/src/libcharon/plugins/vici/python/setup.py.in index 62b0c5899..9ef0011d8 100644 --- a/src/libcharon/plugins/vici/python/setup.py.in +++ b/src/libcharon/plugins/vici/python/setup.py.in @@ -24,6 +24,10 @@ setup( "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", "Topic :: Security", "Topic :: Software Development :: Libraries", ) From d5153c5897ba80104582f6c195d159b40e880605 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 14 Jan 2020 10:49:47 +0100 Subject: [PATCH 2/6] vici: Add tox.ini to run tests with tox Some of the interpreters might not be available on the host system, use --skip-missing-interpreters to not fail in that case. --- src/libcharon/plugins/vici/python/.gitignore | 1 + src/libcharon/plugins/vici/python/Makefile.am | 1 + src/libcharon/plugins/vici/python/tox.ini | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 src/libcharon/plugins/vici/python/tox.ini diff --git a/src/libcharon/plugins/vici/python/.gitignore b/src/libcharon/plugins/vici/python/.gitignore index 5c4589841..d4813d691 100644 --- a/src/libcharon/plugins/vici/python/.gitignore +++ b/src/libcharon/plugins/vici/python/.gitignore @@ -1,3 +1,4 @@ +.tox *.pyc build dist diff --git a/src/libcharon/plugins/vici/python/Makefile.am b/src/libcharon/plugins/vici/python/Makefile.am index 14b5eb29c..68166f4e1 100644 --- a/src/libcharon/plugins/vici/python/Makefile.am +++ b/src/libcharon/plugins/vici/python/Makefile.am @@ -1,5 +1,6 @@ EXTRA_DIST = LICENSE README.rst MANIFEST.in \ setup.py.in \ + tox.ini \ vici/test/__init__.py \ vici/test/test_protocol.py \ vici/__init__.py \ diff --git a/src/libcharon/plugins/vici/python/tox.ini b/src/libcharon/plugins/vici/python/tox.ini new file mode 100644 index 000000000..8a57cfd64 --- /dev/null +++ b/src/libcharon/plugins/vici/python/tox.ini @@ -0,0 +1,16 @@ +[tox] +envlist = py27, py35, py36, py37, py38 + +[testenv] +deps = + pytest + pytest-pycodestyle +commands = pytest --pycodestyle + +[testenv:py27] +deps = pytest +commands = pytest + +[pycodestyle] +max-line-length = 80 +show-source = True From 574621d80a236c28ef9a63b56ea34f9fee679aeb Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 14 Jan 2020 11:03:07 +0100 Subject: [PATCH 3/6] vici: Fix several PEP8 issues --- .../vici/python/vici/command_wrappers.py | 1 - .../vici/python/vici/test/test_protocol.py | 18 +++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/libcharon/plugins/vici/python/vici/command_wrappers.py b/src/libcharon/plugins/vici/python/vici/command_wrappers.py index 8a0aa25c5..a2e8fa932 100644 --- a/src/libcharon/plugins/vici/python/vici/command_wrappers.py +++ b/src/libcharon/plugins/vici/python/vici/command_wrappers.py @@ -232,7 +232,6 @@ class CommandWrappers(object): """ self.request("load-shared", secret) - def unload_shared(self, identifier): """Unload a previously loaded shared secret by its unique identifier. diff --git a/src/libcharon/plugins/vici/python/vici/test/test_protocol.py b/src/libcharon/plugins/vici/python/vici/test/test_protocol.py index a1f202d79..7ae1f2f90 100644 --- a/src/libcharon/plugins/vici/python/vici/test/test_protocol.py +++ b/src/libcharon/plugins/vici/python/vici/test/test_protocol.py @@ -70,17 +70,17 @@ class TestMessage(object): ser_kv_zero = b"\x03\x0azerolength\x00\x00" # deserialized messages holding a section - des_sec_single = { "section": {} } - des_sec_nested = { "outer": { "subsection": {} } } + des_sec_single = {"section": {}} + des_sec_nested = {"outer": {"subsection": {}}} # deserialized messages holding a list - des_list_0_item = { "empty": [] } - des_list_1_item = { "l": [ b"e1" ] } - des_list_2_item = { "l": [ b"e1", b"e2" ] } + des_list_0_item = {"empty": []} + des_list_1_item = {"l": [b"e1"]} + des_list_2_item = {"l": [b"e1", b"e2"]} # deserialized messages with key value pairs - des_kv_pair = { "key": b"value" } - des_kv_zero = { "zerolength": b"" } + des_kv_pair = {"key": b"value"} + des_kv_zero = {"zerolength": b""} def test_section_serialization(self): assert Message.serialize(self.des_sec_single) == self.ser_sec_single @@ -131,7 +131,7 @@ class TestMessage(object): "sub-section": { "key2": b"value2", }, - "list1": [ "item1", "item2" ], + "list1": ["item1", "item2"], }, } serialized_message = FiniteStream(Message.serialize(message)) @@ -141,4 +141,4 @@ class TestMessage(object): deserialized_section = deserialized_message["section1"] assert deserialized_message["key1"] == b"value1" assert deserialized_section["sub-section"]["key2"] == b"value2" - assert deserialized_section["list1"] == [ b"item1", b"item2" ] + assert deserialized_section["list1"] == [b"item1", b"item2"] From b723431540672f4748139900013c0a3207c7c23f Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 14 Jan 2020 11:00:56 +0100 Subject: [PATCH 4/6] vici: Run Python tests via tox if available Since we use the serial test harness we can't use AM_TESTS_ENVIRONMENT. The script is necessary for out-of-tree builds. --- configure.ac | 4 +++- src/libcharon/plugins/vici/python/Makefile.am | 7 +++++++ src/libcharon/plugins/vici/python/tox.sh | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100755 src/libcharon/plugins/vici/python/tox.sh diff --git a/configure.ac b/configure.ac index d7e7a1134..ae950a4d6 100644 --- a/configure.ac +++ b/configure.ac @@ -1345,6 +1345,7 @@ if test x$python_eggs = xtrue; then else AC_SUBST(PYTHONEGGINSTALLDIR, "--install-dir $pythoneggdir") fi + AC_PATH_PROG([TOX], [tox], [], [$PATH:/bin:/usr/bin:/usr/local/bin]) AC_PATH_PROG([PY_TEST], [py.test], [], [$PATH:/bin:/usr/bin:/usr/local/bin]) fi AM_CONDITIONAL(PYTHON_EGGS_INSTALL, [test "x$python_eggs_install" = xtrue]) @@ -1764,7 +1765,8 @@ AM_CONDITIONAL(USE_LEGACY_SYSTEMD, test -n "$systemdsystemunitdir" -a "x$systemd AM_CONDITIONAL(USE_RUBY_GEMS, test x$ruby_gems = xtrue) AM_CONDITIONAL(USE_PYTHON_EGGS, test x$python_eggs = xtrue) AM_CONDITIONAL(USE_PERL_CPAN, test x$perl_cpan = xtrue) -AM_CONDITIONAL(USE_PY_TEST, test "x$PY_TEST" != x) +AM_CONDITIONAL(USE_TOX, test "x$TOX" != x) +AM_CONDITIONAL(USE_PY_TEST, test "x$PY_TEST" != x -a "x$TOX" = x) # ======================== # set global definitions diff --git a/src/libcharon/plugins/vici/python/Makefile.am b/src/libcharon/plugins/vici/python/Makefile.am index 68166f4e1..8a9e6fc26 100644 --- a/src/libcharon/plugins/vici/python/Makefile.am +++ b/src/libcharon/plugins/vici/python/Makefile.am @@ -1,6 +1,7 @@ EXTRA_DIST = LICENSE README.rst MANIFEST.in \ setup.py.in \ tox.ini \ + tox.sh \ vici/test/__init__.py \ vici/test/test_protocol.py \ vici/__init__.py \ @@ -38,6 +39,12 @@ install-exec-local: dist/vici-$(PYTHON_PACKAGE_VERSION)-py$(PYTHON_VERSION).egg dist/vici-$(PYTHON_PACKAGE_VERSION)-py$(PYTHON_VERSION).egg endif +if USE_TOX + TESTS_ENVIRONMENT = export TOX=$(TOX); + AM_TESTS_FD_REDIRECT = 1>&2 + TESTS = tox.sh +endif + if USE_PY_TEST TESTS = $(PY_TEST) endif diff --git a/src/libcharon/plugins/vici/python/tox.sh b/src/libcharon/plugins/vici/python/tox.sh new file mode 100755 index 000000000..1a4f786ea --- /dev/null +++ b/src/libcharon/plugins/vici/python/tox.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +${TOX} -c ${srcdir} --skip-missing-interpreters From 6352954807a900a7aa781c565f8b30092f2a07dd Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 14 Jan 2020 11:02:07 +0100 Subject: [PATCH 5/6] travis: Run python tests with tox --- scripts/test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/test.sh b/scripts/test.sh index b343056d9..b56bebec5 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -157,7 +157,7 @@ all|coverage|sonarcloud) libmysqlclient-dev libsqlite3-dev clearsilver-dev libfcgi-dev libpcsclite-dev libpam0g-dev binutils-dev libunwind8-dev libnm-dev libjson-c-dev iptables-dev python-pip libtspi-dev libsystemd-dev" - PYDEPS="pytest" + PYDEPS="tox" if test "$1" = "deps"; then build_botan build_wolfssl From ecf161e517efce53493ef4ce341cef0f3ad6b24d Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 14 Jan 2020 14:58:01 +0100 Subject: [PATCH 6/6] vici: Move Python test dir and include it in sdist This is the recommended location and import config as it allows running the tests against installed versions of the package. And while the test file itself is automatically included in the source distribution this way, the __init__.py file is not, so we still have to update MANIFEST.in. --- src/libcharon/plugins/vici/python/MANIFEST.in | 2 ++ src/libcharon/plugins/vici/python/Makefile.am | 4 ++-- src/libcharon/plugins/vici/python/{vici => }/test/__init__.py | 0 .../plugins/vici/python/{vici => }/test/test_protocol.py | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) rename src/libcharon/plugins/vici/python/{vici => }/test/__init__.py (100%) rename src/libcharon/plugins/vici/python/{vici => }/test/test_protocol.py (98%) diff --git a/src/libcharon/plugins/vici/python/MANIFEST.in b/src/libcharon/plugins/vici/python/MANIFEST.in index 9d5d250d0..883ea5d52 100644 --- a/src/libcharon/plugins/vici/python/MANIFEST.in +++ b/src/libcharon/plugins/vici/python/MANIFEST.in @@ -1,2 +1,4 @@ include LICENSE include README.rst +include tox.ini +recursive-include test *.py diff --git a/src/libcharon/plugins/vici/python/Makefile.am b/src/libcharon/plugins/vici/python/Makefile.am index 8a9e6fc26..a2e7596e4 100644 --- a/src/libcharon/plugins/vici/python/Makefile.am +++ b/src/libcharon/plugins/vici/python/Makefile.am @@ -2,8 +2,8 @@ EXTRA_DIST = LICENSE README.rst MANIFEST.in \ setup.py.in \ tox.ini \ tox.sh \ - vici/test/__init__.py \ - vici/test/test_protocol.py \ + test/__init__.py \ + test/test_protocol.py \ vici/__init__.py \ vici/command_wrappers.py \ vici/compat.py \ diff --git a/src/libcharon/plugins/vici/python/vici/test/__init__.py b/src/libcharon/plugins/vici/python/test/__init__.py similarity index 100% rename from src/libcharon/plugins/vici/python/vici/test/__init__.py rename to src/libcharon/plugins/vici/python/test/__init__.py diff --git a/src/libcharon/plugins/vici/python/vici/test/test_protocol.py b/src/libcharon/plugins/vici/python/test/test_protocol.py similarity index 98% rename from src/libcharon/plugins/vici/python/vici/test/test_protocol.py rename to src/libcharon/plugins/vici/python/test/test_protocol.py index 7ae1f2f90..1924884a1 100644 --- a/src/libcharon/plugins/vici/python/vici/test/test_protocol.py +++ b/src/libcharon/plugins/vici/python/test/test_protocol.py @@ -1,7 +1,7 @@ import pytest -from ..protocol import Packet, Message, FiniteStream -from ..exception import DeserializationException +from vici.protocol import Packet, Message, FiniteStream +from vici.exception import DeserializationException class TestPacket(object):