diff --git a/src/object/sp-lpe-item.cpp b/src/object/sp-lpe-item.cpp
index cb4e1d13aa998db868109d1d23ded566a7d8ff89..1d44507262f1bb9ed5218d407e293233a3321b70 100755
--- a/src/object/sp-lpe-item.cpp
+++ b/src/object/sp-lpe-item.cpp
@@ -419,7 +419,8 @@ lpeobject_ref_modified(SPObject */*href*/, guint flags, SPLPEItem *lpeitem)
#ifdef SHAPE_VERBOSE
g_message("lpeobject_ref_modified");
#endif
- if (flags != 29 && flags != 253) {
+ auto lprtestenv = Glib::getenv("INKTESTENV");
+ if (!lprtestenv.empty() || (flags != 29 && flags != 253)) {
sp_lpe_item_update_patheffect (lpeitem, true, true);
}
}
diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt
index 8983863fa687991e7cec5231039d73a6faf9d844..3c645b53e8e63d5023e1ed75e594710455a20fb7 100644
--- a/testfiles/CMakeLists.txt
+++ b/testfiles/CMakeLists.txt
@@ -96,6 +96,7 @@ endforeach()
### CLI and rendering tests
add_subdirectory(cli_tests)
add_subdirectory(rendering_tests)
+add_subdirectory(lpe_tests)
### Fuzz test
diff --git a/testfiles/lpe_tests/CMakeLists.txt b/testfiles/lpe_tests/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a2787bfc009d4c67fbefe0e1f60198280e127f6c
--- /dev/null
+++ b/testfiles/lpe_tests/CMakeLists.txt
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+#add your test here (do not put the .svg extension)
+set(LPE_TESTS
+ # -- Generic tests --
+ bend
+ ${LPE_TESTS_64bit}
+)
+
+
+foreach(lpe_test ${LPE_TESTS})
+ set(testname "lpe_${lpe_test}")
+ add_test(NAME ${testname}
+ COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/test.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/inkscape ${CMAKE_CURRENT_SOURCE_DIR}/${lpe_test}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/testfiles/lpe_tests)
+ set_tests_properties(${testname} PROPERTIES ENVIRONMENT "${INKSCAPE_TEST_PROFILE_DIR_ENV}/${testname};${CMAKE_CTEST_ENV}")
+endforeach()
+
diff --git a/testfiles/lpe_tests/README b/testfiles/lpe_tests/README
new file mode 100644
index 0000000000000000000000000000000000000000..6ee6579b1f5f8582e7baefb240ce70e34a3302eb
--- /dev/null
+++ b/testfiles/lpe_tests/README
@@ -0,0 +1,16 @@
+HOWTO
+
+# Add a LPE test:
+ - create the svg file with some examples of the same LPE (clip, mask shape, path, group....
+ - add the test in CMakeLists.txt
+ - use 1.0 if posible as base to generarte files
+ - store the file in "lpe_tests/expected" folder
+ - copy also the file to "lpe_tests" folder open it in a text editoer and remove all d attributes of the file
+
+
+# Fix a failing test (due to a change in code):
+ - DO *NOT* MODIFY the expected rendering (or the svg) before getting advice from inkscape-devel@
+ - fix your code if possible
+ - manually double check the changes
+
+
diff --git a/testfiles/lpe_tests/bend.svg b/testfiles/lpe_tests/bend.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f612bdffe3567669ae3698365371caf3266a0445
--- /dev/null
+++ b/testfiles/lpe_tests/bend.svg
@@ -0,0 +1,240 @@
+
+
diff --git a/testfiles/lpe_tests/expected/bend.svg b/testfiles/lpe_tests/expected/bend.svg
new file mode 100644
index 0000000000000000000000000000000000000000..112399e420307f4b4ae5e8fd9a916c9eeabf906f
--- /dev/null
+++ b/testfiles/lpe_tests/expected/bend.svg
@@ -0,0 +1,240 @@
+
+
diff --git a/testfiles/lpe_tests/test.sh b/testfiles/lpe_tests/test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0541bf3da35360a671698eaf14eb5680a092d8df
--- /dev/null
+++ b/testfiles/lpe_tests/test.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+if [ "$#" -lt 2 ]; then
+ echo "pass the path of the inkscape executable as parameter then the name of the test" $#
+ exit 1
+fi
+
+INKSCAPE_EXE=$1
+exit_status=0
+test=$2
+EXPECTED=$(dirname $test)"/expected/"$(basename $test)
+testname=$(basename $test)
+ INKTESTENV=true ${INKSCAPE_EXE} --export-filename=${testname}_ORIG.svg ${test}.svg #2>/dev/null >/dev/null
+ INKTESTENV=true ${INKSCAPE_EXE} --export-filename=${testname}_ESPECT.svg ${EXPECTED}.svg #2>/dev/null >/dev/null
+ cat ${testname}_ORIG.svg | sed 's| />||' | sed -En 's| (d=".*?")|\1|p' > ${testname}A.diff
+ cat ${testname}_ESPECT.svg | sed 's| />||' | sed -En 's| (d=".*?")|\1|p' > ${testname}B.diff
+ if cmp --silent -- "${testname}A.diff" "${testname}B.diff"; then
+ echo ${testname} "PASSED"
+ rm ${testname}_ORIG.svg ${testname}_ESPECT.svg ${testname}A.diff ${testname}B.diff
+ else
+ echo ${testname} "FAILED"
+ exit_status=1
+ fi
+exit $exit_status