[Lldb-commits] [lldb] r348808 - Rewrite pexpect-based test in LIT/FileCheck.

Adrian Prantl via lldb-commits lldb-commits at lists.llvm.org
Mon Dec 10 14:57:47 PST 2018


Author: adrian
Date: Mon Dec 10 14:57:47 2018
New Revision: 348808

URL: http://llvm.org/viewvc/llvm-project?rev=348808&view=rev
Log:
Rewrite pexpect-based test in LIT/FileCheck.

pexecpt-based tests are flakey because they involve timeouts and this
test is eprfectly serializable.

Added:
    lldb/trunk/lit/Driver/Inputs/convenience.in
    lldb/trunk/lit/Driver/Inputs/hello.c
    lldb/trunk/lit/Driver/TestConvenienceVariables.test
Removed:
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/Makefile
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/TestConvenienceVariables.py
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/main.c

Added: lldb/trunk/lit/Driver/Inputs/convenience.in
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/convenience.in?rev=348808&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/convenience.in (added)
+++ lldb/trunk/lit/Driver/Inputs/convenience.in Mon Dec 10 14:57:47 2018
@@ -0,0 +1,9 @@
+breakpoint set -f hello.c -p Hello
+run
+script print(lldb.debugger)
+script print(lldb.target)
+script print(lldb.process)
+script print(lldb.thread.GetStopDescription(100))
+script lldb.frame.GetLineEntry().GetLine()
+script lldb.frame.GetLineEntry().GetFileSpec().GetFilename()
+script lldb.frame.GetFunctionName()

Added: lldb/trunk/lit/Driver/Inputs/hello.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/Inputs/hello.c?rev=348808&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/Inputs/hello.c (added)
+++ lldb/trunk/lit/Driver/Inputs/hello.c Mon Dec 10 14:57:47 2018
@@ -0,0 +1,5 @@
+int puts(const char*);
+int main(int argc, char **argv) {
+  puts("Hello World\n");
+  return 0;
+}

Added: lldb/trunk/lit/Driver/TestConvenienceVariables.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Driver/TestConvenienceVariables.test?rev=348808&view=auto
==============================================================================
--- lldb/trunk/lit/Driver/TestConvenienceVariables.test (added)
+++ lldb/trunk/lit/Driver/TestConvenienceVariables.test Mon Dec 10 14:57:47 2018
@@ -0,0 +1,22 @@
+RUN: %clang %p/Inputs/hello.c -g -o %t
+RUN: %lldb %t -s %p/Inputs/convenience.in -o quit | FileCheck %s
+
+script print(lldb.debugger)
+
+CHECK: stop reason = breakpoint 1.1
+CHECK: Debugger (instance: {{.*}}, id: {{[0-9]+}})
+CHECK: script print(lldb.target)
+CHECK: TestConvenienceVariables.test
+CHECK: script print(lldb.process)
+CHECK: SBProcess: pid = {{[0-9]+}},
+CHECK-SAME:       state = stopped,
+CHECK-SAME:       threads = {{[0-9]+}},
+CHECK-SAME:       executable = TestConvenienceVariables.test
+CHECK: script print(lldb.thread.GetStopDescription(100))
+CHECK: breakpoint 1.1
+CHECK: script lldb.frame.GetLineEntry().GetLine()
+CHECK: 3
+CHECK: script lldb.frame.GetLineEntry().GetFileSpec().GetFilename()
+CHECK: hello.c
+CHECK: script lldb.frame.GetFunctionName()
+CHECK: main
\ No newline at end of file

Removed: lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/Makefile?rev=348807&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/Makefile (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/Makefile (removed)
@@ -1,5 +0,0 @@
-LEVEL = ../../make
-
-C_SOURCES := main.c
-
-include $(LEVEL)/Makefile.rules

Removed: lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/TestConvenienceVariables.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/TestConvenienceVariables.py?rev=348807&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/TestConvenienceVariables.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/TestConvenienceVariables.py (removed)
@@ -1,108 +0,0 @@
-"""Test convenience variables when you drop in from lldb prompt into an embedded interpreter."""
-
-from __future__ import print_function
-
-
-import os
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-
-class ConvenienceVariablesCase(TestBase):
-
-    mydir = TestBase.compute_mydir(__file__)
-
-    def setUp(self):
-        # Call super's setUp().
-        TestBase.setUp(self)
-        # Find the line number to break on inside main.cpp.
-        self.line = line_number('main.c', 'Hello world.')
-
-    @skipIfFreeBSD  # llvm.org/pr17228
-    @skipIfRemote
-    @expectedFailureAll(
-        oslist=["windows"],
-        bugnumber="llvm.org/pr22274: need a pexpect replacement for windows")
-    def test_with_run_commands(self):
-        """Test convenience variables lldb.debugger, lldb.target, lldb.process, lldb.thread, and lldb.frame."""
-        self.build()
-        import pexpect
-        exe = self.getBuildArtifact("a.out")
-        prompt = "(lldb) "
-        python_prompt = ">>> "
-
-        # So that the child gets torn down after the test.
-        self.child = pexpect.spawn(
-            '%s %s %s' %
-            (lldbtest_config.lldbExec, self.lldbOption, exe))
-        child = self.child
-        # Turn on logging for what the child sends back.
-        if self.TraceOn():
-            child.logfile_read = sys.stdout
-
-        # Set the breakpoint, run the inferior, when it breaks, issue print on
-        # the various convenience variables.
-        child.expect_exact(prompt)
-        child.sendline('breakpoint set -f main.c -l %d' % self.line)
-        child.expect_exact(prompt)
-        child.sendline('run')
-        child.expect_exact("stop reason = breakpoint 1.1")
-        child.expect_exact(prompt)
-        child.sendline('script')
-        child.expect_exact(python_prompt)
-
-        # Set a flag so that we know during teardown time, we need to exit the
-        # Python interpreter, then the lldb interpreter.
-        self.child_in_script_interpreter = True
-
-        child.sendline('print(lldb.debugger)')
-        child.expect_exact(python_prompt)
-        self.expect(child.before, exe=False,
-                    patterns=['Debugger \(instance: .*, id: \d\)'])
-
-        child.sendline('print(lldb.target)')
-        child.expect_exact(python_prompt)
-        self.expect(child.before, exe=False,
-                    substrs=['a.out'])
-
-        child.sendline('print(lldb.process)')
-        child.expect_exact(python_prompt)
-        self.expect(child.before, exe=False, patterns=[
-                    'SBProcess: pid = \d+, state = stopped, threads = \d, executable = a.out'])
-
-        child.sendline('print(lldb.thread.GetStopDescription(100))')
-        child.expect_exact(python_prompt)
-        self.expect(
-            child.before,
-            exe=False,
-            patterns=[
-                'breakpoint 1\.1'])
-
-        child.sendline('lldb.frame.GetLineEntry().GetLine()')
-        child.expect_exact(python_prompt)
-        line_number = "%d"%(self.line)
-        self.expect(
-            child.before,
-            exe=False,
-            substrs=[
-                line_number])
-
-        child.sendline('lldb.frame.GetLineEntry().GetFileSpec().GetFilename()')
-        child.expect_exact(python_prompt)
-        line_number = "%d"%(self.line)
-        self.expect(
-            child.before,
-            exe=False,
-            substrs=[
-                "main.c"])
-
-        child.sendline('lldb.frame.GetFunctionName()')
-        child.expect_exact(python_prompt)
-        line_number = "%d"%(self.line)
-        self.expect(
-            child.before,
-            exe=False,
-            substrs=[
-                "main"])

Removed: lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/main.c
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/main.c?rev=348807&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/main.c (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/embedded_interpreter/main.c (removed)
@@ -1,6 +0,0 @@
-#include <stdio.h>
-
-int main(int argc, char const *argv[]) {
-    printf("Hello world.\n");
-    return 0;
-}




More information about the lldb-commits mailing list