diff --git a/close_file_before_test.patch b/close_file_before_test.patch
new file mode 100644
index 0000000..b64ded9
--- /dev/null
+++ b/close_file_before_test.patch
@@ -0,0 +1,15 @@
+---
+ src/lxml/tests/test_etree.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/src/lxml/tests/test_etree.py
++++ b/src/lxml/tests/test_etree.py
+@@ -5278,6 +5278,8 @@ class ETreeWriteTestCase(HelperTestCase)
+ tree = self.parse(_bytes(''+''*200+''))
+ with tmpfile() as filename:
+ tree.write(filename, compression=9)
++ os.fsync(filename[0])
++ os.lseek(filename[0], 0, os.SEEK_SET)
+ data = etree.tostring(etree.parse(filename))
+ self.assertEqual(_bytes(''+''*200+''),
+ data)
diff --git a/python-lxml.changes b/python-lxml.changes
index 054a397..f259469 100644
--- a/python-lxml.changes
+++ b/python-lxml.changes
@@ -1,3 +1,9 @@
+-------------------------------------------------------------------
+Fri Jan 20 16:00:15 UTC 2023 - Matej Cepl
+
+- Add close_file_before_test.patch, to make sure the testing data
+ are flushed to the file (bsc#1206555).
+
-------------------------------------------------------------------
Thu Dec 29 07:46:19 UTC 2022 - Torsten Gruner
diff --git a/python-lxml.spec b/python-lxml.spec
index f53309a..950d21a 100644
--- a/python-lxml.spec
+++ b/python-lxml.spec
@@ -26,6 +26,9 @@ URL: https://lxml.de/
Source0: https://files.pythonhosted.org/packages/source/l/lxml/lxml-%{version}.tar.gz
Source1: https://lxml.de/lxmldoc-4.5.2.pdf
Source99: python-lxml.rpmlintrc
+# PATCH-FIX-UPSTREAM close_file_before_test.patch bsc#1206555 mcepl@suse.com
+# make sure the testing data are flushed to the file
+Patch0: close_file_before_test.patch
BuildRequires: %{python_module Cython >= 0.29.7}
BuildRequires: %{python_module base}
BuildRequires: %{python_module cssselect >= 0.9.1}
@@ -70,7 +73,8 @@ RelaxNG, XML Schema, XSLT and C14N.
This package contains header files needed to use lxml's C API.
%prep
-%setup -q -n lxml-%{version}
+%autosetup -p1 -n lxml-%{version}
+
cp %{SOURCE1} .
# remove generated files