]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Fixing classmethod cursor_position() of class BaseDPXApplication.
authorFrank Brehm <frank.brehm@pixelpark.com>
Thu, 1 Feb 2024 16:45:41 +0000 (17:45 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Thu, 1 Feb 2024 16:45:41 +0000 (17:45 +0100)
lib/pp_admintools/app/__init__.py
test/test_10_base_app.py

index d2b43326313d94bcbddde7d68337bed5915be9f1..81a56891eb34a7dbe674a3257503c085e8209215 100644 (file)
@@ -16,6 +16,7 @@ import sys
 import termios
 
 from collections import namedtuple
+from io import UnsupportedOperation
 
 # Third party modules
 from fb_tools.cfg_app import FbConfigApplication
@@ -36,7 +37,7 @@ LOG = logging.getLogger(__name__)
 _ = XLATOR.gettext
 ngettext = XLATOR.ngettext
 
-__version__ = '0.9.0'
+__version__ = '0.9.1'
 
 
 # =============================================================================
@@ -158,7 +159,11 @@ class BaseDPXApplication(FbConfigApplication):
         It returns these position as a CursorPosition object.
         A position of (-1, -1) means, the position could not be evaluated.
         """
-        old_stdin_mode = termios.tcgetattr(sys.stdin)
+        try:
+            old_stdin_mode = termios.tcgetattr(sys.stdin)
+        except UnsupportedOperation:
+            return CursorPosition(-1, -1)
+
         stdin_mode = termios.tcgetattr(sys.stdin)
         stdin_mode[3] = stdin_mode[3] & ~(termios.ECHO | termios.ICANON)
         termios.tcsetattr(sys.stdin, termios.TCSAFLUSH, stdin_mode)
index 67c2ae4f4eee5682e69e5c70f63e9d0977b08c2b..b84c926a010dfc4d176989ea5a02d707d038a237 100755 (executable)
@@ -64,12 +64,15 @@ class TestBaseApp(PpAdminToolsTestcase):
 
         print('0123456789', end='', flush=True)
         pos = BaseDPXApplication.cursor_position()
-        print()
-        if pos.x != -1 and pos.y != -1:
-            LOG.debug("Got {}.".format(pos))
-            self.assertEqual(pos.x, 11)
+        if pos.x == -1 and pos.y == -1:
+            LOG.info("Terminal has no cursor.")
         else:
-            LOG.info("Could not detect position of screen cursor.")
+            print()
+            if pos.x != -1 and pos.y != -1:
+                LOG.debug("Got {}.".format(pos))
+                self.assertEqual(pos.x, 11)
+            else:
+                LOG.info("Could not detect position of screen cursor.")
 
 
 # =============================================================================