summaryrefslogtreecommitdiffstats
path: root/share/extensions/tests/test_inkex_command.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/extensions/tests/test_inkex_command.py')
-rw-r--r--share/extensions/tests/test_inkex_command.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/share/extensions/tests/test_inkex_command.py b/share/extensions/tests/test_inkex_command.py
new file mode 100644
index 0000000..f6b7b67
--- /dev/null
+++ b/share/extensions/tests/test_inkex_command.py
@@ -0,0 +1,45 @@
+# coding=utf-8
+"""
+Test Inkex command launching functionality.
+"""
+import pytest
+import sys
+from inkex.tester import BaseCase
+from inkex.command import (
+ ProgramRunError,
+ which,
+ write_svg,
+ to_arg,
+ to_args,
+ call,
+ inkscape,
+ inkscape_command,
+ take_snapshot,
+)
+
+
+class CommandTest(BaseCase):
+ """Test command API"""
+
+ @pytest.mark.skipif(
+ sys.platform == "win32", reason="gunzip doesn't exist on windows"
+ )
+ def test_binary_call(self):
+ """Calls should allow binary stdin"""
+ # https://gitlab.com/inkscape/extensions/-/commit/2e504f2a3f6bb627f17b267c5623a71005d7234d#note_164780678
+ binary = (
+ b"\x1f\x8b\x08\x00eh\xc3\\\x02\xffK\xcb\xcf\x07\x00!es\x8c\x03\x00\x00\x00"
+ )
+ stdout = call("gunzip", stdin=binary)
+
+ def test_command_error(self):
+ """Call to test ProgramRunError"""
+
+ with self.assertRaises(ProgramRunError) as cm:
+ call("python", "nonexistent_file")
+ exc = cm.exception
+ self.assertIsInstance(exc, ProgramRunError)
+ self.assertEqual(exc.returncode, 2)
+ self.assertIn("can't open file", exc.stderr.decode("utf8"))
+ self.assertEqual("", exc.stdout.decode("utf8"))
+ self.assertIn("can't open file", str(exc))