summaryrefslogtreecommitdiff
path: root/tests/test_clone.py
diff options
context:
space:
mode:
authorcapellancitizen <thecapellancitizen@gmail.com>2024-08-28 20:12:16 -0400
committerGitHub <noreply@github.com>2024-08-28 20:12:16 -0400
commit7474aa7a3a6c2a7cacd3b3c5067201bb608029c4 (patch)
tree2a6982a8654a3be2e435456be723b1476106f8f1 /tests/test_clone.py
parentf8a093ea306ce01f45936c6b34065ab57f6ccded (diff)
Fixed hidden objects being stitched out when cloned (Fix #3167) (#3171)
Extracted Base.descendants into a util function
Diffstat (limited to 'tests/test_clone.py')
-rw-r--r--tests/test_clone.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/tests/test_clone.py b/tests/test_clone.py
index 1c84f3e9..07683a16 100644
--- a/tests/test_clone.py
+++ b/tests/test_clone.py
@@ -1,6 +1,6 @@
from lib.elements import Clone, EmbroideryElement, FillStitch
from lib.commands import add_commands
-from lib.svg.tags import INKSTITCH_ATTRIBS, SVG_RECT_TAG
+from lib.svg.tags import INKSTITCH_ATTRIBS, SVG_RECT_TAG, INKSCAPE_LABEL
from lib.utils import cache_module
from inkex import SvgDocumentElement, Rectangle, Circle, Group, Use, Transform, TextElement
from inkex.tester import TestCase
@@ -19,6 +19,7 @@ def element_fill_angle(element: EmbroideryElement) -> Optional[float]:
class CloneElementTest(TestCase):
+ # Monkey-patch the cahce to forcibly disable it: We may need to refactor this out for tests.
def setUp(self):
from pytest import MonkeyPatch
self.monkeypatch = MonkeyPatch()
@@ -78,6 +79,37 @@ class CloneElementTest(TestCase):
self.assertEqual(len(elements), 1)
self.assertAlmostEqual(element_fill_angle(elements[0]), 30)
+ def test_hidden_cloned_elements_not_embroidered(self):
+ root = svg()
+ g = root.add(Group())
+ g.add(Rectangle(attrib={
+ INKSCAPE_LABEL: "NotHidden",
+ "width": "10",
+ "height": "10"
+ }))
+ g.add(Rectangle(attrib={
+ INKSCAPE_LABEL: "Hidden",
+ "width": "10",
+ "height": "10",
+ "style": "display:none"
+ }))
+ hidden_group = g.add(Group(attrib={
+ "style": "display:none"
+ }))
+ hidden_group.add(Rectangle(attrib={
+ INKSCAPE_LABEL: "ChildOfHidden",
+ "width": "10",
+ "height": "10",
+ }))
+ use = root.add(Use())
+ use.href = g
+
+ clone = Clone(use)
+
+ with clone.clone_elements() as elements:
+ self.assertEqual(len(elements), 1)
+ self.assertEqual(elements[0].node.get(INKSCAPE_LABEL), "NotHidden")
+
def test_angle_rotated(self):
root: SvgDocumentElement = svg()
rect = root.add(Rectangle(attrib={