[Lldb-commits] [lldb] e5e05ec - [lldb/test] Use @skipIfWindows for PExpectTest

Jordan Rupprecht via lldb-commits lldb-commits at lists.llvm.org
Fri Aug 28 11:41:42 PDT 2020


Author: Jordan Rupprecht
Date: 2020-08-28T11:41:07-07:00
New Revision: e5e05ecf65aba836802154279efbc8cbce6fe2ea

URL: https://github.com/llvm/llvm-project/commit/e5e05ecf65aba836802154279efbc8cbce6fe2ea
DIFF: https://github.com/llvm/llvm-project/commit/e5e05ecf65aba836802154279efbc8cbce6fe2ea.diff

LOG: [lldb/test] Use @skipIfWindows for PExpectTest

Annotating `PExpectTest` with `@skipIfWindows` instead of marking it as an empty class will make the test runner recognize it as a test class, which should allow me to reland adb5c23f8c0d60eeec41dcbe21d1b26184e1c97d.

I don't have a windows machine to verify this works, but I did some tests using `@skipIfLinux` and they all worked as expected. In case the `pexpect` import is not at all available on windows, I moved it to within the method where it's used.

Reviewed By: labath

Differential Revision: https://reviews.llvm.org/D86745

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/lldbpexpect.py

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py
index 67de73bf8970..12ac4d381e2c 100644
--- a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py
+++ b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py
@@ -13,65 +13,60 @@
 from . import lldbutil
 from lldbsuite.test.decorators import *
 
-if sys.platform.startswith('win32'):
-    # llvm.org/pr22274: need a pexpect replacement for windows
-    class PExpectTest(object):
-        pass
-else:
-    import pexpect
+ at skipIfRemote
+ at skipIfWindows  # llvm.org/pr22274: need a pexpect replacement for windows
+class PExpectTest(TestBase):
 
-    @skipIfRemote
-    class PExpectTest(TestBase):
+    NO_DEBUG_INFO_TESTCASE = True
+    PROMPT = "(lldb) "
 
-        NO_DEBUG_INFO_TESTCASE = True
-        PROMPT = "(lldb) "
+    def expect_prompt(self):
+        self.child.expect_exact(self.PROMPT)
 
-        def expect_prompt(self):
-            self.child.expect_exact(self.PROMPT)
+    def launch(self, executable=None, extra_args=None, timeout=30, dimensions=None):
+        logfile = getattr(sys.stdout, 'buffer',
+                            sys.stdout) if self.TraceOn() else None
 
-        def launch(self, executable=None, extra_args=None, timeout=30, dimensions=None):
-            logfile = getattr(sys.stdout, 'buffer',
-                              sys.stdout) if self.TraceOn() else None
+        args = ['--no-lldbinit', '--no-use-colors']
+        for cmd in self.setUpCommands():
+            args += ['-O', cmd]
+        if executable is not None:
+            args += ['--file', executable]
+        if extra_args is not None:
+            args.extend(extra_args)
 
-            args = ['--no-lldbinit', '--no-use-colors']
-            for cmd in self.setUpCommands():
-                args += ['-O', cmd]
-            if executable is not None:
-                args += ['--file', executable]
-            if extra_args is not None:
-                args.extend(extra_args)
+        env = dict(os.environ)
+        env["TERM"]="vt100"
 
-            env = dict(os.environ)
-            env["TERM"]="vt100"
-
-            self.child = pexpect.spawn(
-                    lldbtest_config.lldbExec, args=args, logfile=logfile,
-                    timeout=timeout, dimensions=dimensions, env=env)
+        import pexpect
+        self.child = pexpect.spawn(
+                lldbtest_config.lldbExec, args=args, logfile=logfile,
+                timeout=timeout, dimensions=dimensions, env=env)
+        self.expect_prompt()
+        for cmd in self.setUpCommands():
+            self.child.expect_exact(cmd)
             self.expect_prompt()
-            for cmd in self.setUpCommands():
-                self.child.expect_exact(cmd)
-                self.expect_prompt()
-            if executable is not None:
-                self.child.expect_exact("target create")
-                self.child.expect_exact("Current executable set to")
-                self.expect_prompt()
-
-        def expect(self, cmd, substrs=None):
-            self.assertNotIn('\n', cmd)
-            self.child.sendline(cmd)
-            if substrs is not None:
-                for s in substrs:
-                    self.child.expect_exact(s)
+        if executable is not None:
+            self.child.expect_exact("target create")
+            self.child.expect_exact("Current executable set to")
             self.expect_prompt()
 
-        def quit(self, gracefully=True):
-            self.child.sendeof()
-            self.child.close(force=not gracefully)
-            self.child = None
+    def expect(self, cmd, substrs=None):
+        self.assertNotIn('\n', cmd)
+        self.child.sendline(cmd)
+        if substrs is not None:
+            for s in substrs:
+                self.child.expect_exact(s)
+        self.expect_prompt()
+
+    def quit(self, gracefully=True):
+        self.child.sendeof()
+        self.child.close(force=not gracefully)
+        self.child = None
 
-        def cursor_forward_escape_seq(self, chars_to_move):
-            """
-            Returns the escape sequence to move the cursor forward/right
-            by a certain amount of characters.
-            """
-            return b"\x1b\[" + str(chars_to_move).encode("utf-8") + b"C"
+    def cursor_forward_escape_seq(self, chars_to_move):
+        """
+        Returns the escape sequence to move the cursor forward/right
+        by a certain amount of characters.
+        """
+        return b"\x1b\[" + str(chars_to_move).encode("utf-8") + b"C"


        


More information about the lldb-commits mailing list