diff options
author | Michał Górny <mgorny@gentoo.org> | 2021-08-19 15:24:24 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2021-08-19 15:24:50 +0200 |
commit | db1da681c33119cd6b89c851ef9f19b9734fc279 (patch) | |
tree | 56c68fb1b2255918418e6c52acccdecbd00b82ad /dev-python/watchdog | |
parent | net-misc/icaclient: Removed old (diff) | |
download | gentoo-db1da681c33119cd6b89c851ef9f19b9734fc279.tar.gz gentoo-db1da681c33119cd6b89c851ef9f19b9734fc279.tar.bz2 gentoo-db1da681c33119cd6b89c851ef9f19b9734fc279.zip |
dev-python/watchdog: Fix tests on big endian platforms
Closes: https://bugs.gentoo.org/795411
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/watchdog')
-rw-r--r-- | dev-python/watchdog/files/watchdog-2.1.2-big-endian.patch | 76 | ||||
-rw-r--r-- | dev-python/watchdog/watchdog-2.1.2.ebuild | 6 |
2 files changed, 81 insertions, 1 deletions
diff --git a/dev-python/watchdog/files/watchdog-2.1.2-big-endian.patch b/dev-python/watchdog/files/watchdog-2.1.2-big-endian.patch new file mode 100644 index 000000000000..61ddff816a88 --- /dev/null +++ b/dev-python/watchdog/files/watchdog-2.1.2-big-endian.patch @@ -0,0 +1,76 @@ +From ab6508716f95fb65481ab6232301a095452e9b49 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org> +Date: Thu, 19 Aug 2021 15:13:39 +0200 +Subject: [PATCH] Fix test mocks for big endian systems + +Fix the mocked inotify data to respect system endianness. Instead of +harcoding the raw data, reconstruct it using struct.pack(), respecting +host endianness. This should also benefit readability a bit. + +Closes #804 +--- + tests/test_inotify_c.py | 28 ++++++++++++++++++++-------- + 1 file changed, 20 insertions(+), 8 deletions(-) + +diff --git a/tests/test_inotify_c.py b/tests/test_inotify_c.py +index 81f6586..dc336a3 100644 +--- a/tests/test_inotify_c.py ++++ b/tests/test_inotify_c.py +@@ -10,6 +10,7 @@ import ctypes + import errno + import logging + import os ++import struct + from functools import partial + from queue import Queue + +@@ -52,6 +53,19 @@ def teardown_function(function): + pass + + ++def struct_inotify(wd, mask, cookie, length, name): ++ assert len(name) <= length ++ struct_format = ( ++ "=" # (native endianness, standard sizes) ++ "i" # int wd ++ "i" # uint32_t mask ++ "i" # uint32_t cookie ++ "i" # uint32_t len ++ "%ds" % (length,) # char[] name ++ ) ++ return struct.pack(struct_format, wd, mask, cookie, length, name) ++ ++ + def test_late_double_deletion(monkeypatch): + inotify_fd = type(str("FD"), (object,), {})() # Empty object + inotify_fd.last = 0 +@@ -60,20 +74,18 @@ def test_late_double_deletion(monkeypatch): + # CREATE DELETE CREATE DELETE DELETE_SELF IGNORE DELETE_SELF IGNORE + inotify_fd.buf = ( + # IN_CREATE|IS_DIR (wd = 1, path = subdir1) +- b"\x01\x00\x00\x00\x00\x01\x00\x40\x00\x00\x00\x00\x10\x00\x00\x00" +- b"\x73\x75\x62\x64\x69\x72\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00" ++ struct_inotify(1, 0x40000100, 0, 16, b"subdir1") + + # IN_DELETE|IS_DIR (wd = 1, path = subdir1) +- b"\x01\x00\x00\x00\x00\x02\x00\x40\x00\x00\x00\x00\x10\x00\x00\x00" +- b"\x73\x75\x62\x64\x69\x72\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00" ++ struct_inotify(1, 0x40000200, 0, 16, b"subdir1") + ) * 2 + ( + # IN_DELETE_SELF (wd = 2) +- b"\x02\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ++ struct_inotify(2, 0x00000400, 0, 0, b"") + + # IN_IGNORE (wd = 2) +- b"\x02\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ++ struct_inotify(2, 0x00008000, 0, 0, b"") + + # IN_DELETE_SELF (wd = 3) +- b"\x03\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ++ struct_inotify(3, 0x00000400, 0, 0, b"") + + # IN_IGNORE (wd = 3) +- b"\x03\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" ++ struct_inotify(3, 0x00008000, 0, 0, b"") + ) + + os_read_bkp = os.read +-- +2.33.0 + diff --git a/dev-python/watchdog/watchdog-2.1.2.ebuild b/dev-python/watchdog/watchdog-2.1.2.ebuild index 9ed9de0edfef..fba2b3735927 100644 --- a/dev-python/watchdog/watchdog-2.1.2.ebuild +++ b/dev-python/watchdog/watchdog-2.1.2.ebuild @@ -3,7 +3,7 @@ EAPI=7 -PYTHON_COMPAT=( python3_{7..10} pypy3 ) +PYTHON_COMPAT=( python3_{8..10} pypy3 ) inherit distutils-r1 optfeature DESCRIPTION="Python API and shell utilities to monitor file system events" @@ -25,6 +25,10 @@ DEPEND="${CDEPEND} distutils_enable_tests pytest src_prepare() { + local PATCHES=( + "${FILESDIR}"/${P}-big-endian.patch + ) + sed -i -e '/--cov/d' setup.cfg || die default } |