diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb')
4 files changed, 83 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/Makefile b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/Makefile new file mode 100644 index 0000000..0d70f25 --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/Makefile @@ -0,0 +1,5 @@ +LEVEL = ../../make + +C_SOURCES := main.c + +include $(LEVEL)/Makefile.rules diff --git a/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py new file mode 100644 index 0000000..6a2dd74 --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/TestSingleQuoteInFilename.py @@ -0,0 +1,71 @@ +""" +Test the lldb command line takes a filename with single quote chars. +""" + +from __future__ import print_function + + + +import os +import lldb +from lldbsuite.test.lldbtest import * + +class SingleQuoteInCommandLineTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + myexe = "path with '09/a.out" + + @classmethod + def classCleanup(cls): + """Cleanup the test byproducts.""" + try: + os.remove("child_send.txt") + os.remove("child_read.txt") + os.remove(cls.myexe) + except: + pass + + @expectedFailureHostWindows("llvm.org/pr22274: need a pexpect replacement for windows") + @no_debug_info_test + def test_lldb_invocation_with_single_quote_in_filename(self): + """Test that 'lldb my_file_name' works where my_file_name is a string with a single quote char in it.""" + import pexpect + self.buildDefault() + system([["cp", "a.out", "\"%s\"" % self.myexe]]) + + # The default lldb prompt. + prompt = "(lldb) " + + # So that the child gets torn down after the test. + self.child = pexpect.spawn('%s %s "%s"' % (lldbtest_config.lldbExec, self.lldbOption, self.myexe)) + child = self.child + child.setecho(True) + # Turn on logging for input/output to/from the child. + with open('child_send.txt', 'w') as f_send: + with open('child_read.txt', 'w') as f_read: + child.logfile_send = f_send + child.logfile_read = f_read + + child.expect_exact(prompt) + + child.send("help watchpoint") + child.sendline('') + child.expect_exact(prompt) + + # Now that the necessary logging is done, restore logfile to None to + # stop further logging. + child.logfile_send = None + child.logfile_read = None + + with open('child_send.txt', 'r') as fs: + if self.TraceOn(): + print("\n\nContents of child_send.txt:") + print(fs.read()) + with open('child_read.txt', 'r') as fr: + from_child = fr.read() + if self.TraceOn(): + print("\n\nContents of child_read.txt:") + print(from_child) + + self.expect(from_child, exe=False, + substrs = ["Current executable set to"]) diff --git a/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/main.c b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/main.c new file mode 100644 index 0000000..7cee730 --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/main.c @@ -0,0 +1,7 @@ +#include <stdio.h> + +int main(int argc, const char *argv[]) +{ + printf("Hello, world!\n"); + return 0; +} diff --git a/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/path with '09/.keep b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/path with '09/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/single-quote-in-filename-to-lldb/path with '09/.keep |