diff options
author | Davide Italiano <davide@freebsd.org> | 2019-03-12 20:41:36 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2019-03-12 20:41:36 +0000 |
commit | 4be269e604c380a974a01623796b23f41986f974 (patch) | |
tree | 5e1598417a60668344a8a08d74188903ef233454 /lldb/third_party/Python/module | |
parent | 2bd995b7e8fda6d51cb586e4a0f92ea1d99596e0 (diff) | |
download | bcm5719-llvm-4be269e604c380a974a01623796b23f41986f974.tar.gz bcm5719-llvm-4be269e604c380a974a01623796b23f41986f974.zip |
[lldb/thirdparty] Remove unneeded files, asked by Jonas.
llvm-svn: 355969
Diffstat (limited to 'lldb/third_party/Python/module')
123 files changed, 0 insertions, 14110 deletions
diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/FAQ.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/FAQ.rst deleted file mode 100644 index 1964b12002a..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/FAQ.rst +++ /dev/null @@ -1,145 +0,0 @@ -FAQ -=== - -**Q: Where can I get help with pexpect? Is there a mailing list?** - -A: You can use the `pexpect tag on Stackoverflow <http://stackoverflow.com/questions/tagged/pexpect>`__ -to ask questions specifically related to Pexpect. For more general Python -support, there's the python-list_ mailing list, and the `#python`_ -IRC channel. Please refrain from using github for general -python or systems scripting support. - -.. _python-list: https://mail.python.org/mailman/listinfo/python-list -.. _#python: https://www.python.org/community/irc/ - -**Q: Why don't shell pipe and redirect (| and >) work when I spawn a command?** - -A: Remember that Pexpect does NOT interpret shell meta characters such as -redirect, pipe, or wild cards (``>``, ``|``, or ``*``). That's done by a shell not -the command you are spawning. This is a common mistake. If you want to run a -command and pipe it through another command then you must also start a shell. -For example:: - - child = pexpect.spawn('/bin/bash -c "ls -l | grep LOG > log_list.txt"') - child.expect(pexpect.EOF) - -The second form of spawn (where you pass a list of arguments) is useful in -situations where you wish to spawn a command and pass it its own argument list. -This can make syntax more clear. For example, the following is equivalent to the -previous example:: - - shell_cmd = 'ls -l | grep LOG > log_list.txt' - child = pexpect.spawn('/bin/bash', ['-c', shell_cmd]) - child.expect(pexpect.EOF) - -**Q: The `before` and `after` properties sound weird.** - -A: This is how the -B and -A options in grep works, so that made it -easier for me to remember. Whatever makes my life easier is what's best. -Originally I was going to model Pexpect after Expect, but then I found -that I didn't actually like the way Expect did some things. It was more -confusing. The `after` property can be a little confusing at first, -because it will actually include the matched string. The `after` means -after the point of match, not after the matched string. - -**Q: Why not just use Expect?** - -A: I love it. It's great. I has bailed me out of some real jams, but I -wanted something that would do 90% of what I need from Expect; be 10% of -the size; and allow me to write my code in Python instead of TCL. -Pexpect is not nearly as big as Expect, but Pexpect does everything I -have ever used Expect for. - -.. _whynotpipe: - -**Q: Why not just use a pipe (popen())?** - -A: A pipe works fine for getting the output to non-interactive programs. -If you just want to get the output from ls, uname, or ping then this -works. Pipes do not work very well for interactive programs and pipes -will almost certainly fail for most applications that ask for passwords -such as telnet, ftp, or ssh. - -There are two reasons for this. - -* First an application may bypass stdout and print directly to its - controlling TTY. Something like SSH will do this when it asks you for - a password. This is why you cannot redirect the password prompt because - it does not go through stdout or stderr. - -* The second reason is because most applications are built using the C - Standard IO Library (anything that uses ``#include <stdio.h>``). One - of the features of the stdio library is that it buffers all input and - output. Normally output is line buffered when a program is printing to - a TTY (your terminal screen). Everytime the program prints a line-feed - the currently buffered data will get printed to your screen. The - problem comes when you connect a pipe. The stdio library is smart and - can tell that it is printing to a pipe instead of a TTY. In that case - it switches from line buffer mode to block buffered. In this mode the - currently buffered data is flushed when the buffer is full. This - causes most interactive programs to deadlock. Block buffering is more - efficient when writing to disks and pipes. Take the situation where a - program prints a message ``"Enter your user name:\n"`` and then waits - for you type type something. In block buffered mode, the stdio library - will not put the message into the pipe even though a linefeed is - printed. The result is that you never receive the message, yet the - child application will sit and wait for you to type a response. Don't - confuse the stdio lib's buffer with the pipe's buffer. The pipe buffer - is another area that can cause problems. You could flush the input - side of a pipe, whereas you have no control over the stdio library buffer. - -More information: the Standard IO library has three states for a -``FILE *``. These are: _IOFBF for block buffered; _IOLBF for line buffered; -and _IONBF for unbuffered. The STDIO lib will use block buffering when -talking to a block file descriptor such as a pipe. This is usually not -helpful for interactive programs. Short of recompiling your program to -include fflush() everywhere or recompiling a custom stdio library there -is not much a controlling application can do about this if talking over -a pipe. - -The program may have put data in its output that remains unflushed -because the output buffer is not full; then the program will go and -deadlock while waiting for input -- because you never send it any -because you are still waiting for its output (still stuck in the STDIO's -output buffer). - -The answer is to use a pseudo-tty. A TTY device will force line -buffering (as opposed to block buffering). Line buffering means that you -will get each line when the child program sends a line feed. This -corresponds to the way most interactive programs operate -- send a line -of output then wait for a line of input. - -I put "answer" in quotes because it's ugly solution and because there is -no POSIX standard for pseudo-TTY devices (even though they have a TTY -standard...). What would make more sense to me would be to have some way -to set a mode on a file descriptor so that it will tell the STDIO to be -line-buffered. I have investigated, and I don't think there is a way to -set the buffered state of a child process. The STDIO Library does not -maintain any external state in the kernel or whatnot, so I don't think -there is any way for you to alter it. I'm not quite sure how this -line-buffered/block-buffered state change happens internally in the -STDIO library. I think the STDIO lib looks at the file descriptor and -decides to change behavior based on whether it's a TTY or a block file -(see isatty()). - -I hope that this qualifies as helpful. Don't use a pipe to control -another application. - -**Q: Can I do screen scraping with this thing?** - -A: That depends. If your application just does line-oriented output then -this is easy. If a program emits many terminal sequences, from video -attributes to screen addressing, such as programs using curses, then -it may become very difficult to ascertain what text is displayed on a screen. - -We suggest using the `pyte <https://github.com/selectel/pyte>`_ library to -screen-scrape. The module :mod:`pexpect.ANSI` released with previous versions -of pexpect is now marked deprecated and may be removed in the future. - -**Q: I get strange behavior with pexect and gevent** - -A: Pexpect uses fork(2), exec(2), select(2), waitpid(2), and implements its -own selector in expect family of calls. pexpect has been known to misbehave -when paired with gevent. A solution might be to isolate your pexpect -dependent code from any frameworks that manipulate event selection behavior -by running it in an another process entirely. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/Makefile b/lldb/third_party/Python/module/pexpect-4.6/doc/Makefile deleted file mode 100644 index ced8a685263..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/Makefile +++ /dev/null @@ -1,153 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make <target>' where <target> is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - -rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Pexpect.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Pexpect.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/Pexpect" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Pexpect" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/api/fdpexpect.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/api/fdpexpect.rst deleted file mode 100644 index 3ddf2cdb228..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/api/fdpexpect.rst +++ /dev/null @@ -1,20 +0,0 @@ -fdpexpect - use pexpect with a file descriptor -============================================== - -.. automodule:: pexpect.fdpexpect - -fdspawn class -------------- - -.. autoclass:: fdspawn - :show-inheritance: - - .. automethod:: __init__ - .. automethod:: isalive - .. automethod:: close - - .. method:: expect - expect_exact - expect_list - - As :class:`pexpect.spawn`. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/api/index.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/api/index.rst deleted file mode 100644 index 5277d1cd00a..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/api/index.rst +++ /dev/null @@ -1,18 +0,0 @@ -API documentation -================= - -.. toctree:: - :maxdepth: 2 - - pexpect - fdpexpect - popen_spawn - replwrap - pxssh - -The modules ``pexpect.screen`` and ``pexpect.ANSI`` have been deprecated in -Pexpect version 4. They were separate from the main use cases for Pexpect, and -there are better maintained Python terminal emulator packages, such as -`pyte <https://pypi.python.org/pypi/pyte>`__. -These modules are still present for now, but we don't advise using them in new -code. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/api/pexpect.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/api/pexpect.rst deleted file mode 100644 index 79bbcefffc5..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/api/pexpect.rst +++ /dev/null @@ -1,115 +0,0 @@ -Core pexpect components -======================= - -.. automodule:: pexpect - -spawn class ------------ - -.. autoclass:: spawn - - .. automethod:: __init__ - .. automethod:: expect - .. automethod:: expect_exact - .. automethod:: expect_list - .. automethod:: compile_pattern_list - .. automethod:: send - .. automethod:: sendline - .. automethod:: write - .. automethod:: writelines - .. automethod:: sendcontrol - .. automethod:: sendeof - .. automethod:: sendintr - .. automethod:: read - .. automethod:: readline - .. automethod:: read_nonblocking - .. automethod:: eof - .. automethod:: interact - - .. attribute:: logfile - logfile_read - logfile_send - - Set these to a Python file object (or :data:`sys.stdout`) to log all - communication, data read from the child process, or data sent to the child - process. - - .. note:: - - With :class:`spawn` in bytes mode, the log files should be open for - writing binary data. In unicode mode, they should - be open for writing unicode text. See :ref:`unicode`. - -Controlling the child process -````````````````````````````` - -.. class:: spawn - - .. automethod:: kill - .. automethod:: terminate - .. automethod:: isalive - .. automethod:: wait - .. automethod:: close - .. automethod:: getwinsize - .. automethod:: setwinsize - .. automethod:: getecho - .. automethod:: setecho - .. automethod:: waitnoecho - - .. attribute:: pid - - The process ID of the child process. - - .. attribute:: child_fd - - The file descriptor used to communicate with the child process. - -.. _unicode: - -Handling unicode -```````````````` - -By default, :class:`spawn` is a bytes interface: its read methods return bytes, -and its write/send and expect methods expect bytes. If you pass the *encoding* -parameter to the constructor, it will instead act as a unicode interface: -strings you send will be encoded using that encoding, and bytes received will -be decoded before returning them to you. In this mode, patterns for -:meth:`~spawn.expect` and :meth:`~spawn.expect_exact` should also be unicode. - -.. versionchanged:: 4.0 - - :class:`spawn` provides both the bytes and unicode interfaces. In Pexpect - 3.x, the unicode interface was provided by a separate ``spawnu`` class. - -For backwards compatibility, some Unicode is allowed in bytes mode: the -send methods will encode arbitrary unicode as UTF-8 before sending it to the -child process, and its expect methods can accept ascii-only unicode strings. - -.. note:: - - Unicode handling with pexpect works the same way on Python 2 and 3, despite - the difference in names. I.e.: - - - Bytes mode works with ``str`` on Python 2, and :class:`bytes` on Python 3, - - Unicode mode works with ``unicode`` on Python 2, and :class:`str` on Python 3. - -run function ------------- - -.. autofunction:: run - -Exceptions ----------- - -.. autoclass:: EOF - -.. autoclass:: TIMEOUT - -.. autoclass:: ExceptionPexpect - -Utility functions ------------------ - -.. autofunction:: which - -.. autofunction:: split_command_line diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/api/popen_spawn.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/api/popen_spawn.rst deleted file mode 100644 index 64cae1561ea..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/api/popen_spawn.rst +++ /dev/null @@ -1,24 +0,0 @@ -popen_spawn - use pexpect with a piped subprocess -================================================= - -.. automodule:: pexpect.popen_spawn - -PopenSpawn class ----------------- - -.. autoclass:: PopenSpawn - - .. automethod:: __init__ - .. automethod:: send - .. automethod:: sendline - .. automethod:: write - .. automethod:: writelines - .. automethod:: kill - .. automethod:: sendeof - .. automethod:: wait - - .. method:: expect - expect_exact - expect_list - - As :class:`pexpect.spawn`. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/api/pxssh.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/api/pxssh.rst deleted file mode 100644 index b947f4b5ace..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/api/pxssh.rst +++ /dev/null @@ -1,34 +0,0 @@ -pxssh - control an SSH session -============================== - -.. automodule:: pexpect.pxssh - -.. autoclass:: ExceptionPxssh - -pxssh class ------------ - -.. autoclass:: pxssh - - .. automethod:: __init__ - - .. attribute:: PROMPT - - The regex pattern to search for to find the prompt. If you call :meth:`login` - with ``auto_prompt_reset=False``, you must set this attribute manually. - - .. attribute:: force_password - - If this is set to True, public key authentication is disabled, forcing the - server to ask for a password. Note that the sysadmin can disable password - logins, in which case this won't work. - - .. attribute:: options - - The dictionary of user specified SSH options, eg, ``options = dict(StrictHostKeyChecking="no", UserKnownHostsFile="/dev/null")`` - - .. automethod:: login - .. automethod:: logout - .. automethod:: prompt - .. automethod:: sync_original_prompt - .. automethod:: set_unique_prompt diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/api/replwrap.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/api/replwrap.rst deleted file mode 100644 index bf44a948db8..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/api/replwrap.rst +++ /dev/null @@ -1,26 +0,0 @@ -replwrap - Control read-eval-print-loops -======================================== - -.. automodule:: pexpect.replwrap - -.. versionadded:: 3.3 - -.. autoclass:: REPLWrapper - - .. automethod:: run_command - -.. data:: PEXPECT_PROMPT - - A string that can be used as a prompt, and is unlikely to be found in output. - -Using the objects above, it is easy to wrap a REPL. For instance, to use a -Python shell:: - - py = REPLWrapper("python", ">>> ", "import sys; sys.ps1={!r}; sys.ps2={!r}") - py.run_command("4+7") - -Convenience functions are provided for Python and bash shells: - -.. autofunction:: python - -.. autofunction:: bash diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/clean.css b/lldb/third_party/Python/module/pexpect-4.6/doc/clean.css deleted file mode 100644 index e8d98ddb2e5..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/clean.css +++ /dev/null @@ -1,103 +0,0 @@ - -body { - margin:0px; - padding:0px; - font-family:verdana, arial, helvetica, sans-serif; - color:#333; - background-color:white; - } -pre { - background: #eeeeee; - border: 1px solid #888888; - color: black; - padding: 1em; - white-space: pre; -} -h1 { - margin:5px 0px 5px 0px; - padding:0px; - font-size:20px; - line-height:28px; - font-weight:900; - color:#44f; - } -h2 { - margin:5px 0px 5px 0px; - padding:0px; - font-size:17px; - line-height:28px; - font-weight:900; - color:#226; - } -h3 { - margin:5px 0px 5px 0px; - padding:0px; - font-size:15px; - line-height:28px; - font-weight:900; - } -p -{ - margin:0px 0px 16px 0px; - font:11px/20px verdana, arial, helvetica, sans-serif; - padding:0px; -} -table -{ - font-size: 10pt; - color: #000000; -} -td{border:1px solid #999;} - -table.pymenu {color: #000000; background-color: #99ccff} -th.pymenu {color: #ffffff; background-color: #003366} - -.code -{ - font-family: "Lucida Console", monospace; font-weight: bold; - color: #007700; background-color: #eeeeee -} - -#Content>p {margin:0px;} -#Content>p+p {text-indent:30px;} - -a { - text-decoration:none; - font-weight:600; - font-family:verdana, arial, helvetica, sans-serif; - color: #900; -} -//a:link {color:#09c;} -//a x:visited {color:#07a;} -a:hover {background-color:#ee0;} - -#Header { - margin:10px 0px 10px 0px; - padding:10px 0px 10px 20px; - /* For IE5/Win's benefit height = [correct height] + [top padding] + [top and bottom border widths] */ - height:33px; /* 14px + 17px + 2px = 33px */ - border-style:solid; - border-color:black; - border-width:1px 0px; /* top and bottom borders: 1px; left and right borders: 0px */ - line-height:33px; - background-color:#eee; - height:66px; /* the correct height */ - } - -#Content { - margin:0px 210px 50px 10px; - padding:10px; - } - -#Menu { - position:absolute; - top:100px; - right:20px; - width:172px; - padding:10px; - background-color:#eee; - border:1px solid #999; // dashed #999; - line-height:17px; - width:150px; - font-size:11px; - } diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/commonissues.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/commonissues.rst deleted file mode 100644 index f60085e2aaa..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/commonissues.rst +++ /dev/null @@ -1,101 +0,0 @@ -Common problems -=============== - -Threads -------- - -On Linux (RH 8) you cannot spawn a child from a different thread and pass the -handle back to a worker thread. The child is successfully spawned but you can't -interact with it. The only way to make it work is to spawn and interact with the -child all in the same thread. [Adam Kerrison] - -Timing issue with send() and sendline() ---------------------------------------- - -This problem has been addressed and should not affect most users. - -It is sometimes possible to read an echo of the string sent with -:meth:`~pexpect.spawn.send` and :meth:`~pexpect.spawn.sendline`. If you call -:meth:`~pexpect.spawn.send` and then immediately call :meth:`~pexpect.spawn.readline`, -you may get part of your output echoed back. You may read back what you just -wrote even if the child application does not explicitly echo it. Timing is -critical. This could be a security issue when talking to an application that -asks for a password; otherwise, this does not seem like a big deal. But why do -TTYs do this? - -People usually report this when they are trying to control SSH or some other -login. For example, if your code looks something like this:: - - child.expect ('[pP]assword:') - child.sendline (my_password) - - -1. SSH prints "password:" prompt to the user. -2. SSH turns off echo on the TTY device. -3. SSH waits for user to enter a password. - -When scripting with Pexpect what can happen is that Pexpect will respond to the -"password:" prompt before SSH has had time to turn off TTY echo. In other words, -Pexpect sends the password between steps 1. and 2., so the password gets echoed -back to the TTY. I would call this an SSH bug. - -Pexpect now automatically adds a short delay before sending data to a child -process. This more closely mimics what happens in the usual human-to-app -interaction. The delay can be tuned with the ``delaybeforesend`` attribute of the -spawn class. In general, this fixes the problem for everyone and so this should -not be an issue for most users. For some applications you might with to turn it -off:: - - child = pexpect.spawn ("ssh user@example.com") - child.delaybeforesend = None - -Truncated output just before child exits ----------------------------------------- - -So far I have seen this only on older versions of Apple's MacOS X. If the child -application quits it may not flush its output buffer. This means that your -Pexpect application will receive an EOF even though it should have received a -little more data before the child died. This is not generally a problem when -talking to interactive child applications. One example where it is a problem is -when trying to read output from a program like *ls*. You may receive most of the -directory listing, but the last few lines will get lost before you receive an EOF. -The reason for this is that *ls* runs; completes its task; and then exits. The -buffer is not flushed before exit so the last few lines are lost. The following -example demonstrates the problem:: - - child = pexpect.spawn('ls -l') - child.expect(pexpect.EOF) - print child.before - -Controlling SSH on Solaris --------------------------- - -Pexpect does not yet work perfectly on Solaris. One common problem is that SSH -sometimes will not allow TTY password authentication. For example, you may -expect SSH to ask you for a password using code like this:: - - child = pexpect.spawn('ssh user@example.com') - child.expect('password') - child.sendline('mypassword') - -You may see the following error come back from a spawned child SSH:: - - Permission denied (publickey,keyboard-interactive). - -This means that SSH thinks it can't access the TTY to ask you for your password. -The only solution I have found is to use public key authentication with SSH. -This bypasses the need for a password. I'm not happy with this solution. The -problem is due to poor support for Solaris Pseudo TTYs in the Python Standard -Library. - -child does not receive full input, emits BEL --------------------------------------------- - -You may notice when running for example cat(1) or base64(1), when sending a -very long input line, that it is not fully received, and the BEL ('\a') may -be found in output. - -By default the child terminal matches the parent, which is often in "canonical -mode processing". You may wish to disable this mode. The exact limit of a line -varies by operating system, and details of disabling canonical mode may be -found in the docstring of :meth:`~pexpect.spawn.send`. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/conf.py b/lldb/third_party/Python/module/pexpect-4.6/doc/conf.py deleted file mode 100644 index a7341473b69..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/conf.py +++ /dev/null @@ -1,250 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Pexpect documentation build configuration file, created by -# sphinx-quickstart on Tue Sep 17 11:05:11 2013. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('sphinxext')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', - 'sphinx.ext.viewcode', 'github', # for easy GitHub links - ] - -github_project_url = "https://github.com/pexpect/pexpect" - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Pexpect' -copyright = u'2013, Noah Spurrier and contributors' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '4.6' -# The full version, including alpha/beta/rc tags. -release = version - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# "<project> v<release> documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a <link> tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'Pexpectdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'Pexpect.tex', u'Pexpect Documentation', - u'Noah Spurrier and contributors', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'pexpect', u'Pexpect Documentation', - [u'Noah Spurrier and contributors'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'Pexpect', u'Pexpect Documentation', - u'Noah Spurrier and contributors', 'Pexpect', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'http://docs.python.org/3/': None} diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/examples.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/examples.rst deleted file mode 100644 index 6338b5c01cd..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/examples.rst +++ /dev/null @@ -1,63 +0,0 @@ -Examples -======== - -Under the distribution tarball directory you should find an "examples" directory. -This is the best way to learn to use Pexpect. See the descriptions of Pexpect -Examples. - -`topip.py <https://github.com/pexpect/pexpect/blob/master/examples/topip.py>`_ - This runs `netstat` on a local or remote server. It calculates some simple - statistical information on the number of external inet connections. This can - be used to detect if one IP address is taking up an excessive number of - connections. It can also send an email alert if a given IP address exceeds a - threshold between runs of the script. This script can be used as a drop-in - Munin plugin or it can be used stand-alone from cron. I used this on a busy - web server that would sometimes get hit with denial of service attacks. This - made it easy to see if a script was opening many multiple connections. A - typical browser would open fewer than 10 connections at once. A script might - open over 100 simultaneous connections. - -`hive.py <https://github.com/pexpect/pexpect/blob/master/examples/hive.py>`_ - This script creates SSH connections to a list of hosts that you provide. - Then you are given a command line prompt. Each shell command that you - enter is sent to all the hosts. The response from each host is collected - and printed. For example, you could connect to a dozen different - machines and reboot them all at once. - -`script.py <https://github.com/pexpect/pexpect/blob/master/examples/script.py>`_ - This implements a command similar to the classic BSD "script" command. - This will start a subshell and log all input and output to a file. - This demonstrates the :meth:`~pexpect.spawn.interact` method of Pexpect. - -`ftp.py <https://github.com/pexpect/pexpect/blob/master/examples/ftp.py>`_ - This demonstrates an FTP "bookmark". This connects to an ftp site; - does a few ftp tasks; and then gives the user interactive control over - the session. In this case the "bookmark" is to a directory on the - OpenBSD ftp server. It puts you in the i386 packages directory. You - can easily modify this for other sites. This demonstrates the - :meth:`~pexpect.spawn.interact` method of Pexpect. - -`monitor.py <https://github.com/pexpect/pexpect/blob/master/examples/monitor.py>`_ - This runs a sequence of commands on a remote host using SSH. It runs a - simple system checks such as uptime and free to monitor the state of - the remote host. - -`passmass.py <https://github.com/pexpect/pexpect/blob/master/examples/passmass.py>`_ - This will login to each given server and change the password of the - given user. This demonstrates scripting logins and passwords. - -`python.py <https://github.com/pexpect/pexpect/blob/master/examples/python.py>`_ - This starts the python interpreter and prints the greeting message - backwards. It then gives the user iteractive control of Python. It's - pretty useless! - -`ssh_tunnel.py <https://github.com/pexpect/pexpect/blob/master/examples/ssh_tunnel.py>`_ - This starts an SSH tunnel to a remote machine. It monitors the - connection and restarts the tunnel if it goes down. - -`uptime.py <https://github.com/pexpect/pexpect/blob/master/examples/uptime.py>`_ - This will run the uptime command and parse the output into variables. - This demonstrates using a single regular expression to match the - output of a command and capturing different variable in match groups. - The grouping regular expression handles a wide variety of different - uptime formats. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/history.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/history.rst deleted file mode 100644 index 41a591819b3..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/history.rst +++ /dev/null @@ -1,338 +0,0 @@ -History -======= - -Releases --------- - -Version 4.6 -``````````` - -* The :meth:`.pxssh.login` method now supports an ``ssh_config`` parameter, - which can be used to specify a file path to an SSH config file - (:ghpull:`490`). -* Improved compatability for the ``crlf`` parameter of :class:`~.PopenSpawn` - (:ghpull:`493`) -* Fixed an issue in read timeout handling when using :class:`~.spawn` and - :class:`~.fdspawn` with the ``use_poll`` parameter (:ghpull:`492`). - -Version 4.5 -``````````` - -* :class:`~.spawn` and :class:`~.fdspawn` now have a ``use_poll`` parameter. - If this is True, they will use :func:`select.poll` instead of :func:`select.select`. - ``poll()`` allows file descriptors above 1024, but it must be explicitly - enabled due to compatibility concerns (:ghpull:`474`). -* The :meth:`.pxssh.login` method has several new and changed options: - - * The option ``password_regex`` allows changing - the password prompt regex, for servers that include ``password:`` in a banner - before reaching a prompt (:ghpull:`468`). - * :meth:`~.pxssh.login` now allows for setting up SSH tunnels to be requested once - logged in to the remote server. This option is ``ssh_tunnels`` (:ghpull:`473`). - The structure should be like this:: - - { - 'local': ['2424:localhost:22'], # Local SSH tunnels - 'remote': ['2525:localhost:22'], # Remote SSH tunnels - 'dynamic': [8888], # Dynamic/SOCKS tunnels - } - - * The option ``spawn_local_ssh=False`` allows subsequent logins from the - remote session and treats the session as if it was local (:ghpull:`472`). - * Setting ``sync_original_prompt=False`` will prevent changing the prompt to - something unique, in case the remote server is sensitive to new lines at login - (:ghpull:`468`). - * If ``ssh_key=True`` is passed, the SSH client forces forwarding the authentication - agent to the remote server instead of providing a key (:ghpull:`473`). - -Version 4.4 -``````````` - -* :class:`~.PopenSpawn` now has a ``preexec_fn`` parameter, like :class:`~.spawn` - and :class:`subprocess.Popen`, for a function to be called in the child - process before executing the new command. Like in ``Popen``, this works only - in POSIX, and can cause issues if your application also uses threads - (:ghpull:`460`). -* Significant performance improvements when processing large amounts of data - (:ghpull:`464`). -* Ensure that ``spawn.closed`` gets set by :meth:`~.spawn.close`, and improve - an example for passing ``SIGWINCH`` through to a child process (:ghpull:`466`). - -Version 4.3.1 -````````````` - -* When launching bash for :mod:`pexpect.replwrap`, load the system ``bashrc`` - from a couple of different common locations (:ghpull:`457`), and then unset - the ``PROMPT_COMMAND`` environment variable, which can interfere with the - prompt we're expecting (:ghpull:`459`). - -Version 4.3 -``````````` - -* The ``async=`` parameter to integrate with asyncio has become ``async_=`` - (:ghpull:`431`), as *async* is becoming a Python keyword from Python 3.6. - Pexpect will still recognise ``async`` as an alternative spelling. -* Similarly, the module ``pexpect.async`` became ``pexpect._async`` - (:ghpull:`450`). This module is not part of the public API. -* Fix problems with asyncio objects closing file descriptors during garbage - collection (:ghissue:`347`, :ghpull:`376`). -* Set the ``.pid`` attribute of a :class:`~.PopenSpawn` object (:ghpull:`417`). -* Fix passing Windows paths to :class:`~.PopenSpawn` (:ghpull:`446`). -* :class:`~.PopenSpawn` on Windows can pass string commands through to ``Popen`` - without splitting them into a list (:ghpull:`447`). -* Stop ``shlex`` trying to read from stdin when :class:`~.PopenSpawn` is - passed ``cmd=None`` (:ghissue:`433`, :ghpull:`434`). -* Ensure that an error closing a Pexpect spawn object raises a Pexpect error, - rather than a Ptyprocess error (:ghissue:`383`, :ghpull:`386`). -* Cleaned up invalid backslash escape sequences in strings (:ghpull:`430`, - :ghpull:`445`). -* The pattern for a password prompt in :mod:`pexpect.pxssh` changed from - ``password`` to ``password:`` (:ghpull:`452`). -* Correct docstring for using unicode with spawn (:ghpull:`395`). -* Various other improvements to documentation. - -Version 4.2.1 -````````````` - -* Fix to allow running ``env`` in replwrap-ed bash. -* Raise more informative exception from pxssh if it fails to connect. -* Change ``passmass`` example to not log passwords entered. - -Version 4.2 -``````````` - -* Change: When an ``env`` parameter is specified to the :class:`~.spawn` or - :class:`~.run` family of calls containing a value for ``PATH``, its value is - used to discover the target executable from a relative path, rather than the - current process's environment ``PATH``. This mirrors the behavior of - :func:`subprocess.Popen` in the standard library (:ghissue:`348`). - -* Regression: Re-introduce capability for :meth:`read_nonblocking` in class - :class:`fdspawn` as previously supported in version 3.3 (:ghissue:`359`). - -Version 4.0 -``````````` - -* Integration with :mod:`asyncio`: passing ``async=True`` to :meth:`~.spawn.expect`, - :meth:`~.spawn.expect_exact` or :meth:`~.spawn.expect_list` will make them return a - coroutine. You can get the result using ``yield from``, or wrap it in an - :class:`asyncio.Task`. This allows the event loop to do other things while - waiting for output that matches a pattern. -* Experimental support for Windows (with some caveats)—see :ref:`windows`. -* Enhancement: allow method as callbacks of argument ``events`` for - :func:`pexpect.run` (:ghissue:`176`). -* It is now possible to call :meth:`~.spawn.wait` multiple times, or after a process - is already determined to be terminated without raising an exception - (:ghpull:`211`). -* New :class:`pexpect.spawn` keyword argument, ``dimensions=(rows, columns)`` - allows setting terminal screen dimensions before launching a program - (:ghissue:`122`). -* Fix regression that prevented executable, but unreadable files from - being found when not specified by absolute path -- such as - /usr/bin/sudo (:ghissue:`104`). -* Fixed regression when executing pexpect with some prior releases of - the multiprocessing module where stdin has been closed (:ghissue:`86`). - -Backwards incompatible changes -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -* Deprecated ``pexpect.screen`` and ``pexpect.ANSI``. Please use other packages - such as `pyte <https://pypi.python.org/pypi/pyte>`__ to emulate a terminal. -* Removed the independent top-level modules (``pxssh fdpexpect FSM screen ANSI``) - which were installed alongside Pexpect. These were moved into the Pexpect - package in 3.0, but the old names were left as aliases. -* Child processes created by Pexpect no longer ignore SIGHUP by default: the - ``ignore_sighup`` parameter of :class:`pexpect.spawn` defaults to False. To - get the old behaviour, pass ``ignore_sighup=True``. - -Version 3.3 -``````````` - -* Added a mechanism to wrap REPLs, or shells, in an object which can conveniently - be used to send commands and wait for the output (:mod:`pexpect.replwrap`). -* Fixed issue where pexpect would attempt to execute a directory because - it has the 'execute' bit set (:ghissue:`37`). -* Removed the ``pexpect.psh`` module. This was never documented, and we found - no evidence that people use it. The new :mod:`pexpect.replwrap` module - provides a more flexible alternative. -* Fixed ``TypeError: got <type 'str'> ('\r\n') as pattern`` in :meth:`spawnu.readline` - method (:ghissue:`67`). -* Fixed issue where EOF was not correctly detected in :meth:`~.interact`, causing - a repeating loop of output on Linux, and blocking before EOF on BSD and - Solaris (:ghissue:`49`). -* Several Solaris (SmartOS) bugfixes, preventing :exc:`IOError` exceptions, especially - when used with cron(1) (:ghissue:`44`). -* Added new keyword argument ``echo=True`` for :class:`spawn`. On SVR4-like - systems, the method :meth:`~.isatty` will always return *False*: the child pty - does not appear as a terminal. Therefore, :meth:`~.setecho`, :meth:`~.getwinsize`, - :meth:`~.setwinsize`, and :meth:`~.waitnoecho` are not supported on those platforms. - -After this, we intend to start working on a bigger refactoring of the code, to -be released as Pexpect 4. There may be more bugfix 3.x releases, however. - -Version 3.2 -``````````` - -* Fix exception handling from :func:`select.select` on Python 2 (:ghpull:`38`). - This was accidentally broken in the previous release when it was fixed for - Python 3. -* Removed a workaround for ``TIOCSWINSZ`` on very old systems, which was causing - issues on some BSD systems (:ghpull:`40`). -* Fixed an issue with exception handling in :mod:`~pexpect.pxssh` (:ghpull:`43`) - -The documentation for :mod:`~pexpect.pxssh` was improved. - -Version 3.1 -``````````` - -* Fix an issue that prevented importing pexpect on Python 3 when ``sys.stdout`` - was reassigned (:ghissue:`30`). -* Improve prompt synchronisation in :mod:`~pexpect.pxssh` (:ghpull:`28`). -* Fix pickling exception instances (:ghpull:`34`). -* Fix handling exceptions from :func:`select.select` on Python 3 (:ghpull:`33`). - -The examples have also been cleaned up somewhat - this will continue in future -releases. - -Version 3.0 -``````````` - -The new major version number doesn't indicate any deliberate API incompatibility. -We have endeavoured to avoid breaking existing APIs. However, pexpect is under -new maintenance after a long dormancy, so some caution is warranted. - -* A new :ref:`unicode API <unicode>` was introduced. -* Python 3 is now supported, using a single codebase. -* Pexpect now requires at least Python 2.6 or 3.2. -* The modules other than pexpect, such as :mod:`pexpect.fdpexpect` and - :mod:`pexpect.pxssh`, were moved into the pexpect package. For now, wrapper - modules are installed to the old locations for backwards compatibility (e.g. - ``import pxssh`` will still work), but these will be removed at some point in - the future. -* Ignoring ``SIGHUP`` is now optional - thanks to Kimmo Parviainen-Jalanko for - the patch. - -We also now have `docs on ReadTheDocs <https://pexpect.readthedocs.io/>`_, -and `continuous integration on Travis CI <https://travis-ci.org/pexpect/pexpect>`_. - -Version 2.4 -``````````` - -* Fix a bug regarding making the pty the controlling terminal when the process - spawning it is not, actually, a terminal (such as from cron) - -Version 2.3 -``````````` - -* Fixed OSError exception when a pexpect object is cleaned up. Previously, you - might have seen this exception:: - - Exception exceptions.OSError: (10, 'No child processes') - in <bound method spawn.__del__ of <pexpect.spawn instance at 0xd248c>> ignored - - You should not see that anymore. Thanks to Michael Surette. -* Added support for buffering reads. This greatly improves speed when trying to - match long output from a child process. When you create an instance of the spawn - object you can then set a buffer size. For now you MUST do the following to turn - on buffering -- it may be on by default in future version:: - - child = pexpect.spawn ('my_command') - child.maxread=1000 # Sets buffer to 1000 characters. - -* I made a subtle change to the way TIMEOUT and EOF exceptions behave. - Previously you could either expect these states in which case pexpect - will not raise an exception, or you could just let pexpect raise an - exception when these states were encountered. If you expected the - states then the ``before`` property was set to everything before the - state was encountered, but if you let pexpect raise the exception then - ``before`` was not set. Now, the ``before`` property will get set either - way you choose to handle these states. -* The spawn object now provides iterators for a *file-like interface*. - This makes Pexpect a more complete file-like object. You can now write - code like this:: - - child = pexpect.spawn ('ls -l') - for line in child: - print line - -* write and writelines() no longer return a value. Use send() if you need that - functionality. I did this to make the Spawn object more closely match a - file-like object. -* Added the attribute ``exitstatus``. This will give the exit code returned - by the child process. This will be set to ``None`` while the child is still - alive. When ``isalive()`` returns 0 then ``exitstatus`` will be set. -* Made a few more tweaks to ``isalive()`` so that it will operate more - consistently on different platforms. Solaris is the most difficult to support. -* You can now put ``TIMEOUT`` in a list of expected patterns. This is just like - putting ``EOF`` in the pattern list. Expecting for a ``TIMEOUT`` may not be - used as often as ``EOF``, but this makes Pexpect more consistent. -* Thanks to a suggestion and sample code from Chad J. Schroeder I added the ability - for Pexpect to operate on a file descriptor that is already open. This means that - Pexpect can be used to control streams such as those from serial port devices. Now, - you just pass the integer file descriptor as the "command" when constructing a - spawn open. For example on a Linux box with a modem on ttyS1:: - - fd = os.open("/dev/ttyS1", os.O_RDWR|os.O_NONBLOCK|os.O_NOCTTY) - m = pexpect.spawn(fd) # Note integer fd is used instead of usual string. - m.send("+++") # Escape sequence - m.send("ATZ0\r") # Reset modem to profile 0 - rval = m.expect(["OK", "ERROR"]) - -* ``read()`` was renamed to ``read_nonblocking()``. Added new ``read()`` method - that matches file-like object interface. In general, you should not notice - the difference except that ``read()`` no longer allows you to directly set the - timeout value. I hope this will not effect any existing code. Switching to - ``read_nonblocking()`` should fix existing code. -* Changed the name of ``set_echo()`` to ``setecho()``. -* Changed the name of ``send_eof()`` to ``sendeof()``. -* Modified ``kill()`` so that it checks to make sure the pid ``isalive()``. -* modified ``spawn()`` (really called from ``__spawn()``) so that it does not - raise an exception if ``setwinsize()`` fails. Some platforms such as Cygwin - do not like setwinsize. This was a constant problem and since it is not a - critical feature I decided to just silence the error. Normally I don't like - to do that, but in this case I'm making an exception. -* Added a method ``close()`` that does what you think. It closes the file - descriptor of the child application. It makes no attempt to actually kill the - child or wait for its status. -* Add variables ``__version__`` and ``__revision__`` (from cvs) to the pexpect - modules. This is mainly helpful to me so that I can make sure that I'm testing - with the right version instead of one already installed. -* ``log_open()`` and ``log_close(`` have been removed. Now use ``setlog()``. - The ``setlog()`` method takes a file object. This is far more flexible than - the previous log method. Each time data is written to the file object it will - be flushed. To turn logging off simply call ``setlog()`` with None. -* renamed the ``isAlive()`` method to ``isalive()`` to match the more typical - naming style in Python. Also the technique used to detect child process - status has been drastically modified. Previously I did some funky stuff - with signals which caused indigestion in other Python modules on some - platforms. It was a big headache. It still is, but I think it works - better now. -* attribute ``matched`` renamed to ``after`` -* new attribute ``match`` -* The ``expect_eof()`` method is gone. You can now simply use the - ``expect()`` method to look for EOF. -* **Pexpect works on OS X**, but the nature of the quirks cause many of the - tests to fail. See bugs. (Incomplete Child Output). The problem is more - than minor, but Pexpect is still more than useful for most tasks. -* **Solaris**: For some reason, the *second* time a pty file descriptor is created and - deleted it never gets returned for use. It does not effect the first time - or the third time or any time after that. It's only the second time. This - is weird... This could be a file descriptor leak, or it could be some - peculiarity of how Solaris recycles them. I thought it was a UNIX requirement - for the OS to give you the lowest available filedescriptor number. In any case, - this should not be a problem unless you create hundreds of pexpect instances... - It may also be a pty module bug. - - -Moves and forks ---------------- - -* Pexpect development used to be hosted on Sourceforge. -* In 2011, Thomas Kluyver forked pexpect as 'pexpect-u', to support - Python 3. He later decided he had taken the wrong approach with this. -* In 2012, Noah Spurrier, the original author of Pexpect, moved the - project to Github, but was still too busy to develop it much. -* In 2013, Thomas Kluyver and Jeff Quast forked Pexpect again, intending - to call the new fork Pexpected. Noah Spurrier agreed to let them use - the name Pexpect, so Pexpect versions 3 and above are based on this - fork, which now lives `here on Github <https://github.com/pexpect/pexpect>`_. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/index.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/index.rst deleted file mode 100644 index 0bcf862dd4d..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/index.rst +++ /dev/null @@ -1,50 +0,0 @@ -Pexpect version |version| -========================= - -.. image:: https://travis-ci.org/pexpect/pexpect.png?branch=master - :target: https://travis-ci.org/pexpect/pexpect - :align: right - :alt: Build status - -Pexpect makes Python a better tool for controlling other -applications. - -Pexpect is a pure Python module for spawning child applications; -controlling them; and responding to expected patterns in their output. -Pexpect works like Don Libes' Expect. Pexpect allows your script to -spawn a child application and control it as if a human were typing -commands. - -Pexpect can be used for automating interactive applications such as -ssh, ftp, passwd, telnet, etc. It can be used to a automate setup -scripts for duplicating software package installations on different -servers. It can be used for automated software testing. Pexpect is in -the spirit of Don Libes' Expect, but Pexpect is pure Python. Unlike -other Expect-like modules for Python, Pexpect does not require TCL or -Expect nor does it require C extensions to be compiled. It should work -on any platform that supports the standard Python pty module. The -Pexpect interface was designed to be easy to use. - -Contents: - -.. toctree:: - :maxdepth: 2 - - install - overview - api/index - examples - FAQ - commonissues - history - -Pexpect is developed `on Github <http://github.com/pexpect/pexpect>`_. Please -report `issues <https://github.com/pexpect/pexpect/issues>`_ there as well. - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/install.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/install.rst deleted file mode 100644 index 6f7e36af62d..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/install.rst +++ /dev/null @@ -1,20 +0,0 @@ -Installation -============ - -Pexpect is on PyPI, and can be installed with standard tools:: - - pip install pexpect - -Or:: - - easy_install pexpect - -Requirements ------------- - -This version of Pexpect requires Python 3.3 or above, or Python 2.7. - -As of version 4.0, Pexpect can be used on Windows and POSIX systems. However, -:class:`pexpect.spawn` and :func:`pexpect.run` are only available on POSIX, -where the :mod:`pty` module is present in the standard library. See -:ref:`windows` for more information. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/make.bat b/lldb/third_party/Python/module/pexpect-4.6/doc/make.bat deleted file mode 100644 index 448f1470824..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/make.bat +++ /dev/null @@ -1,190 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=_build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . -set I18NSPHINXOPTS=%SPHINXOPTS% . -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% - set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^<target^>` where ^<target^> is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. texinfo to make Texinfo files - echo. gettext to make PO message catalogs - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Pexpect.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Pexpect.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "texinfo" ( - %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. - goto end -) - -if "%1" == "gettext" ( - %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The message catalogs are in %BUILDDIR%/locale. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/overview.rst b/lldb/third_party/Python/module/pexpect-4.6/doc/overview.rst deleted file mode 100644 index e52809cdc68..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/overview.rst +++ /dev/null @@ -1,266 +0,0 @@ -API Overview -============ - -Pexpect can be used for automating interactive applications such as ssh, ftp, -mencoder, passwd, etc. The Pexpect interface was designed to be easy to use. - -Here is an example of Pexpect in action:: - - # This connects to the openbsd ftp site and - # downloads the recursive directory listing. - import pexpect - child = pexpect.spawn('ftp ftp.openbsd.org') - child.expect('Name .*: ') - child.sendline('anonymous') - child.expect('Password:') - child.sendline('noah@example.com') - child.expect('ftp> ') - child.sendline('lcd /tmp') - child.expect('ftp> ') - child.sendline('cd pub/OpenBSD') - child.expect('ftp> ') - child.sendline('get README') - child.expect('ftp> ') - child.sendline('bye') - -Obviously you could write an ftp client using Python's own :mod:`ftplib` module, -but this is just a demonstration. You can use this technique with any application. -This is especially handy if you are writing automated test tools. - -There are two important methods in Pexpect -- :meth:`~pexpect.spawn.expect` and -:meth:`~pexpect.spawn.send` (or :meth:`~pexpect.spawn.sendline` which is -like :meth:`~pexpect.spawn.send` with a linefeed). The :meth:`~pexpect.spawn.expect` -method waits for the child application to return a given string. The string you -specify is a regular expression, so you can match complicated patterns. The -:meth:`~pexpect.spawn.send` method writes a string to the child application. -From the child's point of view it looks just like someone typed the text from a -terminal. After each call to :meth:`~pexpect.spawn.expect` the ``before`` and ``after`` -properties will be set to the text printed by child application. The ``before`` -property will contain all text up to the expected string pattern. The ``after`` -string will contain the text that was matched by the expected pattern. -The match property is set to the `re match object <http://docs.python.org/3/library/re#match-objects>`_. - -An example of Pexpect in action may make things more clear. This example uses -ftp to login to the OpenBSD site; list files in a directory; and then pass -interactive control of the ftp session to the human user:: - - import pexpect - child = pexpect.spawn ('ftp ftp.openbsd.org') - child.expect ('Name .*: ') - child.sendline ('anonymous') - child.expect ('Password:') - child.sendline ('noah@example.com') - child.expect ('ftp> ') - child.sendline ('ls /pub/OpenBSD/') - child.expect ('ftp> ') - print child.before # Print the result of the ls command. - child.interact() # Give control of the child to the user. - -Special EOF and TIMEOUT patterns --------------------------------- - -There are two special patterns to match the End Of File (:class:`~pexpect.EOF`) -or a Timeout condition (:class:`~pexpect.TIMEOUT`). You can pass these -patterns to :meth:`~pexpect.spawn.expect`. These patterns are not regular -expressions. Use them like predefined constants. - -If the child has died and you have read all the child's output then ordinarily -:meth:`~pexpect.spawn.expect` will raise an :class:`~pexpect.EOF` exception. -You can read everything up to the EOF without generating an exception by using -the EOF pattern expect. In this case everything the child has output will be -available in the ``before`` property. - -The pattern given to :meth:`~pexpect.spawn.expect` may be a regular expression -or it may also be a list of regular expressions. This allows you to match -multiple optional responses. The :meth:`~pexpect.spawn.expect` method returns -the index of the pattern that was matched. For example, say you wanted to login -to a server. After entering a password you could get various responses from the -server -- your password could be rejected; or you could be allowed in and asked -for your terminal type; or you could be let right in and given a command prompt. -The following code fragment gives an example of this:: - - child.expect('password:') - child.sendline(my_secret_password) - # We expect any of these three patterns... - i = child.expect (['Permission denied', 'Terminal type', '[#\$] ']) - if i==0: - print('Permission denied on host. Can\'t login') - child.kill(0) - elif i==1: - print('Login OK... need to send terminal type.') - child.sendline('vt100') - child.expect('[#\$] ') - elif i==2: - print('Login OK.') - print('Shell command prompt', child.after) - -If nothing matches an expected pattern then :meth:`~pexpect.spawn.expect` will -eventually raise a :class:`~pexpect.TIMEOUT` exception. The default time is 30 -seconds, but you can change this by passing a timeout argument to -:meth:`~pexpect.spawn.expect`:: - - # Wait no more than 2 minutes (120 seconds) for password prompt. - child.expect('password:', timeout=120) - -Find the end of line -- CR/LF conventions ------------------------------------------ - -Pexpect matches regular expressions a little differently than what you might be -used to. - -The :regexp:`$` pattern for end of line match is useless. The :regexp:`$` -matches the end of string, but Pexpect reads from the child one character at a -time, so each character looks like the end of a line. Pexpect can't do a -look-ahead into the child's output stream. In general you would have this -situation when using regular expressions with any stream. - -.. note:: - - Pexpect does have an internal buffer, so reads are faster than one character - at a time, but from the user's perspective the regex patterns test happens - one character at a time. - -The best way to match the end of a line is to look for the newline: ``"\r\n"`` -(CR/LF). Yes, that does appear to be DOS-style. It may surprise some UNIX people -to learn that terminal TTY device drivers (dumb, vt100, ANSI, xterm, etc.) all -use the CR/LF combination to signify the end of line. Pexpect uses a Pseudo-TTY -device to talk to the child application, so when the child app prints ``"\n"`` -you actually see ``"\r\n"``. - -UNIX uses just linefeeds to end lines of text, but not when it comes to TTY -devices! TTY devices are more like the Windows world. Each line of text ends -with a CR/LF combination. When you intercept data from a UNIX command from a -TTY device you will find that the TTY device outputs a CR/LF combination. A -UNIX command may only write a linefeed (``\n``), but the TTY device driver -converts it to CR/LF. This means that your terminal will see lines end with -CR/LF (hex ``0D 0A``). Since Pexpect emulates a terminal, to match ends of -lines you have to expect the CR/LF combination:: - - child.expect('\r\n') - -If you just need to skip past a new line then ``expect('\n')`` by itself will -work, but if you are expecting a specific pattern before the end of line then -you need to explicitly look for the ``\r``. For example the following expects a -word at the end of a line:: - - child.expect('\w+\r\n') - -But the following would both fail:: - - child.expect('\w+\n') - -And as explained before, trying to use :regexp:`$` to match the end of line -would not work either:: - - child.expect ('\w+$') - -So if you need to explicitly look for the END OF LINE, you want to look for the -CR/LF combination -- not just the LF and not the $ pattern. - -This problem is not limited to Pexpect. This problem happens any time you try -to perform a regular expression match on a stream. Regular expressions need to -look ahead. With a stream it is hard to look ahead because the process -generating the stream may not be finished. There is no way to know if the -process has paused momentarily or is finished and waiting for you. Pexpect must -implicitly always do a NON greedy match (minimal) at the end of a input. - -Pexpect compiles all regular expressions with the :data:`re.DOTALL` flag. -With the :data:`~re.DOTALL` flag, a ``"."`` will match a newline. - -Beware of + and * at the end of patterns ----------------------------------------- - -Remember that any time you try to match a pattern that needs look-ahead that -you will always get a minimal match (non greedy). For example, the following -will always return just one character:: - - child.expect ('.+') - -This example will match successfully, but will always return no characters:: - - child.expect ('.*') - -Generally any star * expression will match as little as possible. - -One thing you can do is to try to force a non-ambiguous character at the end of -your :regexp:`\\d+` pattern. Expect that character to delimit the string. For -example, you might try making the end of your pattern be :regexp:`\\D+` instead -of :regexp:`\\D*`. Number digits alone would not satisfy the :regexp:`(\\d+)\\D+` -pattern. You would need some numbers and at least one non-number at the end. - - -Debugging ---------- - -If you get the string value of a :class:`pexpect.spawn` object you will get lots -of useful debugging information. For debugging it's very useful to use the -following pattern:: - - try: - i = child.expect ([pattern1, pattern2, pattern3, etc]) - except: - print("Exception was thrown") - print("debug information:") - print(str(child)) - -It is also useful to log the child's input and out to a file or the screen. The -following will turn on logging and send output to stdout (the screen):: - - child = pexpect.spawn(foo) - child.logfile = sys.stdout - -Exceptions ----------- - -:class:`~pexpect.EOF` - -Note that two flavors of EOF Exception may be thrown. They are virtually -identical except for the message string. For practical purposes you should have -no need to distinguish between them, but they do give a little extra information -about what type of platform you are running. The two messages are: - -- "End Of File (EOF) in read(). Exception style platform." -- "End Of File (EOF) in read(). Empty string style platform." - -Some UNIX platforms will throw an exception when you try to read from a file -descriptor in the EOF state. Other UNIX platforms instead quietly return an -empty string to indicate that the EOF state has been reached. - -If you wish to read up to the end of the child's output without generating an -:class:`~pexpect.EOF` exception then use the ``expect(pexpect.EOF)`` method. - -:class:`~pexpect.TIMEOUT` - -The :meth:`~pexpect.spawn.expect` and :meth:`~pexpect.spawn.read` methods will -also timeout if the child does not generate any output for a given amount of -time. If this happens they will raise a :class:`~pexpect.TIMEOUT` exception. -You can have these methods ignore timeout and block indefinitely by passing -``None`` for the timeout parameter:: - - child.expect(pexpect.EOF, timeout=None) - -.. _windows: - -Pexpect on Windows ------------------- - -.. versionadded:: 4.0 - Windows support - -Pexpect can be used on Windows to wait for a pattern to be produced by a child -process, using :class:`pexpect.popen_spawn.PopenSpawn`, or a file descriptor, -using :class:`pexpect.fdpexpect.fdspawn`. - -:class:`pexpect.spawn` and :func:`pexpect.run` are *not* available on Windows, -as they rely on Unix pseudoterminals (ptys). Cross platform code must not use -these. - -``PopenSpawn`` is not a direct replacement for ``spawn``. Many programs only -offer interactive behaviour if they detect that they are running in a terminal. -When run by ``PopenSpawn``, they may behave differently. - -.. seealso:: - - `winpexpect <https://pypi.python.org/pypi/winpexpect>`__ and `wexpect <https://gist.github.com/anthonyeden/8488763>`__ - Two unmaintained pexpect-like modules for Windows, which work with a - hidden console. diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/requirements.txt b/lldb/third_party/Python/module/pexpect-4.6/doc/requirements.txt deleted file mode 100644 index 57ebb2d6bdd..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -ptyprocess diff --git a/lldb/third_party/Python/module/pexpect-4.6/doc/sphinxext/github.py b/lldb/third_party/Python/module/pexpect-4.6/doc/sphinxext/github.py deleted file mode 100644 index 519e146d198..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/doc/sphinxext/github.py +++ /dev/null @@ -1,155 +0,0 @@ -"""Define text roles for GitHub - -* ghissue - Issue -* ghpull - Pull Request -* ghuser - User - -Adapted from bitbucket example here: -https://bitbucket.org/birkenfeld/sphinx-contrib/src/tip/bitbucket/sphinxcontrib/bitbucket.py - -Authors -------- - -* Doug Hellmann -* Min RK -""" -# -# Original Copyright (c) 2010 Doug Hellmann. All rights reserved. -# - -from docutils import nodes, utils -from docutils.parsers.rst.roles import set_classes - -def make_link_node(rawtext, app, type, slug, options): - """Create a link to a github resource. - - :param rawtext: Text being replaced with link node. - :param app: Sphinx application context - :param type: Link type (issues, changeset, etc.) - :param slug: ID of the thing to link to - :param options: Options dictionary passed to role func. - """ - - try: - base = app.config.github_project_url - if not base: - raise AttributeError - if not base.endswith('/'): - base += '/' - except AttributeError as err: - raise ValueError('github_project_url configuration value is not set (%s)' % str(err)) - - ref = base + type + '/' + slug + '/' - set_classes(options) - prefix = "#" - if type == 'pull': - prefix = "PR " + prefix - node = nodes.reference(rawtext, prefix + utils.unescape(slug), refuri=ref, - **options) - return node - -def ghissue_role(name, rawtext, text, lineno, inliner, options={}, content=[]): - """Link to a GitHub issue. - - Returns 2 part tuple containing list of nodes to insert into the - document and a list of system messages. Both are allowed to be - empty. - - :param name: The role name used in the document. - :param rawtext: The entire markup snippet, with role. - :param text: The text marked with the role. - :param lineno: The line number where rawtext appears in the input. - :param inliner: The inliner instance that called us. - :param options: Directive options for customization. - :param content: The directive content for customization. - """ - - try: - issue_num = int(text) - if issue_num <= 0: - raise ValueError - except ValueError: - msg = inliner.reporter.error( - 'GitHub issue number must be a number greater than or equal to 1; ' - '"%s" is invalid.' % text, line=lineno) - prb = inliner.problematic(rawtext, rawtext, msg) - return [prb], [msg] - app = inliner.document.settings.env.app - #app.info('issue %r' % text) - if 'pull' in name.lower(): - category = 'pull' - elif 'issue' in name.lower(): - category = 'issues' - else: - msg = inliner.reporter.error( - 'GitHub roles include "ghpull" and "ghissue", ' - '"%s" is invalid.' % name, line=lineno) - prb = inliner.problematic(rawtext, rawtext, msg) - return [prb], [msg] - node = make_link_node(rawtext, app, category, str(issue_num), options) - return [node], [] - -def ghuser_role(name, rawtext, text, lineno, inliner, options={}, content=[]): - """Link to a GitHub user. - - Returns 2 part tuple containing list of nodes to insert into the - document and a list of system messages. Both are allowed to be - empty. - - :param name: The role name used in the document. - :param rawtext: The entire markup snippet, with role. - :param text: The text marked with the role. - :param lineno: The line number where rawtext appears in the input. - :param inliner: The inliner instance that called us. - :param options: Directive options for customization. - :param content: The directive content for customization. - """ - app = inliner.document.settings.env.app - #app.info('user link %r' % text) - ref = 'https://www.github.com/' + text - node = nodes.reference(rawtext, text, refuri=ref, **options) - return [node], [] - -def ghcommit_role(name, rawtext, text, lineno, inliner, options={}, content=[]): - """Link to a GitHub commit. - - Returns 2 part tuple containing list of nodes to insert into the - document and a list of system messages. Both are allowed to be - empty. - - :param name: The role name used in the document. - :param rawtext: The entire markup snippet, with role. - :param text: The text marked with the role. - :param lineno: The line number where rawtext appears in the input. - :param inliner: The inliner instance that called us. - :param options: Directive options for customization. - :param content: The directive content for customization. - """ - app = inliner.document.settings.env.app - #app.info('user link %r' % text) - try: - base = app.config.github_project_url - if not base: - raise AttributeError - if not base.endswith('/'): - base += '/' - except AttributeError as err: - raise ValueError('github_project_url configuration value is not set (%s)' % str(err)) - - ref = base + text - node = nodes.reference(rawtext, text[:6], refuri=ref, **options) - return [node], [] - - -def setup(app): - """Install the plugin. - - :param app: Sphinx application context. - """ - app.info('Initializing GitHub plugin') - app.add_role('ghissue', ghissue_role) - app.add_role('ghpull', ghissue_role) - app.add_role('ghuser', ghuser_role) - app.add_role('ghcommit', ghcommit_role) - app.add_config_value('github_project_url', None, 'env') - return diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/README b/lldb/third_party/Python/module/pexpect-4.6/examples/README deleted file mode 100644 index 823cc6335a9..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/README +++ /dev/null @@ -1,86 +0,0 @@ -This directory contains scripts that give examples of using Pexpect. - -hive.py - This script creates SSH connections to a list of hosts that - you provide. Then you are given a command line prompt. Each - shell command that you enter is sent to all the hosts. The - response from each host is collected and printed. For example, - you could connect to a dozen different machines and reboot - them all at once. - -script.py - This implements a command similar to the classic BSD "script" command. - This will start a subshell and log all input and output to a file. - This demonstrates the interact() method of Pexpect. - -fix_cvs_files.py - This is for cleaning up binary files improperly added to - CVS. This script scans the given path to find binary files; - checks with CVS to see if the sticky options are set to -kb; - finally if sticky options are not -kb then uses 'cvs admin' - to set the -kb option. - -ftp.py - This demonstrates an FTP "bookmark". - This connects to an ftp site; does a few ftp commands; and then gives the user - interactive control over the session. In this case the "bookmark" is to a - directory on the OpenBSD ftp server. It puts you in the i386 packages - directory. You can easily modify this for other sites. - This demonstrates the interact() method of Pexpect. - -monitor.py - This runs a sequence of system status commands on a remote host using SSH. - It runs a simple system checks such as uptime and free to monitor - the state of the remote host. - -passmass.py - This will login to a list of hosts and change the password of the - given user. This demonstrates scripting logins; although, you could - more easily do this using the pxssh subclass of Pexpect. - See also the "hive.py" example script for a more general example - of scripting a collection of servers. - -python.py - This starts the python interpreter and prints the greeting message backwards. - It then gives the user interactive control of Python. It's pretty useless! - -rippy.py - This is a wizard for mencoder. It greatly simplifies the process of - ripping a DVD to mpeg4 format (XviD, DivX). It can transcode from any - video file to another. It has options for resampling the audio stream; - removing interlace artifacts, fitting to a target file size, etc. - There are lots of options, but the process is simple and easy to use. - -ssh_tunnel.py - This starts an SSH tunnel to a remote machine. It monitors the connection - and restarts the tunnel if it goes down. - -uptime.py - This will run the uptime command and parse the output into python variables. - This demonstrates using a single regular expression to match the output - of a command and capturing different variable in match groups. - The regular expression takes into account a wide variety of different - formats for uptime output. - -df.py - This collects filesystem capacity info using the 'df' command. - Tuples of filesystem name and percentage are stored in a list. - A simple report is printed. Filesystems over 95% capacity are highlighted. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/astat.py b/lldb/third_party/Python/module/pexpect-4.6/examples/astat.py deleted file mode 100755 index abba1be22b9..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/astat.py +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env python - -'''This runs Apache Status on the remote host and returns the number of requests per second. - -./astat.py [-s server_hostname] [-u username] [-p password] - -s : hostname of the remote server to login to. - -u : username to user for login. - -p : Password to user for login. - -Example: - This will print information about the given host: - ./astat.py -s www.example.com -u mylogin -p mypassword - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import os -import sys -import getopt -import getpass -import pxssh - - -try: - raw_input -except NameError: - raw_input = input - - -def exit_with_usage(): - - print(globals()['__doc__']) - os._exit(1) - - -def main(): - - ###################################################################### - ## Parse the options, arguments, get ready, etc. - ###################################################################### - try: - optlist, args = getopt.getopt(sys.argv[1:], 'h?s:u:p:', ['help','h','?']) - except Exception as e: - print(str(e)) - exit_with_usage() - options = dict(optlist) - if len(args) > 1: - exit_with_usage() - - if [elem for elem in options if elem in ['-h','--h','-?','--?','--help']]: - print("Help:") - exit_with_usage() - - if '-s' in options: - hostname = options['-s'] - else: - hostname = raw_input('hostname: ') - if '-u' in options: - username = options['-u'] - else: - username = raw_input('username: ') - if '-p' in options: - password = options['-p'] - else: - password = getpass.getpass('password: ') - - # - # Login via SSH - # - p = pxssh.pxssh() - p.login(hostname, username, password) - p.sendline('apachectl status') - p.expect(r'([0-9]+\.[0-9]+)\s*requests/sec') - requests_per_second = p.match.groups()[0] - p.logout() - print(requests_per_second) - -if __name__ == "__main__": - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/cgishell.cgi b/lldb/third_party/Python/module/pexpect-4.6/examples/cgishell.cgi deleted file mode 100755 index 57d8667eb91..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/cgishell.cgi +++ /dev/null @@ -1,766 +0,0 @@ -#!/usr/bin/python -##!/usr/bin/env python -"""CGI shell server - -This exposes a shell terminal on a web page. -It uses AJAX to send keys and receive screen updates. -The client web browser needs nothing but CSS and Javascript. - - --hostname : sets the remote host name to open an ssh connection to. - --username : sets the user name to login with - --password : (optional) sets the password to login with - --port : set the local port for the server to listen on - --watch : show the virtual screen after each client request - -This project is probably not the most security conscious thing I've ever built. -This should be considered an experimental tool -- at best. -""" - -from __future__ import absolute_import -from __future__ import print_function - -import sys,os -sys.path.insert (0,os.getcwd()) # let local modules precede any installed modules -import socket, random, string, traceback, cgi, time, getopt, getpass, threading, resource, signal -import pxssh, pexpect, ANSI - -def exit_with_usage(exit_code=1): - print(globals()['__doc__']) - os._exit(exit_code) - -def client (command, host='localhost', port=-1): - """This sends a request to the server and returns the response. - If port <= 0 then host is assumed to be the filename of a Unix domain socket. - If port > 0 then host is an inet hostname. - """ - if port <= 0: - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - s.connect(host) - else: - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - s.connect((host, port)) - s.send(command) - data = s.recv (2500) - s.close() - return data - -def server (hostname, username, password, socket_filename='/tmp/server_sock', daemon_mode = True, verbose=False): - """This starts and services requests from a client. - If daemon_mode is True then this forks off a separate daemon process and returns the daemon's pid. - If daemon_mode is False then this does not return until the server is done. - """ - if daemon_mode: - mypid_name = '/tmp/%d.pid' % os.getpid() - daemon_pid = daemonize(daemon_pid_filename=mypid_name) - time.sleep(1) - if daemon_pid != 0: - os.unlink(mypid_name) - return daemon_pid - - virtual_screen = ANSI.ANSI (24,80) - child = pxssh.pxssh() - try: - child.login (hostname, username, password, login_naked=True) - except: - return - if verbose: print('login OK') - virtual_screen.write (child.before) - virtual_screen.write (child.after) - - if os.path.exists(socket_filename): os.remove(socket_filename) - s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - s.bind(socket_filename) - os.chmod(socket_filename, 0o777) - if verbose: print('Listen') - s.listen(1) - - r = roller (endless_poll, (child, child.PROMPT, virtual_screen)) - r.start() - if verbose: print("started screen-poll-updater in background thread") - sys.stdout.flush() - try: - while True: - conn, addr = s.accept() - if verbose: print('Connected by', addr) - data = conn.recv(1024) - request = data.split(' ', 1) - if len(request)>1: - cmd = request[0].strip() - arg = request[1].strip() - else: - cmd = request[0].strip() - arg = '' - - if cmd == 'exit': - r.cancel() - break - elif cmd == 'sendline': - child.sendline (arg) - time.sleep(0.1) - shell_window = str(virtual_screen) - elif cmd == 'send' or cmd=='xsend': - if cmd=='xsend': - arg = arg.decode("hex") - child.send (arg) - time.sleep(0.1) - shell_window = str(virtual_screen) - elif cmd == 'cursor': - shell_window = '%x,%x' % (virtual_screen.cur_r, virtual_screen.cur_c) - elif cmd == 'refresh': - shell_window = str(virtual_screen) - elif cmd == 'hash': - shell_window = str(hash(str(virtual_screen))) - - response = [] - response.append (shell_window) - if verbose: print('\n'.join(response)) - sent = conn.send('\n'.join(response)) - if sent < len (response): - if verbose: print("Sent is too short. Some data was cut off.") - conn.close() - except e: - pass - r.cancel() - if verbose: print("cleaning up socket") - s.close() - if os.path.exists(socket_filename): os.remove(socket_filename) - if verbose: print("server done!") - -class roller (threading.Thread): - """This class continuously loops a function in a thread. - This is basically a thin layer around Thread with a - while loop and a cancel. - """ - def __init__(self, function, args=[], kwargs={}): - threading.Thread.__init__(self) - self.function = function - self.args = args - self.kwargs = kwargs - self.finished = threading.Event() - def cancel(self): - """Stop the roller.""" - self.finished.set() - def run(self): - while not self.finished.isSet(): - self.function(*self.args, **self.kwargs) - -def endless_poll (child, prompt, screen, refresh_timeout=0.1): - """This keeps the screen updated with the output of the child. - This will be run in a separate thread. See roller class. - """ - #child.logfile_read = screen - try: - s = child.read_nonblocking(4000, 0.1) - screen.write(s) - except: - pass - -def daemonize (stdin=None, stdout=None, stderr=None, daemon_pid_filename=None): - """This runs the current process in the background as a daemon. - The arguments stdin, stdout, stderr allow you to set the filename that the daemon reads and writes to. - If they are set to None then all stdio for the daemon will be directed to /dev/null. - If daemon_pid_filename is set then the pid of the daemon will be written to it as plain text - and the pid will be returned. If daemon_pid_filename is None then this will return None. - """ - UMASK = 0 - WORKINGDIR = "/" - MAXFD = 1024 - - # The stdio file descriptors are redirected to /dev/null by default. - if hasattr(os, "devnull"): - DEVNULL = os.devnull - else: - DEVNULL = "/dev/null" - if stdin is None: stdin = DEVNULL - if stdout is None: stdout = DEVNULL - if stderr is None: stderr = DEVNULL - - try: - pid = os.fork() # fork first child - except OSError as e: - raise Exception("%s [%d]" % (e.strerror, e.errno)) - - if pid != 0: - os.waitpid(pid,0) - if daemon_pid_filename is not None: - daemon_pid = int(file(daemon_pid_filename,'r').read()) - return daemon_pid - else: - return None - - # first child - os.setsid() - signal.signal(signal.SIGHUP, signal.SIG_IGN) - - try: - pid = os.fork() # fork second child - except OSError as e: - raise Exception("%s [%d]" % (e.strerror, e.errno)) - - if pid != 0: - if daemon_pid_filename is not None: - file(daemon_pid_filename,'w').write(str(pid)) - os._exit(0) # exit parent (the first child) of the second child. - - # second child - os.chdir(WORKINGDIR) - os.umask(UMASK) - - maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1] - if maxfd == resource.RLIM_INFINITY: - maxfd = MAXFD - - # close all file descriptors - for fd in range(0, maxfd): - try: - os.close(fd) - except OSError: # fd wasn't open to begin with (ignored) - pass - - os.open (DEVNULL, os.O_RDWR) # standard input - - # redirect standard file descriptors - si = open(stdin, 'r') - so = open(stdout, 'a+') - se = open(stderr, 'a+', 0) - os.dup2(si.fileno(), sys.stdin.fileno()) - os.dup2(so.fileno(), sys.stdout.fileno()) - os.dup2(se.fileno(), sys.stderr.fileno()) - - return 0 - -def client_cgi (): - """This handles the request if this script was called as a cgi. - """ - sys.stderr = sys.stdout - ajax_mode = False - TITLE="Shell" - SHELL_OUTPUT="" - SID="NOT" - print("Content-type: text/html;charset=utf-8\r\n") - try: - form = cgi.FieldStorage() - if 'ajax' in form: - ajax_mode = True - ajax_cmd = form['ajax'].value - SID=form['sid'].value - if ajax_cmd == 'send': - command = 'xsend' - arg = form['arg'].value.encode('hex') - result = client (command + ' ' + arg, '/tmp/'+SID) - print(result) - elif ajax_cmd == 'refresh': - command = 'refresh' - result = client (command, '/tmp/'+SID) - print(result) - elif ajax_cmd == 'cursor': - command = 'cursor' - result = client (command, '/tmp/'+SID) - print(result) - elif ajax_cmd == 'exit': - command = 'exit' - result = client (command, '/tmp/'+SID) - print(result) - elif ajax_cmd == 'hash': - command = 'hash' - result = client (command, '/tmp/'+SID) - print(result) - elif 'sid' not in form: - SID=random_sid() - print(LOGIN_HTML % locals()); - else: - SID=form['sid'].value - if 'start_server' in form: - USERNAME = form['username'].value - PASSWORD = form['password'].value - dpid = server ('127.0.0.1', USERNAME, PASSWORD, '/tmp/'+SID) - SHELL_OUTPUT="daemon pid: " + str(dpid) - else: - if 'cli' in form: - command = 'sendline ' + form['cli'].value - else: - command = 'sendline' - SHELL_OUTPUT = client (command, '/tmp/'+SID) - print(CGISH_HTML % locals()) - except: - tb_dump = traceback.format_exc() - if ajax_mode: - print(str(tb_dump)) - else: - SHELL_OUTPUT=str(tb_dump) - print(CGISH_HTML % locals()) - -def server_cli(): - """This is the command line interface to starting the server. - This handles things if the script was not called as a CGI - (if you run it from the command line). - """ - try: - optlist, args = getopt.getopt(sys.argv[1:], 'h?d', ['help','h','?', 'hostname=', 'username=', 'password=', 'port=', 'watch']) - except Exception as e: - print(str(e)) - exit_with_usage() - - command_line_options = dict(optlist) - options = dict(optlist) - # There are a million ways to cry for help. These are but a few of them. - if [elem for elem in command_line_options if elem in ['-h','--h','-?','--?','--help']]: - exit_with_usage(0) - - hostname = "127.0.0.1" - #port = 1664 - username = os.getenv('USER') - password = "" - daemon_mode = False - if '-d' in options: - daemon_mode = True - if '--watch' in options: - watch_mode = True - else: - watch_mode = False - if '--hostname' in options: - hostname = options['--hostname'] - if '--port' in options: - port = int(options['--port']) - if '--username' in options: - username = options['--username'] - if '--password' in options: - password = options['--password'] - else: - password = getpass.getpass('password: ') - - server (hostname, username, password, '/tmp/mysock', daemon_mode) - -def random_sid (): - a=random.randint(0,65535) - b=random.randint(0,65535) - return '%04x%04x.sid' % (a,b) - -def parse_host_connect_string (hcs): - """This parses a host connection string in the form - username:password@hostname:port. All fields are options expcet hostname. A - dictionary is returned with all four keys. Keys that were not included are - set to empty strings ''. Note that if your password has the '@' character - then you must backslash escape it. - """ - if '@' in hcs: - p = re.compile (r'(?P<username>[^@:]*)(:?)(?P<password>.*)(?!\\)@(?P<hostname>[^:]*):?(?P<port>[0-9]*)') - else: - p = re.compile (r'(?P<username>)(?P<password>)(?P<hostname>[^:]*):?(?P<port>[0-9]*)') - m = p.search (hcs) - d = m.groupdict() - d['password'] = d['password'].replace('\\@','@') - return d - -def pretty_box (s, rows=24, cols=80): - """This puts an ASCII text box around the given string. - """ - top_bot = '+' + '-'*cols + '+\n' - return top_bot + '\n'.join(['|'+line+'|' for line in s.split('\n')]) + '\n' + top_bot - -def main (): - if os.getenv('REQUEST_METHOD') is None: - server_cli() - else: - client_cgi() - -# It's mostly HTML and Javascript from here on out. -CGISH_HTML="""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> -<title>%(TITLE)s %(SID)s</title> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> -<style type=text/css> -a {color: #9f9; text-decoration: none} -a:hover {color: #0f0} -hr {color: #0f0} -html,body,textarea,input,form -{ -font-family: "Courier New", Courier, mono; -font-size: 8pt; -color: #0c0; -background-color: #020; -margin:0; -padding:0; -border:0; -} -input { background-color: #010; } -textarea { -border-width:1; -border-style:solid; -border-color:#0c0; -padding:3; -margin:3; -} -</style> - -<script language="JavaScript"> -function focus_first() -{if (document.forms.length > 0) -{var TForm = document.forms[0]; -for (i=0;i<TForm.length;i++){ -if ((TForm.elements[i].type=="text")|| -(TForm.elements[i].type=="textarea")|| -(TForm.elements[i].type.toString().charAt(0)=="s")) -{document.forms[0].elements[i].focus();break;}}}} - -// JavaScript Virtual Keyboard -// If you like this code then buy me a sandwich. -// Noah Spurrier <noah@noah.org> -var flag_shift=0; -var flag_shiftlock=0; -var flag_ctrl=0; -var ButtonOnColor="#ee0"; - -function init () -{ - // hack to set quote key to show both single quote and double quote - document.form['quote'].value = "'" + ' "'; - //refresh_screen(); - poll(); - document.form["cli"].focus(); -} -function get_password () -{ - var username = prompt("username?",""); - var password = prompt("password?",""); - start_server (username, password); -} -function multibrowser_ajax () -{ - var xmlHttp = false; -/*@cc_on @*/ -/*@if (@_jscript_version >= 5) - try - { - xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); - } - catch (e) - { - try - { - xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); - } - catch (e2) - { - xmlHttp = false; - } - } -@end @*/ - - if (!xmlHttp && typeof XMLHttpRequest != 'undefined') - { - xmlHttp = new XMLHttpRequest(); - } - return xmlHttp; -} -function load_url_to_screen(url) -{ - xmlhttp = multibrowser_ajax(); - //window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); - xmlhttp.onreadystatechange = update_virtual_screen; - xmlhttp.open("GET", url); - xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); - xmlhttp.send(null); -} -function update_virtual_screen() -{ - if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) - { - var screen_text = xmlhttp.responseText; - document.form["screen_text"].value = screen_text; - //var json_data = json_parse(xmlhttp.responseText); - } -} -function poll() -{ - refresh_screen(); - timerID = setTimeout("poll()", 2000); - // clearTimeout(timerID); -} -//function start_server (username, password) -//{ -// load_url_to_screen('cgishell.cgi?ajax=serverstart&username=' + escape(username) + '&password=' + escape(password); -//} -function refresh_screen() -{ - load_url_to_screen('cgishell.cgi?ajax=refresh&sid=%(SID)s'); -} -function query_hash() -{ - load_url_to_screen('cgishell.cgi?ajax=hash&sid=%(SID)s'); -} -function query_cursor() -{ - load_url_to_screen('cgishell.cgi?ajax=cursor&sid=%(SID)s'); -} -function exit_server() -{ - load_url_to_screen('cgishell.cgi?ajax=exit&sid=%(SID)s'); -} -function type_key (chars) -{ - var ch = '?'; - if (flag_shiftlock || flag_shift) - { - ch = chars.substr(1,1); - } - else if (flag_ctrl) - { - ch = chars.substr(2,1); - } - else - { - ch = chars.substr(0,1); - } - load_url_to_screen('cgishell.cgi?ajax=send&sid=%(SID)s&arg=' + escape(ch)); - if (flag_shift || flag_ctrl) - { - flag_shift = 0; - flag_ctrl = 0; - } - update_button_colors(); -} - -function key_shiftlock() -{ - flag_ctrl = 0; - flag_shift = 0; - if (flag_shiftlock) - { - flag_shiftlock = 0; - } - else - { - flag_shiftlock = 1; - } - update_button_colors(); -} - -function key_shift() -{ - if (flag_shift) - { - flag_shift = 0; - } - else - { - flag_ctrl = 0; - flag_shiftlock = 0; - flag_shift = 1; - } - update_button_colors(); -} -function key_ctrl () -{ - if (flag_ctrl) - { - flag_ctrl = 0; - } - else - { - flag_ctrl = 1; - flag_shiftlock = 0; - flag_shift = 0; - } - - update_button_colors(); -} -function update_button_colors () -{ - if (flag_ctrl) - { - document.form['Ctrl'].style.backgroundColor = ButtonOnColor; - document.form['Ctrl2'].style.backgroundColor = ButtonOnColor; - } - else - { - document.form['Ctrl'].style.backgroundColor = document.form.style.backgroundColor; - document.form['Ctrl2'].style.backgroundColor = document.form.style.backgroundColor; - } - if (flag_shift) - { - document.form['Shift'].style.backgroundColor = ButtonOnColor; - document.form['Shift2'].style.backgroundColor = ButtonOnColor; - } - else - { - document.form['Shift'].style.backgroundColor = document.form.style.backgroundColor; - document.form['Shift2'].style.backgroundColor = document.form.style.backgroundColor; - } - if (flag_shiftlock) - { - document.form['ShiftLock'].style.backgroundColor = ButtonOnColor; - } - else - { - document.form['ShiftLock'].style.backgroundColor = document.form.style.backgroundColor; - } - -} -function keyHandler(e) -{ - var pressedKey; - if (document.all) { e = window.event; } - if (document.layers) { pressedKey = e.which; } - if (document.all) { pressedKey = e.keyCode; } - pressedCharacter = String.fromCharCode(pressedKey); - type_key(pressedCharacter+pressedCharacter+pressedCharacter); - alert(pressedCharacter); -// alert(' Character = ' + pressedCharacter + ' [Decimal value = ' + pressedKey + ']'); -} -//document.onkeypress = keyHandler; -//if (document.layers) -// document.captureEvents(Event.KEYPRESS); -//http://sniptools.com/jskeys -//document.onkeyup = KeyCheck; -function KeyCheck(e) -{ - var KeyID = (window.event) ? event.keyCode : e.keyCode; - type_key(String.fromCharCode(KeyID)); - e.cancelBubble = true; - window.event.cancelBubble = true; -} -</script> - -</head> - -<body onload="init()"> -<form id="form" name="form" action="/cgi-bin/cgishell.cgi" method="POST"> -<input name="sid" value="%(SID)s" type="hidden"> -<textarea name="screen_text" cols="81" rows="25">%(SHELL_OUTPUT)s</textarea> -<hr noshade="1"> - <input name="cli" id="cli" type="text" size="80"><br> -<table border="0" align="left"> -<tr> -<td width="86%%" align="center"> - <input name="submit" type="submit" value="Submit"> - <input name="refresh" type="button" value="REFRESH" onclick="refresh_screen()"> - <input name="refresh" type="button" value="CURSOR" onclick="query_cursor()"> - <input name="hash" type="button" value="HASH" onclick="query_hash()"> - <input name="exit" type="button" value="EXIT" onclick="exit_server()"> - <br> - <input type="button" value="Esc" onclick="type_key('\\x1b\\x1b')" /> - <input type="button" value="` ~" onclick="type_key('`~')" /> - <input type="button" value="1!" onclick="type_key('1!')" /> - <input type="button" value="2@" onclick="type_key('2@\\x00')" /> - <input type="button" value="3#" onclick="type_key('3#')" /> - <input type="button" value="4$" onclick="type_key('4$')" /> - <input type="button" value="5%%" onclick="type_key('5%%')" /> - <input type="button" value="6^" onclick="type_key('6^\\x1E')" /> - <input type="button" value="7&" onclick="type_key('7&')" /> - <input type="button" value="8*" onclick="type_key('8*')" /> - <input type="button" value="9(" onclick="type_key('9(')" /> - <input type="button" value="0)" onclick="type_key('0)')" /> - <input type="button" value="-_" onclick="type_key('-_\\x1F')" /> - <input type="button" value="=+" onclick="type_key('=+')" /> - <input type="button" value="BkSp" onclick="type_key('\\x08\\x08\\x08')" /> - <br> - <input type="button" value="Tab" onclick="type_key('\\t\\t')" /> - <input type="button" value="Q" onclick="type_key('qQ\\x11')" /> - <input type="button" value="W" onclick="type_key('wW\\x17')" /> - <input type="button" value="E" onclick="type_key('eE\\x05')" /> - <input type="button" value="R" onclick="type_key('rR\\x12')" /> - <input type="button" value="T" onclick="type_key('tT\\x14')" /> - <input type="button" value="Y" onclick="type_key('yY\\x19')" /> - <input type="button" value="U" onclick="type_key('uU\\x15')" /> - <input type="button" value="I" onclick="type_key('iI\\x09')" /> - <input type="button" value="O" onclick="type_key('oO\\x0F')" /> - <input type="button" value="P" onclick="type_key('pP\\x10')" /> - <input type="button" value="[ {" onclick="type_key('[{\\x1b')" /> - <input type="button" value="] }" onclick="type_key(']}\\x1d')" /> - <input type="button" value="\\ |" onclick="type_key('\\\\|\\x1c')" /> - <br> - <input type="button" id="Ctrl" value="Ctrl" onclick="key_ctrl()" /> - <input type="button" value="A" onclick="type_key('aA\\x01')" /> - <input type="button" value="S" onclick="type_key('sS\\x13')" /> - <input type="button" value="D" onclick="type_key('dD\\x04')" /> - <input type="button" value="F" onclick="type_key('fF\\x06')" /> - <input type="button" value="G" onclick="type_key('gG\\x07')" /> - <input type="button" value="H" onclick="type_key('hH\\x08')" /> - <input type="button" value="J" onclick="type_key('jJ\\x0A')" /> - <input type="button" value="K" onclick="type_key('kK\\x0B')" /> - <input type="button" value="L" onclick="type_key('lL\\x0C')" /> - <input type="button" value="; :" onclick="type_key(';:')" /> - <input type="button" id="quote" value="'" onclick="type_key('\\x27\\x22')" /> - <input type="button" value="Enter" onclick="type_key('\\n\\n')" /> - <br> - <input type="button" id="ShiftLock" value="Caps Lock" onclick="key_shiftlock()" /> - <input type="button" id="Shift" value="Shift" onclick="key_shift()" /> - <input type="button" value="Z" onclick="type_key('zZ\\x1A')" /> - <input type="button" value="X" onclick="type_key('xX\\x18')" /> - <input type="button" value="C" onclick="type_key('cC\\x03')" /> - <input type="button" value="V" onclick="type_key('vV\\x16')" /> - <input type="button" value="B" onclick="type_key('bB\\x02')" /> - <input type="button" value="N" onclick="type_key('nN\\x0E')" /> - <input type="button" value="M" onclick="type_key('mM\\x0D')" /> - <input type="button" value=", <" onclick="type_key(',<')" /> - <input type="button" value=". >" onclick="type_key('.>')" /> - <input type="button" value="/ ?" onclick="type_key('/?')" /> - <input type="button" id="Shift2" value="Shift" onclick="key_shift()" /> - <input type="button" id="Ctrl2" value="Ctrl" onclick="key_ctrl()" /> - <br> - <input type="button" value=" FINAL FRONTIER " onclick="type_key(' ')" /> -</td> -</tr> -</table> -</form> -</body> -</html> -""" - -LOGIN_HTML="""<html> -<head> -<title>Shell Login</title> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> -<style type=text/css> -a {color: #9f9; text-decoration: none} -a:hover {color: #0f0} -hr {color: #0f0} -html,body,textarea,input,form -{ -font-family: "Courier New", Courier, mono; -font-size: 8pt; -color: #0c0; -background-color: #020; -margin:3; -padding:0; -border:0; -} -input { background-color: #010; } -input,textarea { -border-width:1; -border-style:solid; -border-color:#0c0; -padding:3; -margin:3; -} -</style> -<script language="JavaScript"> -function init () -{ - document.login_form["username"].focus(); -} -</script> -</head> -<body onload="init()"> -<form name="login_form" method="POST"> -<input name="start_server" value="1" type="hidden"> -<input name="sid" value="%(SID)s" type="hidden"> -username: <input name="username" type="text" size="30"><br> -password: <input name="password" type="password" size="30"><br> -<input name="submit" type="submit" value="enter"> -</form> -<br> -</body> -</html> -""" - -if __name__ == "__main__": - try: - main() - except Exception as e: - print(str(e)) - tb_dump = traceback.format_exc() - print(str(tb_dump)) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/chess.py b/lldb/third_party/Python/module/pexpect-4.6/examples/chess.py deleted file mode 100755 index f97a3a9ef26..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/chess.py +++ /dev/null @@ -1,148 +0,0 @@ -#!/usr/bin/env python - -'''This demonstrates controlling a screen oriented application (curses). -It starts two instances of gnuchess and then pits them against each other. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import pexpect -import ANSI - -REGEX_MOVE = r'(?:[a-z]|\x1b\[C)(?:[0-9]|\x1b\[C)(?:[a-z]|\x1b\[C)(?:[0-9]|\x1b\[C)' -REGEX_MOVE_PART = r'(?:[0-9]|\x1b\[C)(?:[a-z]|\x1b\[C)(?:[0-9]|\x1b\[C)' - -class Chess: - - def __init__(self, engine = "/usr/local/bin/gnuchess -a -h 1"): - self.child = pexpect.spawn (engine) - self.term = ANSI.ANSI () - - self.child.expect ('Chess') - if self.child.after != 'Chess': - raise IOError('incompatible chess program') - self.term.process_list (self.before) - self.term.process_list (self.after) - self.last_computer_move = '' - - def read_until_cursor (self, r,c): - while 1: - self.child.read(1, 60) - self.term.process (c) - if self.term.cur_r == r and self.term.cur_c == c: - return 1 - - def do_first_move (self, move): - self.child.expect ('Your move is') - self.child.sendline (move) - self.term.process_list (self.before) - self.term.process_list (self.after) - return move - - def do_move (self, move): - self.read_until_cursor (19,60) - self.child.sendline (move) - return move - - def get_first_computer_move (self): - self.child.expect ('My move is') - self.child.expect (REGEX_MOVE) - return self.child.after - - def get_computer_move (self): - print('Here') - i = self.child.expect ([r'\[17;59H', r'\[17;58H']) - print(i) - if i == 0: - self.child.expect (REGEX_MOVE) - if len(self.child.after) < 4: - self.child.after = self.child.after + self.last_computer_move[3] - if i == 1: - self.child.expect (REGEX_MOVE_PART) - self.child.after = self.last_computer_move[0] + self.child.after - print('', self.child.after) - self.last_computer_move = self.child.after - return self.child.after - - def switch (self): - self.child.sendline ('switch') - - def set_depth (self, depth): - self.child.sendline ('depth') - self.child.expect ('depth=') - self.child.sendline ('%d' % depth) - - def quit(self): - self.child.sendline ('quit') -import sys -print('Starting...') -white = Chess() -white.child.echo = 1 -white.child.expect ('Your move is') -white.set_depth(2) -white.switch() - -move_white = white.get_first_computer_move() -print('first move white:', move_white) - -white.do_move ('e7e5') -move_white = white.get_computer_move() -print('move white:', move_white) -white.do_move ('f8c5') -move_white = white.get_computer_move() -print('move white:', move_white) -white.do_move ('b8a6') -move_white = white.get_computer_move() -print('move white:', move_white) - -sys.exit(1) - - - -black = Chess() -white = Chess() -white.child.expect ('Your move is') -white.switch() - -move_white = white.get_first_computer_move() -print('first move white:', move_white) - -black.do_first_move (move_white) -move_black = black.get_first_computer_move() -print('first move black:', move_black) - -white.do_move (move_black) - -done = 0 -while not done: - move_white = white.get_computer_move() - print('move white:', move_white) - - black.do_move (move_white) - move_black = black.get_computer_move() - print('move black:', move_black) - - white.do_move (move_black) - print('tail of loop') - -g.quit() diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/chess2.py b/lldb/third_party/Python/module/pexpect-4.6/examples/chess2.py deleted file mode 100755 index b92509e776f..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/chess2.py +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env python - -'''This demonstrates controlling a screen oriented application (curses). -It starts two instances of gnuchess and then pits them against each other. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import pexpect -import ANSI -import sys -import time - -class Chess: - - def __init__(self, engine = "/usr/local/bin/gnuchess -a -h 1"): - self.child = pexpect.spawn (engine) - self.term = ANSI.ANSI () - - #self.child.expect ('Chess') - #if self.child.after != 'Chess': - # raise IOError, 'incompatible chess program' - #self.term.process_list (self.child.before) - #self.term.process_list (self.child.after) - - self.last_computer_move = '' - - def read_until_cursor (self, r,c, e=0): - '''Eventually something like this should move into the screen class or - a subclass. Maybe a combination of pexpect and screen... - ''' - fout = open ('log','a') - while self.term.cur_r != r or self.term.cur_c != c: - try: - k = self.child.read(1, 10) - except Exception as e: - print('EXCEPTION, (r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c)) - sys.stdout.flush() - self.term.process (k) - fout.write ('(r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c)) - fout.flush() - if e: - sys.stdout.write (k) - sys.stdout.flush() - if self.term.cur_r == r and self.term.cur_c == c: - fout.close() - return 1 - print('DIDNT EVEN HIT.') - fout.close() - return 1 - - def expect_region (self): - '''This is another method that would be moved into the - screen class. - ''' - pass - def do_scan (self): - fout = open ('log','a') - while 1: - c = self.child.read(1,10) - self.term.process (c) - fout.write ('(r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c)) - fout.flush() - sys.stdout.write (c) - sys.stdout.flush() - - def do_move (self, move, e = 0): - time.sleep(1) - self.read_until_cursor (19,60, e) - self.child.sendline (move) - - def wait (self, color): - while 1: - r = self.term.get_region (14,50,14,60)[0] - r = r.strip() - if r == color: - return - time.sleep (1) - - def parse_computer_move (self, s): - i = s.find ('is: ') - cm = s[i+3:i+9] - return cm - def get_computer_move (self, e = 0): - time.sleep(1) - self.read_until_cursor (19,60, e) - time.sleep(1) - r = self.term.get_region (17,50,17,62)[0] - cm = self.parse_computer_move (r) - return cm - - def switch (self): - print('switching') - self.child.sendline ('switch') - - def set_depth (self, depth): - self.child.sendline ('depth') - self.child.expect ('depth=') - self.child.sendline ('%d' % depth) - - def quit(self): - self.child.sendline ('quit') - -def LOG (s): - print(s) - sys.stdout.flush () - fout = open ('moves.log', 'a') - fout.write (s + '\n') - fout.close() - -print('Starting...') - -black = Chess() -white = Chess() -white.read_until_cursor (19,60,1) -white.switch() - -done = 0 -while not done: - white.wait ('Black') - move_white = white.get_computer_move(1) - LOG ( 'move white:'+ move_white ) - - black.do_move (move_white) - black.wait ('White') - move_black = black.get_computer_move() - LOG ( 'move black:'+ move_black ) - - white.do_move (move_black, 1) - -g.quit() - - diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/chess3.py b/lldb/third_party/Python/module/pexpect-4.6/examples/chess3.py deleted file mode 100755 index 2c087b039d9..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/chess3.py +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env python - -'''This demonstrates controlling a screen oriented application (curses). -It starts two instances of gnuchess and then pits them against each other. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import pexpect -import ANSI - -REGEX_MOVE = r'(?:[a-z]|\x1b\[C)(?:[0-9]|\x1b\[C)(?:[a-z]|\x1b\[C)(?:[0-9]|\x1b\[C)' -REGEX_MOVE_PART = r'(?:[0-9]|\x1b\[C)(?:[a-z]|\x1b\[C)(?:[0-9]|\x1b\[C)' - -class Chess: - - def __init__(self, engine = "/usr/local/bin/gnuchess -a -h 1"): - self.child = pexpect.spawn (engine) - self.term = ANSI.ANSI () - -# self.child.expect ('Chess') - # if self.child.after != 'Chess': - # raise IOError, 'incompatible chess program' - # self.term.process_list (self.before) - # self.term.process_list (self.after) - self.last_computer_move = '' - def read_until_cursor (self, r,c): - fout = open ('log','a') - while 1: - k = self.child.read(1, 10) - self.term.process (k) - fout.write ('(r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c)) - fout.flush() - if self.term.cur_r == r and self.term.cur_c == c: - fout.close() - return 1 - sys.stdout.write (k) - sys.stdout.flush() - - def do_scan (self): - fout = open ('log','a') - while 1: - c = self.child.read(1,10) - self.term.process (c) - fout.write ('(r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c)) - fout.flush() - sys.stdout.write (c) - sys.stdout.flush() - - def do_move (self, move): - self.read_until_cursor (19,60) - self.child.sendline (move) - return move - - def get_computer_move (self): - print('Here') - i = self.child.expect ([r'\[17;59H', r'\[17;58H']) - print(i) - if i == 0: - self.child.expect (REGEX_MOVE) - if len(self.child.after) < 4: - self.child.after = self.child.after + self.last_computer_move[3] - if i == 1: - self.child.expect (REGEX_MOVE_PART) - self.child.after = self.last_computer_move[0] + self.child.after - print('', self.child.after) - self.last_computer_move = self.child.after - return self.child.after - - def switch (self): - self.child.sendline ('switch') - - def set_depth (self, depth): - self.child.sendline ('depth') - self.child.expect ('depth=') - self.child.sendline ('%d' % depth) - - def quit(self): - self.child.sendline ('quit') -import sys -print('Starting...') -white = Chess() -white.do_move('b2b4') -white.read_until_cursor (19,60) -c1 = white.term.get_abs(17,58) -c2 = white.term.get_abs(17,59) -c3 = white.term.get_abs(17,60) -c4 = white.term.get_abs(17,61) -fout = open ('log','a') -fout.write ('Computer:%s%s%s%s\n' %(c1,c2,c3,c4)) -fout.close() -white.do_move('c2c4') -white.read_until_cursor (19,60) -c1 = white.term.get_abs(17,58) -c2 = white.term.get_abs(17,59) -c3 = white.term.get_abs(17,60) -c4 = white.term.get_abs(17,61) -fout = open ('log','a') -fout.write ('Computer:%s%s%s%s\n' %(c1,c2,c3,c4)) -fout.close() -white.do_scan () - -#white.do_move ('b8a6') -#move_white = white.get_computer_move() -#print 'move white:', move_white - -sys.exit(1) - - - -black = Chess() -white = Chess() -white.child.expect ('Your move is') -white.switch() - -move_white = white.get_first_computer_move() -print('first move white:', move_white) - -black.do_first_move (move_white) -move_black = black.get_first_computer_move() -print('first move black:', move_black) - -white.do_move (move_black) - -done = 0 -while not done: - move_white = white.get_computer_move() - print('move white:', move_white) - - black.do_move (move_white) - move_black = black.get_computer_move() - print('move black:', move_black) - - white.do_move (move_black) - print('tail of loop') - -g.quit() diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/df.py b/lldb/third_party/Python/module/pexpect-4.6/examples/df.py deleted file mode 100755 index f8e3fc3989b..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/df.py +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python - -'''This collects filesystem capacity info using the 'df' command. Tuples of -filesystem name and percentage are stored in a list. A simple report is -printed. Filesystems over 95% capacity are highlighted. Note that this does not -parse filesystem names after the first space, so names with spaces in them will -be truncated. This will produce ambiguous results for automount filesystems on -Apple OSX. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import pexpect - -child = pexpect.spawn ('df') - -# parse 'df' output into a list. -pattern = r"\n(\S+).*?([0-9]+)%" -filesystem_list = [] -for dummy in range (0, 1000): - i = child.expect ([pattern, pexpect.EOF]) - if i == 0: - filesystem_list.append (child.match.groups()) - else: - break - -# Print report -print() -for m in filesystem_list: - s = "Filesystem %s is at %s%%" % (m[0], m[1]) - # highlight filesystems over 95% capacity - if int(m[1]) > 95: - s = '! ' + s - else: - s = ' ' + s - print(s) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/ftp.py b/lldb/third_party/Python/module/pexpect-4.6/examples/ftp.py deleted file mode 100755 index a1c1343a7de..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/ftp.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python - -'''This demonstrates an FTP "bookmark". This connects to an ftp site; does a -few ftp stuff; and then gives the user interactive control over the session. In -this case the "bookmark" is to a directory on the OpenBSD ftp server. It puts -you in the i386 packages directory. You can easily modify this for other sites. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals - -import pexpect -import sys - -# Note that, for Python 3 compatibility reasons, we are using spawnu and -# importing unicode_literals (above). spawnu accepts Unicode input and -# unicode_literals makes all string literals in this script Unicode by default. -child = pexpect.spawnu('ftp ftp.openbsd.org') - -child.expect('(?i)name .*: ') -child.sendline('anonymous') -child.expect('(?i)password') -child.sendline('pexpect@sourceforge.net') -child.expect('ftp> ') -child.sendline('cd /pub/OpenBSD/3.7/packages/i386') -child.expect('ftp> ') -child.sendline('bin') -child.expect('ftp> ') -child.sendline('prompt') -child.expect('ftp> ') -child.sendline('pwd') -child.expect('ftp> ') -print("Escape character is '^]'.\n") -sys.stdout.write (child.after) -sys.stdout.flush() -child.interact() # Escape character defaults to ^] -# At this point this script blocks until the user presses the escape character -# or until the child exits. The human user and the child should be talking -# to each other now. - -# At this point the script is running again. -print('Left interactve mode.') - -# The rest is not strictly necessary. This just demonstrates a few functions. -# This makes sure the child is dead; although it would be killed when Python exits. -if child.isalive(): - child.sendline('bye') # Try to ask ftp child to exit. - child.close() -# Print the final state of the child. Normally isalive() should be FALSE. -if child.isalive(): - print('Child did not exit gracefully.') -else: - print('Child exited gracefully.') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/hive.py b/lldb/third_party/Python/module/pexpect-4.6/examples/hive.py deleted file mode 100755 index 1b7bcbf2416..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/hive.py +++ /dev/null @@ -1,466 +0,0 @@ -#!/usr/bin/env python - -'''hive -- Hive Shell - -This lets you ssh to a group of servers and control them as if they were one. -Each command you enter is sent to each host in parallel. The response of each -host is collected and printed. In normal synchronous mode Hive will wait for -each host to return the shell command line prompt. The shell prompt is used to -sync output. - -Example: - - $ hive.py --sameuser --samepass host1.example.com host2.example.net - username: myusername - password: - connecting to host1.example.com - OK - connecting to host2.example.net - OK - targeting hosts: 192.168.1.104 192.168.1.107 - CMD (? for help) > uptime - ======================================================================= - host1.example.com - ----------------------------------------------------------------------- - uptime - 23:49:55 up 74 days, 5:14, 2 users, load average: 0.15, 0.05, 0.01 - ======================================================================= - host2.example.net - ----------------------------------------------------------------------- - uptime - 23:53:02 up 1 day, 13:36, 2 users, load average: 0.50, 0.40, 0.46 - ======================================================================= - -Other Usage Examples: - -1. You will be asked for your username and password for each host. - - hive.py host1 host2 host3 ... hostN - -2. You will be asked once for your username and password. - This will be used for each host. - - hive.py --sameuser --samepass host1 host2 host3 ... hostN - -3. Give a username and password on the command-line: - - hive.py user1:pass2@host1 user2:pass2@host2 ... userN:passN@hostN - -You can use an extended host notation to specify username, password, and host -instead of entering auth information interactively. Where you would enter a -host name use this format: - - username:password@host - -This assumes that ':' is not part of the password. If your password contains a -':' then you can use '\\:' to indicate a ':' and '\\\\' to indicate a single -'\\'. Remember that this information will appear in the process listing. Anyone -on your machine can see this auth information. This is not secure. - -This is a crude script that begs to be multithreaded. But it serves its -purpose. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -# TODO add feature to support username:password@host combination -# TODO add feature to log each host output in separate file - -import sys -import os -import re -import optparse -import time -import getpass -import readline -import atexit -try: - import pexpect - import pxssh -except ImportError: - sys.stderr.write("You do not have 'pexpect' installed.\n") - sys.stderr.write("On Ubuntu you need the 'python-pexpect' package.\n") - sys.stderr.write(" aptitude -y install python-pexpect\n") - exit(1) - - -try: - raw_input -except NameError: - raw_input = input - - -histfile = os.path.join(os.environ["HOME"], ".hive_history") -try: - readline.read_history_file(histfile) -except IOError: - pass -atexit.register(readline.write_history_file, histfile) - -CMD_HELP='''Hive commands are preceded by a colon : (just think of vi). - -:target name1 name2 name3 ... - - set list of hosts to target commands - -:target all - - reset list of hosts to target all hosts in the hive. - -:to name command - - send a command line to the named host. This is similar to :target, but - sends only one command and does not change the list of targets for future - commands. - -:sync - - set mode to wait for shell prompts after commands are run. This is the - default. When Hive first logs into a host it sets a special shell prompt - pattern that it can later look for to synchronize output of the hosts. If - you 'su' to another user then it can upset the synchronization. If you need - to run something like 'su' then use the following pattern: - - CMD (? for help) > :async - CMD (? for help) > sudo su - root - CMD (? for help) > :prompt - CMD (? for help) > :sync - -:async - - set mode to not expect command line prompts (see :sync). Afterwards - commands are send to target hosts, but their responses are not read back - until :sync is run. This is useful to run before commands that will not - return with the special shell prompt pattern that Hive uses to synchronize. - -:refresh - - refresh the display. This shows the last few lines of output from all hosts. - This is similar to resync, but does not expect the promt. This is useful - for seeing what hosts are doing during long running commands. - -:resync - - This is similar to :sync, but it does not change the mode. It looks for the - prompt and thus consumes all input from all targeted hosts. - -:prompt - - force each host to reset command line prompt to the special pattern used to - synchronize all the hosts. This is useful if you 'su' to a different user - where Hive would not know the prompt to match. - -:send my text - - This will send the 'my text' wihtout a line feed to the targeted hosts. - This output of the hosts is not automatically synchronized. - -:control X - - This will send the given control character to the targeted hosts. - For example, ":control c" will send ASCII 3. - -:exit - - This will exit the hive shell. - -''' - -def login (args, cli_username=None, cli_password=None): - - # I have to keep a separate list of host names because Python dicts are not ordered. - # I want to keep the same order as in the args list. - host_names = [] - hive_connect_info = {} - hive = {} - # build up the list of connection information (hostname, username, password, port) - for host_connect_string in args: - hcd = parse_host_connect_string (host_connect_string) - hostname = hcd['hostname'] - port = hcd['port'] - if port == '': - port = None - if len(hcd['username']) > 0: - username = hcd['username'] - elif cli_username is not None: - username = cli_username - else: - username = raw_input('%s username: ' % hostname) - if len(hcd['password']) > 0: - password = hcd['password'] - elif cli_password is not None: - password = cli_password - else: - password = getpass.getpass('%s password: ' % hostname) - host_names.append(hostname) - hive_connect_info[hostname] = (hostname, username, password, port) - # build up the list of hive connections using the connection information. - for hostname in host_names: - print('connecting to', hostname) - try: - fout = file("log_"+hostname, "w") - hive[hostname] = pxssh.pxssh() - # Disable host key checking. - hive[hostname].SSH_OPTS = (hive[hostname].SSH_OPTS - + " -o 'StrictHostKeyChecking=no'" - + " -o 'UserKnownHostsFile /dev/null' ") - hive[hostname].force_password = True - hive[hostname].login(*hive_connect_info[hostname]) - print(hive[hostname].before) - hive[hostname].logfile = fout - print('- OK') - except Exception as e: - print('- ERROR', end=' ') - print(str(e)) - print('Skipping', hostname) - hive[hostname] = None - return host_names, hive - -def main (): - - global options, args, CMD_HELP - - rows = 24 - cols = 80 - - if options.sameuser: - cli_username = raw_input('username: ') - else: - cli_username = None - - if options.samepass: - cli_password = getpass.getpass('password: ') - else: - cli_password = None - - host_names, hive = login(args, cli_username, cli_password) - - synchronous_mode = True - target_hostnames = host_names[:] - print('targeting hosts:', ' '.join(target_hostnames)) - while True: - cmd = raw_input('CMD (? for help) > ') - cmd = cmd.strip() - if cmd=='?' or cmd==':help' or cmd==':h': - print(CMD_HELP) - continue - elif cmd==':refresh': - refresh (hive, target_hostnames, timeout=0.5) - for hostname in target_hostnames: - print('/' + '=' * (cols - 2)) - print('| ' + hostname) - print('\\' + '-' * (cols - 2)) - if hive[hostname] is None: - print('# DEAD: %s' % hostname) - else: - print(hive[hostname].before) - print('#' * 79) - continue - elif cmd==':resync': - resync (hive, target_hostnames, timeout=0.5) - for hostname in target_hostnames: - print('/' + '=' * (cols - 2)) - print('| ' + hostname) - print('\\' + '-' * (cols - 2)) - if hive[hostname] is None: - print('# DEAD: %s' % hostname) - else: - print(hive[hostname].before) - print('#' * 79) - continue - elif cmd==':sync': - synchronous_mode = True - resync (hive, target_hostnames, timeout=0.5) - continue - elif cmd==':async': - synchronous_mode = False - continue - elif cmd==':prompt': - for hostname in target_hostnames: - try: - if hive[hostname] is not None: - hive[hostname].set_unique_prompt() - except Exception as e: - print("Had trouble communicating with %s, so removing it from the target list." % hostname) - print(str(e)) - hive[hostname] = None - continue - elif cmd[:5] == ':send': - cmd, txt = cmd.split(None,1) - for hostname in target_hostnames: - try: - if hive[hostname] is not None: - hive[hostname].send(txt) - except Exception as e: - print("Had trouble communicating with %s, so removing it from the target list." % hostname) - print(str(e)) - hive[hostname] = None - continue - elif cmd[:3] == ':to': - cmd, hostname, txt = cmd.split(None,2) - print('/' + '=' * (cols - 2)) - print('| ' + hostname) - print('\\' + '-' * (cols - 2)) - if hive[hostname] is None: - print('# DEAD: %s' % hostname) - continue - try: - hive[hostname].sendline (txt) - hive[hostname].prompt(timeout=2) - print(hive[hostname].before) - except Exception as e: - print("Had trouble communicating with %s, so removing it from the target list." % hostname) - print(str(e)) - hive[hostname] = None - continue - elif cmd[:7] == ':expect': - cmd, pattern = cmd.split(None,1) - print('looking for', pattern) - try: - for hostname in target_hostnames: - if hive[hostname] is not None: - hive[hostname].expect(pattern) - print(hive[hostname].before) - except Exception as e: - print("Had trouble communicating with %s, so removing it from the target list." % hostname) - print(str(e)) - hive[hostname] = None - continue - elif cmd[:7] == ':target': - target_hostnames = cmd.split()[1:] - if len(target_hostnames) == 0 or target_hostnames[0] == all: - target_hostnames = host_names[:] - print('targeting hosts:', ' '.join(target_hostnames)) - continue - elif cmd == ':exit' or cmd == ':q' or cmd == ':quit': - break - elif cmd[:8] == ':control' or cmd[:5] == ':ctrl' : - cmd, c = cmd.split(None,1) - if ord(c)-96 < 0 or ord(c)-96 > 255: - print('/' + '=' * (cols - 2)) - print('| Invalid character. Must be [a-zA-Z], @, [, ], \\, ^, _, or ?') - print('\\' + '-' * (cols - 2)) - continue - for hostname in target_hostnames: - try: - if hive[hostname] is not None: - hive[hostname].sendcontrol(c) - except Exception as e: - print("Had trouble communicating with %s, so removing it from the target list." % hostname) - print(str(e)) - hive[hostname] = None - continue - elif cmd == ':esc': - for hostname in target_hostnames: - if hive[hostname] is not None: - hive[hostname].send(chr(27)) - continue - # - # Run the command on all targets in parallel - # - for hostname in target_hostnames: - try: - if hive[hostname] is not None: - hive[hostname].sendline (cmd) - except Exception as e: - print("Had trouble communicating with %s, so removing it from the target list." % hostname) - print(str(e)) - hive[hostname] = None - - # - # print the response for each targeted host. - # - if synchronous_mode: - for hostname in target_hostnames: - try: - print('/' + '=' * (cols - 2)) - print('| ' + hostname) - print('\\' + '-' * (cols - 2)) - if hive[hostname] is None: - print('# DEAD: %s' % hostname) - else: - hive[hostname].prompt(timeout=2) - print(hive[hostname].before) - except Exception as e: - print("Had trouble communicating with %s, so removing it from the target list." % hostname) - print(str(e)) - hive[hostname] = None - print('#' * 79) - -def refresh (hive, hive_names, timeout=0.5): - - '''This waits for the TIMEOUT on each host. - ''' - - # TODO This is ideal for threading. - for hostname in hive_names: - if hive[hostname] is not None: - hive[hostname].expect([pexpect.TIMEOUT,pexpect.EOF],timeout=timeout) - -def resync (hive, hive_names, timeout=2, max_attempts=5): - - '''This waits for the shell prompt for each host in an effort to try to get - them all to the same state. The timeout is set low so that hosts that are - already at the prompt will not slow things down too much. If a prompt match - is made for a hosts then keep asking until it stops matching. This is a - best effort to consume all input if it printed more than one prompt. It's - kind of kludgy. Note that this will always introduce a delay equal to the - timeout for each machine. So for 10 machines with a 2 second delay you will - get AT LEAST a 20 second delay if not more. ''' - - # TODO This is ideal for threading. - for hostname in hive_names: - if hive[hostname] is not None: - for attempts in range(0, max_attempts): - if not hive[hostname].prompt(timeout=timeout): - break - -def parse_host_connect_string (hcs): - - '''This parses a host connection string in the form - username:password@hostname:port. All fields are options expcet hostname. A - dictionary is returned with all four keys. Keys that were not included are - set to empty strings ''. Note that if your password has the '@' character - then you must backslash escape it. ''' - - if '@' in hcs: - p = re.compile (r'(?P<username>[^@:]*)(:?)(?P<password>.*)(?!\\)@(?P<hostname>[^:]*):?(?P<port>[0-9]*)') - else: - p = re.compile (r'(?P<username>)(?P<password>)(?P<hostname>[^:]*):?(?P<port>[0-9]*)') - m = p.search (hcs) - d = m.groupdict() - d['password'] = d['password'].replace('\\@','@') - return d - -if __name__ == '__main__': - start_time = time.time() - parser = optparse.OptionParser(formatter=optparse.TitledHelpFormatter(), usage=globals()['__doc__'], version='$Id: hive.py 533 2012-10-20 02:19:33Z noah $',conflict_handler="resolve") - parser.add_option ('-v', '--verbose', action='store_true', default=False, help='verbose output') - parser.add_option ('--samepass', action='store_true', default=False, help='Use same password for each login.') - parser.add_option ('--sameuser', action='store_true', default=False, help='Use same username for each login.') - (options, args) = parser.parse_args() - if len(args) < 1: - parser.error ('missing argument') - if options.verbose: print(time.asctime()) - main() - if options.verbose: print(time.asctime()) - if options.verbose: print('TOTAL TIME IN MINUTES:', end=' ') - if options.verbose: print((time.time() - start_time) / 60.0) diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/monitor.py b/lldb/third_party/Python/module/pexpect-4.6/examples/monitor.py deleted file mode 100755 index c030d3a493d..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/monitor.py +++ /dev/null @@ -1,229 +0,0 @@ -#!/usr/bin/env python - -''' This runs a sequence of commands on a remote host using SSH. It runs a -simple system checks such as uptime and free to monitor the state of the remote -host. - -./monitor.py [-s server_hostname] [-u username] [-p password] - -s : hostname of the remote server to login to. - -u : username to user for login. - -p : Password to user for login. - -Example: - This will print information about the given host: - ./monitor.py -s www.example.com -u mylogin -p mypassword - -It works like this: - Login via SSH (This is the hardest part). - Run and parse 'uptime'. - Run 'iostat'. - Run 'vmstat'. - Run 'netstat' - Run 'free'. - Exit the remote host. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import os, sys, re, getopt, getpass -import pexpect - - -try: - raw_input -except NameError: - raw_input = input - - -# -# Some constants. -# -COMMAND_PROMPT = '[#$] ' ### This is way too simple for industrial use -- we will change is ASAP. -TERMINAL_PROMPT = r'(?i)terminal type\?' -TERMINAL_TYPE = 'vt100' -# This is the prompt we get if SSH does not have the remote host's public key stored in the cache. -SSH_NEWKEY = '(?i)are you sure you want to continue connecting' - -def exit_with_usage(): - - print(globals()['__doc__']) - os._exit(1) - -def main(): - - global COMMAND_PROMPT, TERMINAL_PROMPT, TERMINAL_TYPE, SSH_NEWKEY - ###################################################################### - ## Parse the options, arguments, get ready, etc. - ###################################################################### - try: - optlist, args = getopt.getopt(sys.argv[1:], 'h?s:u:p:', ['help','h','?']) - except Exception as e: - print(str(e)) - exit_with_usage() - options = dict(optlist) - if len(args) > 1: - exit_with_usage() - - if [elem for elem in options if elem in ['-h','--h','-?','--?','--help']]: - print("Help:") - exit_with_usage() - - if '-s' in options: - host = options['-s'] - else: - host = raw_input('hostname: ') - if '-u' in options: - user = options['-u'] - else: - user = raw_input('username: ') - if '-p' in options: - password = options['-p'] - else: - password = getpass.getpass('password: ') - - # - # Login via SSH - # - child = pexpect.spawn('ssh -l %s %s'%(user, host)) - i = child.expect([pexpect.TIMEOUT, SSH_NEWKEY, COMMAND_PROMPT, '(?i)password']) - if i == 0: # Timeout - print('ERROR! could not login with SSH. Here is what SSH said:') - print(child.before, child.after) - print(str(child)) - sys.exit (1) - if i == 1: # In this case SSH does not have the public key cached. - child.sendline ('yes') - child.expect ('(?i)password') - if i == 2: - # This may happen if a public key was setup to automatically login. - # But beware, the COMMAND_PROMPT at this point is very trivial and - # could be fooled by some output in the MOTD or login message. - pass - if i == 3: - child.sendline(password) - # Now we are either at the command prompt or - # the login process is asking for our terminal type. - i = child.expect ([COMMAND_PROMPT, TERMINAL_PROMPT]) - if i == 1: - child.sendline (TERMINAL_TYPE) - child.expect (COMMAND_PROMPT) - # - # Set command prompt to something more unique. - # - COMMAND_PROMPT = r"\[PEXPECT\]\$ " - child.sendline (r"PS1='[PEXPECT]\$ '") # In case of sh-style - i = child.expect ([pexpect.TIMEOUT, COMMAND_PROMPT], timeout=10) - if i == 0: - print("# Couldn't set sh-style prompt -- trying csh-style.") - child.sendline (r"set prompt='[PEXPECT]\$ '") - i = child.expect ([pexpect.TIMEOUT, COMMAND_PROMPT], timeout=10) - if i == 0: - print("Failed to set command prompt using sh or csh style.") - print("Response was:") - print(child.before) - sys.exit (1) - - # Now we should be at the command prompt and ready to run some commands. - print('---------------------------------------') - print('Report of commands run on remote host.') - print('---------------------------------------') - - # Run uname. - child.sendline ('uname -a') - child.expect (COMMAND_PROMPT) - print(child.before) - if 'linux' in child.before.lower(): - LINUX_MODE = 1 - else: - LINUX_MODE = 0 - - # Run and parse 'uptime'. - child.sendline ('uptime') - child.expect(r'up\s+(.*?),\s+([0-9]+) users?,\s+load averages?: ([0-9]+\.[0-9][0-9]),?\s+([0-9]+\.[0-9][0-9]),?\s+([0-9]+\.[0-9][0-9])') - duration, users, av1, av5, av15 = child.match.groups() - days = '0' - hours = '0' - mins = '0' - if 'day' in duration: - child.match = re.search(r'([0-9]+)\s+day',duration) - days = str(int(child.match.group(1))) - if ':' in duration: - child.match = re.search('([0-9]+):([0-9]+)',duration) - hours = str(int(child.match.group(1))) - mins = str(int(child.match.group(2))) - if 'min' in duration: - child.match = re.search(r'([0-9]+)\s+min',duration) - mins = str(int(child.match.group(1))) - print() - print('Uptime: %s days, %s users, %s (1 min), %s (5 min), %s (15 min)' % ( - duration, users, av1, av5, av15)) - child.expect (COMMAND_PROMPT) - - # Run iostat. - child.sendline ('iostat') - child.expect (COMMAND_PROMPT) - print(child.before) - - # Run vmstat. - child.sendline ('vmstat') - child.expect (COMMAND_PROMPT) - print(child.before) - - # Run free. - if LINUX_MODE: - child.sendline ('free') # Linux systems only. - child.expect (COMMAND_PROMPT) - print(child.before) - - # Run df. - child.sendline ('df') - child.expect (COMMAND_PROMPT) - print(child.before) - - # Run lsof. - child.sendline ('lsof') - child.expect (COMMAND_PROMPT) - print(child.before) - -# # Run netstat -# child.sendline ('netstat') -# child.expect (COMMAND_PROMPT) -# print child.before - -# # Run MySQL show status. -# child.sendline ('mysql -p -e "SHOW STATUS;"') -# child.expect (PASSWORD_PROMPT_MYSQL) -# child.sendline (password_mysql) -# child.expect (COMMAND_PROMPT) -# print -# print child.before - - # Now exit the remote host. - child.sendline ('exit') - index = child.expect([pexpect.EOF, "(?i)there are stopped jobs"]) - if index==1: - child.sendline("exit") - child.expect(EOF) - -if __name__ == "__main__": - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/passmass.py b/lldb/third_party/Python/module/pexpect-4.6/examples/passmass.py deleted file mode 100755 index c1ec4d0b326..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/passmass.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python - -'''Change passwords on the named machines. passmass host1 host2 host3 . . . -Note that login shell prompt on remote machine must end in # or $. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import pexpect -import sys, getpass - - -try: - raw_input -except NameError: - raw_input = input - - -USAGE = '''passmass host1 host2 host3 . . .''' -COMMAND_PROMPT = '[$#] ' -TERMINAL_PROMPT = r'Terminal type\?' -TERMINAL_TYPE = 'vt100' -SSH_NEWKEY = r'Are you sure you want to continue connecting \(yes/no\)\?' - -def login(host, user, password): - - child = pexpect.spawn('ssh -l %s %s'%(user, host)) - fout = file ("LOG.TXT","wb") - child.logfile_read = fout #use child.logfile to also log writes (passwords!) - - i = child.expect([pexpect.TIMEOUT, SSH_NEWKEY, '[Pp]assword: ']) - if i == 0: # Timeout - print('ERROR!') - print('SSH could not login. Here is what SSH said:') - print(child.before, child.after) - sys.exit (1) - if i == 1: # SSH does not have the public key. Just accept it. - child.sendline ('yes') - child.expect ('[Pp]assword: ') - child.sendline(password) - # Now we are either at the command prompt or - # the login process is asking for our terminal type. - i = child.expect (['Permission denied', TERMINAL_PROMPT, COMMAND_PROMPT]) - if i == 0: - print('Permission denied on host:', host) - sys.exit (1) - if i == 1: - child.sendline (TERMINAL_TYPE) - child.expect (COMMAND_PROMPT) - return child - -# (current) UNIX password: -def change_password(child, user, oldpassword, newpassword): - - child.sendline('passwd') - i = child.expect(['[Oo]ld [Pp]assword', '.current.*password', '[Nn]ew [Pp]assword']) - # Root does not require old password, so it gets to bypass the next step. - if i == 0 or i == 1: - child.sendline(oldpassword) - child.expect('[Nn]ew [Pp]assword') - child.sendline(newpassword) - i = child.expect(['[Nn]ew [Pp]assword', '[Rr]etype', '[Rr]e-enter']) - if i == 0: - print('Host did not like new password. Here is what it said...') - print(child.before) - child.send (chr(3)) # Ctrl-C - child.sendline('') # This should tell remote passwd command to quit. - return - child.sendline(newpassword) - -def main(): - - if len(sys.argv) <= 1: - print(USAGE) - return 1 - - user = raw_input('Username: ') - password = getpass.getpass('Current Password: ') - newpassword = getpass.getpass('New Password: ') - newpasswordconfirm = getpass.getpass('Confirm New Password: ') - if newpassword != newpasswordconfirm: - print('New Passwords do not match.') - return 1 - - for host in sys.argv[1:]: - child = login(host, user, password) - if child == None: - print('Could not login to host:', host) - continue - print('Changing password on host:', host) - change_password(child, user, password, newpassword) - child.expect(COMMAND_PROMPT) - child.sendline('exit') - -if __name__ == '__main__': - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/python.py b/lldb/third_party/Python/module/pexpect-4.6/examples/python.py deleted file mode 100755 index 44c15e1da95..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/python.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python - -'''This starts the python interpreter; captures the startup message; then gives -the user interactive control over the session. Why? For fun... - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals - -import pexpect - -# Don't do this unless you like being John Malkovich -# c = pexpect.spawnu('/usr/bin/env python ./python.py') - -# Note that, for Python 3 compatibility reasons, we are using spawnu and -# importing unicode_literals (above). spawnu accepts Unicode input and -# unicode_literals makes all string literals in this script Unicode by default. -c = pexpect.spawnu('/usr/bin/env python') - -c.expect('>>>') -print('And now for something completely different...') -print(''.join(reversed((c.before)))) -print('Yes, it\'s python, but it\'s backwards.') -print() -print('Escape character is \'^]\'.') -print(c.after, end=' ') -c.interact() -c.kill(1) -print('is alive:', c.isalive()) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/script.py b/lldb/third_party/Python/module/pexpect-4.6/examples/script.py deleted file mode 100755 index c8b94961de6..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/script.py +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python - -'''This spawns a sub-shell (bash) and gives the user interactive control. The -entire shell session is logged to a file called script.log. This behaves much -like the classic BSD command 'script'. - -./script.py [-a] [-c command] {logfilename} - - logfilename : This is the name of the log file. Default is script.log. - -a : Append to log file. Default is to overwrite log file. - -c : spawn command. Default is to spawn the sh shell. - -Example: - - This will start a bash shell and append to the log named my_session.log: - - ./script.py -a -c bash my_session.log - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import os, sys, time, getopt -import signal, fcntl, termios, struct -import pexpect - -global_pexpect_instance = None # Used by signal handler - -def exit_with_usage(): - - print(globals()['__doc__']) - os._exit(1) - -def main(): - - ###################################################################### - # Parse the options, arguments, get ready, etc. - ###################################################################### - try: - optlist, args = getopt.getopt(sys.argv[1:], 'h?ac:', ['help','h','?']) - except Exception as e: - print(str(e)) - exit_with_usage() - options = dict(optlist) - if len(args) > 1: - exit_with_usage() - - if [elem for elem in options if elem in ['-h','--h','-?','--?','--help']]: - print("Help:") - exit_with_usage() - - if len(args) == 1: - script_filename = args[0] - else: - script_filename = "script.log" - if '-a' in options: - fout = open(script_filename, "ab") - else: - fout = open(script_filename, "wb") - if '-c' in options: - command = options['-c'] - else: - command = "sh" - - # Begin log with date/time in the form CCCCyymm.hhmmss - fout.write ('# %4d%02d%02d.%02d%02d%02d \n' % time.localtime()[:-3]) - - ###################################################################### - # Start the interactive session - ###################################################################### - p = pexpect.spawn(command) - p.logfile = fout - global global_pexpect_instance - global_pexpect_instance = p - signal.signal(signal.SIGWINCH, sigwinch_passthrough) - - print("Script recording started. Type ^] (ASCII 29) to escape from the script shell.") - p.interact(chr(29)) - fout.close() - return 0 - -def sigwinch_passthrough (sig, data): - - # Check for buggy platforms (see pexpect.setwinsize()). - if 'TIOCGWINSZ' in dir(termios): - TIOCGWINSZ = termios.TIOCGWINSZ - else: - TIOCGWINSZ = 1074295912 # assume - s = struct.pack ("HHHH", 0, 0, 0, 0) - a = struct.unpack ('HHHH', fcntl.ioctl(sys.stdout.fileno(), TIOCGWINSZ , s)) - global global_pexpect_instance - global_pexpect_instance.setwinsize(a[0],a[1]) - -if __name__ == "__main__": - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/ssh_tunnel.py b/lldb/third_party/Python/module/pexpect-4.6/examples/ssh_tunnel.py deleted file mode 100755 index d7619118e08..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/ssh_tunnel.py +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env python - -'''This starts an SSH tunnel to a given host. If the SSH process ever dies then -this script will detect that and restart it. I use this under Cygwin to keep -open encrypted tunnels to port 25 (SMTP), port 143 (IMAP4), and port 110 -(POP3). I set my mail client to talk to localhost and I keep this script -running in the background. - -Note that this is a rather stupid script at the moment because it just looks to -see if any ssh process is running. It should really make sure that our specific -ssh process is running. The problem is that ssh is missing a very useful -feature. It has no way to report the process id of the background daemon that -it creates with the -f command. This would be a really useful script if I could -figure a way around this problem. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -from __future__ import absolute_import - -import pexpect -import getpass -import time - - -try: - raw_input -except NameError: - raw_input = input - - -# SMTP:25 IMAP4:143 POP3:110 -tunnel_command = 'ssh -C -N -f -L 25:127.0.0.1:25 -L 143:127.0.0.1:143 -L 110:127.0.0.1:110 %(user)@%(host)' -host = raw_input('Hostname: ') -user = raw_input('Username: ') -X = getpass.getpass('Password: ') - -def get_process_info (): - - # This seems to work on both Linux and BSD, but should otherwise be considered highly UNportable. - - ps = pexpect.run ('ps ax -O ppid') - pass - -def start_tunnel (): - - try: - ssh_tunnel = pexpect.spawn (tunnel_command % globals()) - ssh_tunnel.expect ('password:') - time.sleep (0.1) - ssh_tunnel.sendline (X) - time.sleep (60) # Cygwin is slow to update process status. - ssh_tunnel.expect (pexpect.EOF) - - except Exception as e: - print(str(e)) - -def main (): - - while True: - ps = pexpect.spawn ('ps') - time.sleep (1) - index = ps.expect (['/usr/bin/ssh', pexpect.EOF, pexpect.TIMEOUT]) - if index == 2: - print('TIMEOUT in ps command...') - print(str(ps)) - time.sleep (13) - if index == 1: - print(time.asctime(), end=' ') - print('restarting tunnel') - start_tunnel () - time.sleep (11) - print('tunnel OK') - else: - # print 'tunnel OK' - time.sleep (7) - -if __name__ == '__main__': - - main () - -# This was for older SSH versions that didn't have -f option -#tunnel_command = 'ssh -C -n -L 25:%(host)s:25 -L 110:%(host)s:110 %(user)s@%(host)s -f nothing.sh' -#nothing_script = '''#!/bin/sh -#while true; do sleep 53; done -#''' - diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/table_test.html b/lldb/third_party/Python/module/pexpect-4.6/examples/table_test.html deleted file mode 100644 index 5dba0ecf0c8..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/table_test.html +++ /dev/null @@ -1,106 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<html> -<head> -<title>TEST</title> -</head> -<style type="text/css"> -a {color: #9f9; text-decoration: none} -a:hover {color: #0f0} -hr {color: #0f0} -html,table,body,textarea,input,form -{ -font-family: "Courier New", Courier, mono; -font-size: 8pt; -color: #0c0; -background-color: #020; -margin:0; -padding:0; -border:0; -} -input { background-color: #010; } -textarea { -border-width:1; -border-style:solid; -border-color:#0c0; -padding:3; -margin:3; -} -</style> -<script> -var foo="" + -" 123456789012345678901234567890123456789012345 789012345678901234567890123456789"+ -"0 2345678901234567890123456789012345678901234 6 89012345678901234567890123456789"+ -"01 34567890123456789012345678901234567890123 567 9012345678901234567890123456789"+ -"012 456789012345678901234567890123456789012 45678 012345678901234567890123456789"+ -"0123 5678901234567890123456789012345678901 3456789 12345678901234567890123456789"+ -"01234 67890123456789012345678901234567890 234567890 2345678901234567890123456789"+ -"012345 789012345678901234567890123456789 12345678901 345678901234567890123456789"+ -"0123456 8901234567890123456789012345678 0123456789012 45678901234567890123456789"+ -"01234567 90123456789012345678901234567 901234567890123 5678901234567890123456789"+ -"012345678 012345678901234567890123456 89012345678901234 678901234567890123456789"+ -"0123456789 1234567890123456789012345 7890123456789012345 78901234567890123456789"+ -"01234567890 23456789012345678901234 678901234567890123456 8901234567890123456789"+ -"012345678901 345678901234567890123 56789012345678901234567 901234567890123456789"+ -"0123456789012 4567890123456789012 4567890123456789012345678 0123456789012345678 "+ -"01234567890123 56789012345678901 345678901234567890123456789 12345678901234567 9"+ -"012345678901234 678901234567890 23456789012 567 01234567890 234567890123456 89"+ -"0123456789012345 7890123456789 123457789012 567 012345678901 3456789012345 789"+ -"01234567890123456 89012345678 012345678901234567890123456789012 45678901234 6789"+ -"012345678901234567 901234567 90123456789 12345678901 34567890123 567890123 56789"+ -"0123456789012345678 0123456 8901234567890 3456789 2345678901234 6789012 456789"+ -"01234567890123456789 12345 7890123456789012 0123456789012345 78901 3456789"+ -"012345678901234567890 234 67890123456789012345678901234567890123456 890 23456789"+ -"0123456789012345678901 3 5678901234567890123456789012345678901234567 9 123456789"+ -"01234567890123456789012 456789012345678901234567890123456789012345678 0123456789"; -function start2() -{ - // get the reference for the body - //var mybody = document.getElementsByTagName("body")[0]; - var mybody = document.getElementById("replace_me"); - var myroot = document.getElementById("a_parent"); - mytable = document.createElement("table"); - mytablebody = document.createElement("tbody"); - mytable.setAttribute("border","0"); - mytable.setAttribute("cellspacing","0"); - mytable.setAttribute("cellpadding","0"); - for(var j = 0; j < 24; j++) - { - mycurrent_row = document.createElement("tr"); - for(var i = 0; i < 80; i++) - { - mycurrent_cell = document.createElement("td"); - offset = (j*80)+i; - currenttext = document.createTextNode(foo.substring(offset,offset+1)); - mycurrent_cell.appendChild(currenttext); - mycurrent_row.appendChild(mycurrent_cell); - } - mytablebody.appendChild(mycurrent_row); - } - mytable.appendChild(mytablebody); - myroot.replaceChild(mytable,mybody); - //mybody.appendChild(mytable); -} -</script> -<body onload="start2();"> -<table align="LEFT" border="0" cellspacing="0" cellpadding="0"> -<div id="a_parent"> -<span id="replace_me"> -<tr align="left" valign="left"> - <td>/</td> - <td>h</td> - <td>o</td> - <td>m</td> - <td>e</td> - <td>/</td> - <td>n</td> - <td>o</td> - <td>a</td> - <td>h</td> - <td>/</td> - <td> </td> -</tr> -</table> -</span> -</div> -</body> -</html>
\ No newline at end of file diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/topip.py b/lldb/third_party/Python/module/pexpect-4.6/examples/topip.py deleted file mode 100755 index 64dac3089cd..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/topip.py +++ /dev/null @@ -1,299 +0,0 @@ -#!/usr/bin/env python - -''' This runs netstat on a local or remote server. It calculates some simple -statistical information on the number of external inet connections. It groups -by IP address. This can be used to detect if one IP address is taking up an -excessive number of connections. It can also send an email alert if a given IP -address exceeds a threshold between runs of the script. This script can be used -as a drop-in Munin plugin or it can be used stand-alone from cron. I used this -on a busy web server that would sometimes get hit with denial of service -attacks. This made it easy to see if a script was opening many multiple -connections. A typical browser would open fewer than 10 connections at once. -A script might open over 100 simultaneous connections. - -./topip.py [-s server_hostname] [-u username] [-p password] - {-a from_addr,to_addr} {-n N} {-v} {--ipv6} - - -s : hostname of the remote server to login to. - -u : username to user for login. - -p : password to user for login. - -n : print stddev for the the number of the top 'N' ipaddresses. - -v : verbose - print stats and list of top ipaddresses. - -a : send alert if stddev goes over 20. - -l : to log message to /var/log/topip.log - --ipv6 : this parses netstat output that includes ipv6 format. - Note that this actually only works with ipv4 addresses, but for - versions of netstat that print in ipv6 format. - --stdev=N : Where N is an integer. This sets the trigger point - for alerts and logs. Default is to trigger if the - max value is over 5 standard deviations. - -Example: - - This will print stats for the top IP addresses connected to the given host: - - ./topip.py -s www.example.com -u mylogin -p mypassword -n 10 -v - - This will send an alert email if the maxip goes over the stddev trigger - value and the the current top ip is the same as the last top ip - (/tmp/topip.last): - - ./topip.py -s www.example.com -u mylogin -p mypassword \\ - -n 10 -v -a alert@example.com,user@example.com - - This will print the connection stats for the localhost in Munin format: - - ./topip.py - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals - -# See http://pexpect.sourceforge.net/ -import pexpect -import pxssh -import os -import sys -import time -import getopt -import pickle -import getpass -import smtplib -from pprint import pprint - - -try: - raw_input -except NameError: - raw_input = input - - -TOPIP_LOG_FILE = '/var/log/topip.log' -TOPIP_LAST_RUN_STATS = '/var/run/topip.last' - -def exit_with_usage(): - - print(globals()['__doc__']) - os._exit(1) - -def stats(r): - - '''This returns a dict of the median, average, standard deviation, - min and max of the given sequence. - - >>> from topip import stats - >>> print stats([5,6,8,9]) - {'med': 8, 'max': 9, 'avg': 7.0, 'stddev': 1.5811388300841898, 'min': 5} - >>> print stats([1000,1006,1008,1014]) - {'med': 1008, 'max': 1014, 'avg': 1007.0, 'stddev': 5.0, 'min': 1000} - >>> print stats([1,3,4,5,18,16,4,3,3,5,13]) - {'med': 4, 'max': 18, 'avg': 6.8181818181818183, 'stddev': 5.6216817577237475, 'min': 1} - >>> print stats([1,3,4,5,18,16,4,3,3,5,13,14,5,6,7,8,7,6,6,7,5,6,4,14,7]) - {'med': 6, 'max': 18, 'avg': 7.0800000000000001, 'stddev': 4.3259218670706474, 'min': 1} - ''' - - total = sum(r) - avg = float(total)/float(len(r)) - sdsq = sum([(i-avg)**2 for i in r]) - s = sorted(list(r)) - return dict(list(zip(['med', 'avg', 'stddev', 'min', 'max'], - (s[len(s)//2], avg, (sdsq/len(r))**.5, min(r), max(r))))) - -def send_alert (message, subject, addr_from, addr_to, smtp_server='localhost'): - - '''This sends an email alert. - ''' - - message = ( 'From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n' - % (addr_from, addr_to, subject) + message ) - server = smtplib.SMTP(smtp_server) - server.sendmail(addr_from, addr_to, message) - server.quit() - -def main(): - - # Parse the options, arguments, etc. - try: - optlist, args = getopt.getopt(sys.argv[1:], - 'h?valqs:u:p:n:', ['help','h','?','ipv6','stddev=']) - except Exception as e: - print(str(e)) - exit_with_usage() - options = dict(optlist) - - munin_flag = False - if len(args) > 0: - if args[0] == 'config': - print('graph_title Netstat Connections per IP') - print('graph_vlabel Socket connections per IP') - print('connections_max.label max') - print('connections_max.info Maximum number of connections per IP') - print('connections_avg.label avg') - print('connections_avg.info Average number of connections per IP') - print('connections_stddev.label stddev') - print('connections_stddev.info Standard deviation') - return 0 - elif args[0] != '': - print(args, len(args)) - return 0 - exit_with_usage() - if [elem for elem in options if elem in ['-h','--h','-?','--?','--help']]: - print('Help:') - exit_with_usage() - if '-s' in options: - hostname = options['-s'] - else: - # if host was not specified then assume localhost munin plugin. - munin_flag = True - hostname = 'localhost' - # If localhost then don't ask for username/password. - if hostname != 'localhost' and hostname != '127.0.0.1': - if '-u' in options: - username = options['-u'] - else: - username = raw_input('username: ') - if '-p' in options: - password = options['-p'] - else: - password = getpass.getpass('password: ') - use_localhost = False - else: - use_localhost = True - - if '-l' in options: - log_flag = True - else: - log_flag = False - if '-n' in options: - average_n = int(options['-n']) - else: - average_n = None - if '-v' in options: - verbose = True - else: - verbose = False - if '-a' in options: - alert_flag = True - (alert_addr_from, alert_addr_to) = tuple(options['-a'].split(',')) - else: - alert_flag = False - if '--ipv6' in options: - ipv6_flag = True - else: - ipv6_flag = False - if '--stddev' in options: - stddev_trigger = float(options['--stddev']) - else: - stddev_trigger = 5 - - if ipv6_flag: - netstat_pattern = r'(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+::ffff:(\S+):(\S+)\s+.*?\r' - else: - netstat_pattern = r'(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(?:::ffff:)*(\S+):(\S+)\s+.*?\r' - #netstat_pattern = r'(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+):(\S+)\s+.*?\r' - - # run netstat (either locally or via SSH). - if use_localhost: - p = pexpect.spawn('netstat -n -t') - PROMPT = pexpect.TIMEOUT - else: - p = pxssh.pxssh() - p.login(hostname, username, password) - p.sendline('netstat -n -t') - PROMPT = p.PROMPT - - # For each matching netstat_pattern put the ip address in the list. - ip_list = {} - try: - while 1: - i = p.expect([PROMPT, netstat_pattern]) - if i == 0: - break - k = p.match.groups()[4].decode('utf-8') - if k in ip_list: - ip_list[k] = ip_list[k] + 1 - else: - ip_list[k] = 1 - except: - pass - - # remove a few common, uninteresting addresses from the dictionary. - ip_list = dict([ (key,value) for key,value in ip_list.items() if '192.168.' not in key]) - ip_list = dict([ (key,value) for key,value in ip_list.items() if '127.0.0.1' not in key]) - - ip_list = list(ip_list.items()) - if len(ip_list) < 1: - if verbose: print('Warning: no networks connections worth looking at.') - return 0 - ip_list.sort(key=lambda x:x[1]) - - # generate some stats for the ip addresses found. - if average_n is not None and average_n <= 1: - average_n = None - # Reminder: the * unary operator treats the list elements as arguments. - zipped = zip(*ip_list[0:average_n]) - s = stats(list(zipped)[1]) - s['maxip'] = ip_list[0] - - # print munin-style or verbose results for the stats. - if munin_flag: - print('connections_max.value', s['max']) - print('connections_avg.value', s['avg']) - print('connections_stddev.value', s['stddev']) - return 0 - if verbose: - pprint (s) - print() - pprint (ip_list[0:average_n]) - - # load the stats from the last run. - try: - last_stats = pickle.load(file(TOPIP_LAST_RUN_STATS)) - except: - last_stats = {'maxip':None} - - if ( s['maxip'][1] > (s['stddev'] * stddev_trigger) - and s['maxip']==last_stats['maxip'] ): - if verbose: print('The maxip has been above trigger for two consecutive samples.') - if alert_flag: - if verbose: print('SENDING ALERT EMAIL') - send_alert(str(s), 'ALERT on %s' - % hostname, alert_addr_from, alert_addr_to) - if log_flag: - if verbose: print('LOGGING THIS EVENT') - fout = file(TOPIP_LOG_FILE,'a') - #dts = time.strftime('%Y:%m:%d:%H:%M:%S', time.localtime()) - dts = time.asctime() - fout.write ('%s - %d connections from %s\n' - % (dts,s['maxip'][1],str(s['maxip'][0]))) - fout.close() - - # save state to TOPIP_LAST_RUN_STATS - try: - pickle.dump(s, file(TOPIP_LAST_RUN_STATS,'w')) - os.chmod (TOPIP_LAST_RUN_STATS, 0o664) - except: - pass - # p.logout() - -if __name__ == '__main__': - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/examples/uptime.py b/lldb/third_party/Python/module/pexpect-4.6/examples/uptime.py deleted file mode 100755 index 86b8dffa1c1..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/examples/uptime.py +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env python - -'''This displays uptime information using uptime. This is redundant, -but it demonstrates expecting for a regular expression that uses subgroups. - -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import absolute_import -from __future__ import print_function -from __future__ import unicode_literals - -import pexpect -import re - -# There are many different styles of uptime results. I try to parse them all. Yeee! -# Examples from different machines: -# [x86] Linux 2.4 (Redhat 7.3) -# 2:06pm up 63 days, 18 min, 3 users, load average: 0.32, 0.08, 0.02 -# [x86] Linux 2.4.18-14 (Redhat 8.0) -# 3:07pm up 29 min, 1 user, load average: 2.44, 2.51, 1.57 -# [PPC - G4] MacOS X 10.1 SERVER Edition -# 2:11PM up 3 days, 13:50, 3 users, load averages: 0.01, 0.00, 0.00 -# [powerpc] Darwin v1-58.corefa.com 8.2.0 Darwin Kernel Version 8.2.0 -# 10:35 up 18:06, 4 users, load averages: 0.52 0.47 0.36 -# [Sparc - R220] Sun Solaris (8) -# 2:13pm up 22 min(s), 1 user, load average: 0.02, 0.01, 0.01 -# [x86] Linux 2.4.18-14 (Redhat 8) -# 11:36pm up 4 days, 17:58, 1 user, load average: 0.03, 0.01, 0.00 -# AIX jwdir 2 5 0001DBFA4C00 -# 09:43AM up 23:27, 1 user, load average: 0.49, 0.32, 0.23 -# OpenBSD box3 2.9 GENERIC#653 i386 -# 6:08PM up 4 days, 22:26, 1 user, load averages: 0.13, 0.09, 0.08 - -# Note that, for Python 3 compatibility reasons, we are using spawnu and -# importing unicode_literals (above). spawnu accepts Unicode input and -# unicode_literals makes all string literals in this script Unicode by default. -p = pexpect.spawnu('uptime') - -# This parses uptime output into the major groups using regex group matching. -p.expect(r'up\s+(.*?),\s+([0-9]+) users?,\s+load averages?: ([0-9]+\.[0-9][0-9]),?\s+([0-9]+\.[0-9][0-9]),?\s+([0-9]+\.[0-9][0-9])') -duration, users, av1, av5, av15 = p.match.groups() - -# The duration is a little harder to parse because of all the different -# styles of uptime. I'm sure there is a way to do this all at once with -# one single regex, but I bet it would be hard to read and maintain. -# If anyone wants to send me a version using a single regex I'd be happy to see it. -days = '0' -hours = '0' -mins = '0' -if 'day' in duration: - p.match = re.search(r'([0-9]+)\s+day',duration) - days = str(int(p.match.group(1))) -if ':' in duration: - p.match = re.search('([0-9]+):([0-9]+)',duration) - hours = str(int(p.match.group(1))) - mins = str(int(p.match.group(2))) -if 'min' in duration: - p.match = re.search(r'([0-9]+)\s+min',duration) - mins = str(int(p.match.group(1))) - -# Print the parsed fields in CSV format. -print('days, hours, minutes, users, cpu avg 1 min, cpu avg 5 min, cpu avg 15 min') -print('%s, %s, %s, %s, %s, %s, %s' % (days, hours, mins, users, av1, av5, av15)) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/notes/my_forkpty.py b/lldb/third_party/Python/module/pexpect-4.6/notes/my_forkpty.py deleted file mode 100644 index f2bef23bd68..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/notes/my_forkpty.py +++ /dev/null @@ -1,89 +0,0 @@ -import os, fcntl, termios -import time - -def my_forkpty(): - - (master_fd, slave_fd) = os.openpty() - - if (master_fd < 0 or slave_fd < 0): - raise ExceptionPexpect("Forkpty failed") - - # slave_name = ptsname(master_fd); - - pid = os.fork(); - if pid == -1: - raise ExceptionPexpect("Forkpty failed") - elif pid == 0: # Child - if hasattr(termios, 'TIOCNOTTY'): - # Some platforms require an explicit detach of the - # current controlling tty before closing stdin, stdout, stderr. - # OpenBSD says that this is obsolete, but doesn't hurt. - try: - fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY) - except: - pass - else: #if fd >= 0: - fcntl.ioctl(fd, termios.TIOCNOTTY, 0) - os.close(fd) - - # The setsid() system call will place the process into its own session - # which has the effect of disassociating it from the controlling terminal. - # This is known to be true for OpenBSD. - os.setsid() - # except: return posix_error(); - - # Verify that we are disconnected from the controlling tty. - try: - fd = os.open("/dev/tty", os.O_RDWR | os.O_NOCTTY) - os.close(fd) - raise ExceptionPexpect("Forkpty failed") - except: - pass - if 'TIOCSCTTY' in dir(termios): - # Make the pseudo terminal the controlling terminal for this process - # (the process must not currently have a controlling terminal). - if fcntl.ioctl(slave_fd, termios.TIOCSCTTY, '') < 0: - raise ExceptionPexpect("Forkpty failed") - -# # Verify that we can open to the slave pty file. */ -# fd = os.open(slave_name, os.O_RDWR); -# if fd < 0: -# raise ExceptionPexpect("Forkpty failed") -# else: -# os.close(fd); - - # Verify that we now have a controlling tty. - fd = os.open("/dev/tty", os.O_WRONLY) - if fd < 0: - raise ExceptionPexpect("This process could not get a controlling tty.") - else: - os.close(fd) - - os.close(master_fd) - os.dup2(slave_fd, 0) - os.dup2(slave_fd, 1) - os.dup2(slave_fd, 2) - if slave_fd > 2: - os.close(slave_fd) - pid = 0 - - else: - # PARENT - os.close(slave_fd); - - if pid == -1: - raise ExceptionPexpect("This process could not get a controlling tty.") -# if (pid == 0) -# PyOS_AfterFork(); - - return (pid, master_fd) - -pid, fd = my_forkpty () -if pid == 0: # child - print 'I am not a robot!' -else: - print '(pid, fd) = (%d, %d)' % (pid, fd) - time.sleep(1) # Give the child a chance to print. - print 'Robots always say:', os.read(fd,100) - os.close(fd) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/notes/notes.txt b/lldb/third_party/Python/module/pexpect-4.6/notes/notes.txt deleted file mode 100644 index 8ff6cfe29da..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/notes/notes.txt +++ /dev/null @@ -1,50 +0,0 @@ - -#################### -# -# NOTES -# -#################### - -## def send_human(self, text, delay_min = 0, delay_max = 1): -## pass -## def spawn2(self, command, args): -## """return pid, fd_stdio, fd_stderr -## """ -## pass - - -# Reason for double fork: -# http://www.erlenstar.demon.co.uk/unix/faq_2.html#SEC15 -# Reason for ptys: -# http://www.erlenstar.demon.co.uk/unix/faq_4.html#SEC52 - -# Nonblocking on Win32? -# Research this as a way to maybe make pipe work for Win32. -# http://groups.google.com/groups?q=setraw+tty&hl=en&selm=uvgpvisvk.fsf%40roundpoint.com&rnum=7 -# -# if istty: -# if os.name=='posix': -# import tty -# tty.setraw(sys.stdin.fileno()) -# elif os.name=='nt': -# import win32file, win32con -# hstdin = win32file._get_osfhandle(sys.stdin.fileno()) -# modes = (win32file.GetConsoleMode(hstdin) -# & ~(win32con.ENABLE_LINE_INPUT -# |win32con.ENABLE_ECHO_INPUT)) -# win32file.SetConsoleMode(hstdin, modes) - -# Basic documentation: -# Explain use of lists of patterns and return index. -# Explain exceptions for non-handled special cases like EOF - -# Test bad fork -# Test ENOENT. In other words, no more TTY devices. - -#GLOBAL_SIGCHLD_RECEIVED = 0 -#def childdied (signum, frame): -# print 'Signal handler called with signal', signum -# frame.f_globals['pexpect'].GLOBAL_SIGCHLD_RECEIVED = 1 -# print str(frame.f_globals['pexpect'].GLOBAL_SIGCHLD_RECEIVED) -# GLOBAL_SIGCHLD_RECEIVED = 1 - diff --git a/lldb/third_party/Python/module/pexpect-4.6/notes/posixmodule.c.diff b/lldb/third_party/Python/module/pexpect-4.6/notes/posixmodule.c.diff deleted file mode 100644 index 3bea1f9cba9..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/notes/posixmodule.c.diff +++ /dev/null @@ -1,233 +0,0 @@ -*** Python-2.2.1.orig/Modules/posixmodule.c Tue Mar 12 16:38:31 2002 ---- Python-2.2.1/Modules/posixmodule.c Tue May 21 01:16:29 2002 -*************** -*** 1904,1910 **** - } - #endif - -! #if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) - #ifdef HAVE_PTY_H - #include <pty.h> - #else ---- 1904,1913 ---- - } - #endif - -! #if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) || defined(sun) -! #ifdef sun -! #include <sys/stropts.h> -! #endif - #ifdef HAVE_PTY_H - #include <pty.h> - #else -*************** -*** 1914,1920 **** - #endif /* HAVE_PTY_H */ - #endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) */ - -! #if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) - static char posix_openpty__doc__[] = - "openpty() -> (master_fd, slave_fd)\n\ - Open a pseudo-terminal, returning open fd's for both master and slave end.\n"; ---- 1917,1923 ---- - #endif /* HAVE_PTY_H */ - #endif /* defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY) */ - -! #if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(sun) - static char posix_openpty__doc__[] = - "openpty() -> (master_fd, slave_fd)\n\ - Open a pseudo-terminal, returning open fd's for both master and slave end.\n"; -*************** -*** 1925,1932 **** - int master_fd, slave_fd; - #ifndef HAVE_OPENPTY - char * slave_name; - #endif -! - if (!PyArg_ParseTuple(args, ":openpty")) - return NULL; - ---- 1928,1941 ---- - int master_fd, slave_fd; - #ifndef HAVE_OPENPTY - char * slave_name; -+ #ifdef sun -+ void *sig_saved; - #endif -! #endif -! #if !defined(HAVE_OPENPTY) && !defined(HAVE__GETPTY) && defined(sun) -! extern char *ptsname(); -! #endif -! - if (!PyArg_ParseTuple(args, ":openpty")) - return NULL; - -*************** -*** 1933,1939 **** - #ifdef HAVE_OPENPTY - if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) != 0) - return posix_error(); -! #else - slave_name = _getpty(&master_fd, O_RDWR, 0666, 0); - if (slave_name == NULL) - return posix_error(); ---- 1942,1948 ---- - #ifdef HAVE_OPENPTY - if (openpty(&master_fd, &slave_fd, NULL, NULL, NULL) != 0) - return posix_error(); -! #elif HAVE__GETPTY - slave_name = _getpty(&master_fd, O_RDWR, 0666, 0); - if (slave_name == NULL) - return posix_error(); -*************** -*** 1941,1946 **** ---- 1950,1966 ---- - slave_fd = open(slave_name, O_RDWR); - if (slave_fd < 0) - return posix_error(); -+ #else -+ master_fd = open("/dev/ptmx", O_RDWR|O_NOCTTY); /* open master */ -+ sig_saved = signal(SIGCHLD, SIG_DFL); -+ grantpt(master_fd); /* change permission of slave */ -+ unlockpt(master_fd); /* unlock slave */ -+ signal(SIGCHLD,sig_saved); -+ slave_name = ptsname(master_fd); /* get name of slave */ -+ slave_fd = open(slave_name, O_RDWR); /* open slave */ -+ ioctl(slave_fd, I_PUSH, "ptem"); /* push ptem */ -+ ioctl(slave_fd, I_PUSH, "ldterm"); /* push ldterm*/ -+ ioctl(slave_fd, I_PUSH, "ttcompat"); /* push ttcompat*/ - #endif /* HAVE_OPENPTY */ - - return Py_BuildValue("(ii)", master_fd, slave_fd); -*************** -*** 1948,1954 **** - } - #endif /* defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) */ - -! #ifdef HAVE_FORKPTY - static char posix_forkpty__doc__[] = - "forkpty() -> (pid, master_fd)\n\ - Fork a new process with a new pseudo-terminal as controlling tty.\n\n\ ---- 1968,1974 ---- - } - #endif /* defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) */ - -! #if defined(HAVE_FORKPTY) || defined(sun) - static char posix_forkpty__doc__[] = - "forkpty() -> (pid, master_fd)\n\ - Fork a new process with a new pseudo-terminal as controlling tty.\n\n\ -*************** -*** 1959,1968 **** ---- 1979,2067 ---- - posix_forkpty(PyObject *self, PyObject *args) - { - int master_fd, pid; -+ #if defined(sun) -+ int slave; -+ char * slave_name; -+ void *sig_saved; -+ int fd; -+ #endif - - if (!PyArg_ParseTuple(args, ":forkpty")) - return NULL; -+ #if defined(sun) -+ master_fd = open("/dev/ptmx", O_RDWR|O_NOCTTY); /* open master */ -+ sig_saved = signal(SIGCHLD, SIG_DFL); -+ grantpt(master_fd); /* change permission of slave */ -+ unlockpt(master_fd); /* unlock slave */ -+ signal(SIGCHLD,sig_saved); -+ slave_name = ptsname(master_fd); /* get name of slave */ -+ slave = open(slave_name, O_RDWR); /* open slave */ -+ ioctl(slave, I_PUSH, "ptem"); /* push ptem */ -+ ioctl(slave, I_PUSH, "ldterm"); /* push ldterm*/ -+ ioctl(slave, I_PUSH, "ttcompat"); /* push ttcompat*/ -+ if (master_fd < 0 || slave < 0) -+ { -+ return posix_error(); -+ } -+ switch (pid = fork()) { -+ case -1: -+ return posix_error(); -+ case 0: -+ /* First disconnect from the old controlling tty. */ -+ #ifdef TIOCNOTTY -+ fd = open("/dev/tty", O_RDWR | O_NOCTTY); -+ if (fd >= 0) { -+ (void) ioctl(fd, TIOCNOTTY, NULL); -+ close(fd); -+ } -+ #endif /* TIOCNOTTY */ -+ if (setsid() < 0) -+ return posix_error(); -+ -+ /* -+ * Verify that we are successfully disconnected from the controlling -+ * tty. -+ */ -+ fd = open("/dev/tty", O_RDWR | O_NOCTTY); -+ if (fd >= 0) { -+ return posix_error(); -+ close(fd); -+ } -+ /* Make it our controlling tty. */ -+ #ifdef TIOCSCTTY -+ if (ioctl(slave, TIOCSCTTY, NULL) < 0) -+ return posix_error(); -+ #endif /* TIOCSCTTY */ -+ fd = open(slave_name, O_RDWR); -+ if (fd < 0) { -+ return posix_error(); -+ } else { -+ close(fd); -+ } -+ /* Verify that we now have a controlling tty. */ -+ fd = open("/dev/tty", O_WRONLY); -+ if (fd < 0) -+ return posix_error(); -+ else { -+ close(fd); -+ } -+ (void) close(master_fd); -+ (void) dup2(slave, 0); -+ (void) dup2(slave, 1); -+ (void) dup2(slave, 2); -+ if (slave > 2) -+ (void) close(slave); -+ pid = 0; -+ break; -+ defautlt: -+ /* -+ * parent -+ */ -+ (void) close(slave); -+ } -+ #else - pid = forkpty(&master_fd, NULL, NULL, NULL); -+ #endif - if (pid == -1) - return posix_error(); - if (pid == 0) -*************** -*** 5607,5616 **** - #ifdef HAVE_FORK - {"fork", posix_fork, METH_VARARGS, posix_fork__doc__}, - #endif /* HAVE_FORK */ -! #if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) - {"openpty", posix_openpty, METH_VARARGS, posix_openpty__doc__}, - #endif /* HAVE_OPENPTY || HAVE__GETPTY */ -! #ifdef HAVE_FORKPTY - {"forkpty", posix_forkpty, METH_VARARGS, posix_forkpty__doc__}, - #endif /* HAVE_FORKPTY */ - #ifdef HAVE_GETEGID ---- 5706,5715 ---- - #ifdef HAVE_FORK - {"fork", posix_fork, METH_VARARGS, posix_fork__doc__}, - #endif /* HAVE_FORK */ -! #if defined(HAVE_OPENPTY) || defined(HAVE__GETPTY) || defined(sun) - {"openpty", posix_openpty, METH_VARARGS, posix_openpty__doc__}, - #endif /* HAVE_OPENPTY || HAVE__GETPTY */ -! #if defined(HAVE_FORKPTY) || defined(sun) - {"forkpty", posix_forkpty, METH_VARARGS, posix_forkpty__doc__}, - #endif /* HAVE_FORKPTY */ - #ifdef HAVE_GETEGID diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/PexpectTestCase.py b/lldb/third_party/Python/module/pexpect-4.6/tests/PexpectTestCase.py deleted file mode 100644 index 307437efad3..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/PexpectTestCase.py +++ /dev/null @@ -1,108 +0,0 @@ - -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import print_function - -import contextlib -import unittest -import signal -import sys -import os - - -class PexpectTestCase(unittest.TestCase): - def setUp(self): - self.PYTHONBIN = sys.executable - self.original_path = os.getcwd() - tests_dir = os.path.dirname(__file__) - self.project_dir = project_dir = os.path.dirname(tests_dir) - - # all tests are executed in this folder; there are many auxiliary - # programs in this folder executed by spawn(). - os.chdir(tests_dir) - - # If the pexpect raises an exception after fork(), but before - # exec(), our test runner *also* forks. We prevent this by - # storing our pid and asserting equality on tearDown. - self.pid = os.getpid() - - coverage_rc = os.path.join(project_dir, '.coveragerc') - os.environ['COVERAGE_PROCESS_START'] = coverage_rc - os.environ['COVERAGE_FILE'] = os.path.join(project_dir, '.coverage') - print('\n', self.id(), end=' ') - sys.stdout.flush() - - # some build agents will ignore SIGHUP and SIGINT, which python - # inherits. This causes some of the tests related to terminate() - # to fail. We set them to the default handlers that they should - # be, and restore them back to their SIG_IGN value on tearDown. - # - # I'm not entirely convinced they need to be restored, only our - # test runner is affected. - self.restore_ignored_signals = [ - value for value in (signal.SIGHUP, signal.SIGINT,) - if signal.getsignal(value) == signal.SIG_IGN] - if signal.SIGHUP in self.restore_ignored_signals: - # sighup should be set to default handler - signal.signal(signal.SIGHUP, signal.SIG_DFL) - if signal.SIGINT in self.restore_ignored_signals: - # SIGINT should be set to signal.default_int_handler - signal.signal(signal.SIGINT, signal.default_int_handler) - unittest.TestCase.setUp(self) - - def tearDown(self): - # restore original working folder - os.chdir(self.original_path) - - if self.pid != os.getpid(): - # The build server pattern-matches phrase 'Test runner has forked!' - print("Test runner has forked! This means a child process raised " - "an exception before exec() in a test case, the error is " - "more than likely found above this line in stderr.", - file=sys.stderr) - exit(1) - - # restore signal handlers - for signal_value in self.restore_ignored_signals: - signal.signal(signal_value, signal.SIG_IGN) - - if sys.version_info < (2, 7): - # We want to use these methods, which are new/improved in 2.7, but - # we are still supporting 2.6 for the moment. This section can be - # removed when we drop Python 2.6 support. - @contextlib.contextmanager - def assertRaises(self, excClass): - try: - yield - except Exception as e: - assert isinstance(e, excClass) - else: - raise AssertionError("%s was not raised" % excClass) - - @contextlib.contextmanager - def assertRaisesRegexp(self, excClass, pattern): - import re - try: - yield - except Exception as e: - assert isinstance(e, excClass) - assert re.match(pattern, str(e)) - else: - raise AssertionError("%s was not raised" % excClass) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/README b/lldb/third_party/Python/module/pexpect-4.6/tests/README deleted file mode 100644 index ef5b613498e..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/README +++ /dev/null @@ -1,8 +0,0 @@ - -The best way to run these tests is from the directory above this one. Run: - - py.test - -To run a specific test file: - - py.test tests/test_constructor.py diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/TESTDATA.txt b/lldb/third_party/Python/module/pexpect-4.6/tests/TESTDATA.txt deleted file mode 100644 index adb9c01360f..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/TESTDATA.txt +++ /dev/null @@ -1,8 +0,0 @@ -This is test data. - One - 2 - THREE - IV - ..... - 110 -This is the end of test data: END diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/__init__.py b/lldb/third_party/Python/module/pexpect-4.6/tests/__init__.py deleted file mode 100755 index f717d82ecf5..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ - -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -# __init__.py -# The mere presence of this file makes the dir a package. -pass - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/adhoc.py b/lldb/third_party/Python/module/pexpect-4.6/tests/adhoc.py deleted file mode 100755 index 0813d349ee9..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/adhoc.py +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import print_function - -import pexpect -import time - -p = pexpect.spawn ('./a.out') -print(p.exitstatus) -p.expect (pexpect.EOF) -print(p.before) -time.sleep(1) -print('exitstatus:', p.exitstatus) -print('isalive',p.isalive()) -print('exitstatus',p.exitstatus) -print('isalive',p.isalive()) -print('exitstatus',p.exitstatus) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/alarm_die.py b/lldb/third_party/Python/module/pexpect-4.6/tests/alarm_die.py deleted file mode 100644 index a1519abac1d..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/alarm_die.py +++ /dev/null @@ -1,5 +0,0 @@ -import signal, time - -signal.alarm(1) # Schedule SIGALRM in 1s - -time.sleep(6)
\ No newline at end of file diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/bambi.vt b/lldb/third_party/Python/module/pexpect-4.6/tests/bambi.vt deleted file mode 100644 index 853f099b4c5..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/bambi.vt +++ /dev/null @@ -1,417 +0,0 @@ -[?25l -[1;24r -[2J -[10;1H The -[10;1H The Adventures -[10;1H The Adventures of -[10;1H The Adventures of BAMBI -[16;1H -[15;1H Number -[15;1H Number One : -[15;1H Number One : BAMBI -[15;1H Number One : BAMBI versus -[15;1H Number One : BAMBI versus GODZILLA -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[16;1H -[2J -[23;5H ,| *./[24;5H\|(/|/[1;1H -[22;38H /|[23;38H |/`|',[24;38H/| \|/[1;1H -[23;65H \/_,| /| /,[24;65H /<|\\/\|/|\[1;1H -[15;1H _^_ -[16;1H o / .\ -[17;1H \,--------; __o -[18;1H / .:::. . / -[19;1H \___________/ -[20;1H |\ |\ -[21;1H | > | \ -[22;1H / / | \ -[15;2H _^_ -[16;2H o / .\ -[17;2H \,--------; __o -[18;2H / .:::. . / -[19;2H \___________/ -[20;2H \| |\ -[21;2H \ | \ -[22;2H / \ / | -[15;3H _^_ -[16;3H o / .\ -[17;3H \,--------; __o -[18;3H / .:::. . / -[19;3H \___________/ -[20;3H \\ \| -[21;3H \\ \ -[22;3H | \ |\ -[15;4H _^_ -[16;4H o / .\ -[17;4H \,--------; __o -[18;4H / .:::. . / -[19;4H \___________/ -[20;4H \\ \| -[21;4H >\ \ -[22;4H / | /| -[15;5H _^_ -[16;5H o / .\ -[17;5H \,--------; __o -[18;5H / .:::.. . / -[19;5H \___________/ -[20;5H |\ |\ -[21;5H | > | \ -[22;5H / / | \ -[15;6H _^_ -[16;6H o / .\ -[17;6H \,--------; __o -[18;6H / .:::.. . / -[19;6H \___________/ -[20;6H \| |\ -[21;6H \ | \ -[22;6H / \ / | -[15;18H -[16;18H -[17;18H--,_^_ -[18;18H. .\ -[19;18H__--___o -[17;18H--_ -[18;18H. \ -[19;18H__ \/| -[20;18H|\( .| -[21;18H| \\ / -[22;18H | " -[17;18H--_ -[18;18H. \ -[19;18H__ \/| -[20;18H|\( .| -[21;18H| \\ / -[22;18H | " -[17;18H--_ -[18;18H. \ -[19;18H__ \/| -[20;18H|\( .| -[21;18H| \\ / -[22;18H | " -[17;18H--_ -[18;18H. \ -[19;18H__ \/| -[20;18H|\( .| -[21;18H| \\ / -[22;18H | " -[17;18H--,_^_ -[18;18H. .\ -[19;18H__--___o -[20;18H|\ -[21;18H| \ -[22;18H | -[15;7H _^_ -[16;7H o / .\ -[17;7H \,--------; __o -[18;7H / .:::.. . / -[19;7H \___________/ -[20;7H \\ \| -[21;7H \\ \ -[22;7H | \ |\ -[15;8H _^_ -[16;8H o / .\ -[17;8H \,--------; __o -[18;8H / .:::.. . / -[19;8H \___________/ -[20;8H \\ \| -[21;8H >\ \ -[22;8H / | /| -[15;9H _^_ -[16;9H o / .\ -[17;9H \,--------; __o -[18;9H / .:::.. . / -[19;9H \___________/ -[20;9H |\ |\ -[21;9H | > | \ -[22;9H / / | \ -[15;10H _^_ -[16;10H o / .\ -[17;10H \,--------; __o -[18;10H / .:::.. . / -[19;10H \___________/ -[20;10H \| |\ -[21;10H \ | \ -[22;10H / \ / | -[15;11H _^_ -[16;11H o / .\ -[17;11H \,--------; __o -[18;11H / .:::.. . / -[19;11H \___________/ -[20;11H \\ \| -[21;11H \\ \ -[22;11H | \ |\ -[15;12H _^_ -[16;12H o / .\ -[17;12H \,--------; __o -[18;12H / .:::.. . / -[19;12H \___________/ -[20;12H \\ \| -[21;12H >\ \ -[22;12H / | /| -[15;13H _^_ -[16;13H o / .\ -[17;13H \,--------; __o -[18;13H / .:::.. . / -[19;13H \___________/ -[20;13H |\ |\ -[21;13H | > | \ -[22;13H / / | \ -[15;14H _^_ -[16;14H o / .\ -[17;14H \,--------; __o -[18;14H / .:::.. . / -[19;14H \___________/ -[20;14H \| |\ -[21;14H \ | \ -[22;14H / \ / | -[15;15H _^_ -[16;15H o / .\ -[17;15H \,--------; __o -[18;15H / .:::.. . / -[19;15H \___________/ -[20;15H \\ \| -[21;15H \\ \ -[22;15H | \ |\ -[15;16H _^_ -[16;16H o / .\ -[17;16H \,--------; __o -[18;16H / .:::.. . / -[19;16H \___________/ -[20;16H \\ \| -[21;16H >\ \ -[22;16H / | /| -[15;17H _^_ -[16;17H o / .\ -[17;17H \,--------; __o -[18;17H / .:::.. . / -[19;17H \___________/ -[20;17H |\ |\ -[21;17H | > | \ -[22;17H / / | \ -[15;29H -[16;29H -[17;29H--,_^_ -[18;29H. .\ -[19;29H__--___o -[17;29H--_ -[18;29H. \ -[19;29H__ \/| -[20;29H|\( .| -[21;29H| \\ / -[22;29H| \" -[17;29H--_ -[18;29H. \ -[19;29H__ \/| -[20;29H|\( .| -[21;29H| \\ / -[22;29H| \" -[17;29H--,_^_ -[18;29H. .\ -[19;29H__--___o -[20;29H|\ -[21;29H| \ -[22;29H| \ -[17;29H--,_^_ -[18;29H. .\ -[19;29H__--___o -[20;29H|\ -[21;29H| \ -[22;29H| \ -[17;29H--_ -[18;29H. \ -[19;29H__ \/| -[20;29H|\( .| -[21;29H| \\ / -[22;29H| \" -[17;29H--_ -[18;29H. \ -[19;29H__ \/| -[20;29H|\( .| -[21;29H| \\ / -[22;29H| \" -[17;29H--_ -[18;29H. \ -[19;29H__ \/| -[20;29H|\( .| -[21;29H| \\ / -[22;29H| \" -[17;29H--,_^_ -[18;29H. .\ -[19;29H__--___o -[20;29H|\ -[21;29H| \ -[22;29H| \ -[15;18H _^_ -[16;18H o / .\ -[17;18H \,--------; __o -[18;18H / .:::.. . / -[19;18H \___________/ -[20;18H \| |\ -[21;18H \ | \ -[22;18H / \ / | -[15;19H _^_ -[16;19H o / .\ -[17;19H \,--------; __o -[18;19H / .:::.. . / -[19;19H \___________/ -[20;19H \\ \| -[21;19H \\ \ -[22;19H | \ |\ -[15;20H _^_ -[16;20H o / .\ -[17;20H \,--------; __o -[18;20H / .:::.. . / -[19;20H \___________/ -[20;20H \\ \| -[21;20H >\ \ -[22;20H / | /| -[15;21H _^_ -[16;21H o / .\ -[17;21H \,--------; __o -[18;21H / .:::.. . / -[19;21H \___________/ -[20;21H |\ |\ -[21;21H | > | \ -[22;21H / / | \ -[15;22H _^_ -[16;22H o / .\ -[17;22H \,--------; __o -[18;22H / .:::.. . / -[19;22H \___________/ -[20;22H \| |\ -[21;22H \ | \ -[22;22H / \ / | -[15;23H _^_ -[16;23H o / .\ -[17;23H \,--------; __o -[18;23H / .:::.. . / -[19;23H \___________/ -[20;23H \\ \| -[21;23H \\ \ -[22;23H | \ |\ -[15;24H _^_ -[16;24H o / .\ -[17;24H \,--------; __o -[18;24H / .:::.. . / -[19;24H \___________/ -[20;24H \\ \| -[21;24H >\ \ -[22;24H / | /| -[15;24H -[16;24H o -[17;24H \,----------,_^_ -[18;24H / .:::.. . .\ -[19;24H \___________--___o -[20;24H \\ \| -[21;24H >\ \ -[22;24H / | /| -[15;24H -[16;24H o -[17;24H \,----------_ -[18;24H / .:::.. . \ -[19;24H \___________ \/| -[20;24H \\ \|( .| -[21;24H >\ \ \ / -[22;24H / | /| " -[1;15r -[1;10H`' `.__________________________________/M -[1;10H( / ([1;54H/M -[1;10H(-.___[1;55H)M -[1;11H/ \/[1;55H)M -[1;12H_______.--'[1;54H\M -[1;23H,____________/[1;53H\M -[1;37H( / )M -[1;37H( ) /M -[1;37H\ \ )M -[1;36H( )M -[1;36H( ( /M -[1;36H\ ( )M -[1;35H( \ )M -[1;35H( ( /M -[1;16r -[1;35H\ ( ) )M -[1;17r -[1;34H( ( / )M -[1;18r -[1;34H( \ ) /M -[1;19r -[1;34H\ ( ) )M -[1;20r -[1;33H( ) )M -[1;21r -[1;33H( ) /M -[1;22r -[1;33H\ / )M -[1;24r -[1;32H( ) ) -[23;25H / > | \ -[1;1H -[1;1H -[10;1H T[10;1H T[10;1H T -[10;1H T H[10;1H T H[10;1H T H -[10;1H T H E[10;1H T H E[10;1H T H E [10;1H T H E -[10;1H T H E E[10;1H T H E E[10;1H T H E E -[10;1H T H E E N[10;1H T H E E N[10;1H T H E E N -[10;1H T H E E N D[10;1H T H E E N D -[11;1H =============== -[22;1H -[?25h diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/depricated_test_filedescriptor.py b/lldb/third_party/Python/module/pexpect-4.6/tests/depricated_test_filedescriptor.py deleted file mode 100755 index 6b0ef3e8cc8..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/depricated_test_filedescriptor.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -import PexpectTestCase -import os - -class ExpectTestCase(PexpectTestCase.PexpectTestCase): - def setUp(self): - print(self.id()) - PexpectTestCase.PexpectTestCase.setUp(self) - - def test_fd (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = pexpect.spawn (fd) - s.expect ('This is the end of test data:') - s.expect (pexpect.EOF) - assert s.before == ' END\n' - - def test_maxread (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = pexpect.spawn (fd) - s.maxread = 100 - s.expect('2') - s.expect ('This is the end of test data:') - s.expect (pexpect.EOF) - assert s.before == ' END\n' - - def test_fd_isalive (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = pexpect.spawn (fd) - assert s.isalive() - os.close (fd) - assert not s.isalive() - - def test_fd_isatty (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = pexpect.spawn (fd) - assert not s.isatty() - os.close(fd) - -### def test_close_does_not_close_fd (self): -### '''Calling close() on a pexpect.spawn object should not -### close the underlying file descriptor. -### ''' -### fd = os.open ('TESTDATA.txt', os.O_RDONLY) -### s = pexpect.spawn (fd) -### try: -### s.close() -### self.fail('Expected an Exception.') -### except pexpect.ExceptionPexpect, e: -### pass - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(ExpectTestCase, 'test') - -#fout = open('delete_me_1','wb') -#fout.write(the_old_way) -#fout.close -#fout = open('delete_me_2', 'wb') -#fout.write(the_new_way) -#fout.close diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/echo_w_prompt.py b/lldb/third_party/Python/module/pexpect-4.6/tests/echo_w_prompt.py deleted file mode 100644 index 3c8055357df..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/echo_w_prompt.py +++ /dev/null @@ -1,15 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import print_function - -try: - raw_input -except NameError: - raw_input = input - -while True: - try: - a = raw_input('<in >') - except EOFError: - print('<eof>') - break - print('<out>', a, sep='') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/echo_wait.py b/lldb/third_party/Python/module/pexpect-4.6/tests/echo_wait.py deleted file mode 100755 index e15205925cf..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/echo_wait.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import time -import termios -import sys - -# a dumb PAM will print the password prompt first then set ECHO -# False. What it should do it set ECHO False first then print the -# prompt. Otherwise, if we see the password prompt and type out -# password real fast before it turns off ECHO then some or all of -# our password might be visibly echod back to us. Sounds unlikely? -# It happens. - -print("fake password:") -sys.stdout.flush() -time.sleep(3) -attr = termios.tcgetattr(sys.stdout) -attr[3] = attr[3] & ~termios.ECHO -termios.tcsetattr(sys.stdout, termios.TCSANOW, attr) -time.sleep(12) -attr[3] = attr[3] | termios.ECHO -termios.tcsetattr(sys.stdout, termios.TCSANOW, attr) -time.sleep(2) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/exit1.py b/lldb/third_party/Python/module/pexpect-4.6/tests/exit1.py deleted file mode 100755 index 587b8adde79..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/exit1.py +++ /dev/null @@ -1,24 +0,0 @@ -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import os, sys - -print("Hello") -sys.stdout.flush() -os._exit(1) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/exit667.c b/lldb/third_party/Python/module/pexpect-4.6/tests/exit667.c deleted file mode 100644 index 962b9fdb676..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/exit667.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#include <stdio.h> -int main () -{ - printf ("Hello world!\n"); - exit(7); -} diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/fakessh/ssh b/lldb/third_party/Python/module/pexpect-4.6/tests/fakessh/ssh deleted file mode 100755 index d3259e4a252..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/fakessh/ssh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function - -import getpass -import sys -PY3 = (sys.version_info[0] >= 3) -if not PY3: - input = raw_input - -server = sys.argv[-1] -if server == 'noserver': - print('No route to host') - sys.exit(1) - -print("Mock SSH client for tests. Do not enter real security info.") - -pw = getpass.getpass('password:') -if pw != 's3cret': - print('Permission denied!') - sys.exit(1) - -prompt = "$" -while True: - cmd = input(prompt) - if cmd.startswith('PS1='): - prompt = eval(cmd[4:]).replace('\$', '$') - elif cmd == 'ping': - print('pong') - elif cmd.startswith('ls'): - print('file1.py', 'file2.html', sep='\t') - elif cmd == 'echo $?': - print(0) - elif cmd in ('exit', 'logout'): - break diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/getch.py b/lldb/third_party/Python/module/pexpect-4.6/tests/getch.py deleted file mode 100755 index a362e521d31..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/getch.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import print_function -import sys, tty, termios - -if hasattr(sys.stdin, 'buffer'): - # Python 3: we want to read raw bytes - stdin = sys.stdin.buffer -else: - stdin = sys.stdin - -def main(): - print('READY', end='\r\n') - while True: - try: - val = ord(stdin.read(1)) - except KeyboardInterrupt: - val = 3 - print('%d<STOP>' % (val,), end='\r\n') - if val == 0: - # StopIteration equivalent is ctrl+' ' (\x00, NUL) - break - -if __name__ == '__main__': - fd = sys.stdin.fileno() - old_settings = termios.tcgetattr(fd) - try: - tty.setraw(sys.stdin.fileno()) - main() - finally: - termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) - sys.stdout.flush() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/globe.vt b/lldb/third_party/Python/module/pexpect-4.6/tests/globe.vt deleted file mode 100644 index 85dc78d7729..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/globe.vt +++ /dev/null @@ -1,690 +0,0 @@ -[H[J _-o#&&*''''?d:>b\_ - _o/"`'' '',, dMF9MMMMMHo_ - .o&#' `"MbHMMMMMMMMMMMHo. - .o"" ' vodM*$&&HMMMMMMMMMM?. - ,' $M&ood,~'`(&##MMMMMMH\ - / ,MMMMMMM#b?#bobMMMMHMMML - & ?MMMMMMMMMMMMMMMMM7MMM$R*Hk - ?$. :MMMMMMMMMMMMMMMMMMM/HMMM|`*L -| |MMMMMMMMMMMMMMMMMMMMbMH' T, -$H#: `*MMMMMMMMMMMMMMMMMMMMb#}' `? -]MMH# ""*""""*#MMMMMMMMMMMMM' - -MMMMMb_ |MMMMMMMMMMMP' : -HMMMMMMMHo `MMMMMMMMMT . -?MMMMMMMMP 9MMMMMMMM} - --?MMMMMMM |MMMMMMMMM?,d- ' - :|MMMMMM- `MMMMMMMT .M|. : - .9MMM[ &MMMMM*' `' . - :9MMk `MMM#" - - &M} ` .- - `&. . - `~, . ./ - . _ .- - '`--._,dd###pp=""' -[H _v->#H#P? "':o<>\_ - .,dP` `'' "'-o.+H6&MMMHo_ - oHMH9' `?&bHMHMMMMMMHo. - oMP"' ' ooMP*#&HMMMMMMM?. - ,M* - `*MSdob//`^&##MMMH\ - d*' .,MMMMMMH#o>#ooMMMMMb - HM- :HMMMMMMMMMMMMMMM&HM[R\ - d"Z\. 9MMMMMMMMMMMMMMMMM[HMM|: --H - MMMMMMMMMMMMMMMMMMMbMP' : -:??Mb# `9MMMMMMMMMMMMMMMMMMH#! . -: MMMMH#, "*""""`#HMMMMMMMMMMH - -||MMMMMM6\. {MMMMMMMMMH' : -:|MMMMMMMMMMHo `9MMMMMMMM' . -. HMMMMMMMMMMP' !MMMMMMMM ` -- `#MMMMMMMMM HMMMMMMM*,/ : - : ?MMMMMMMF HMMMMMM',P' : - . HMMMMR' {MMMMP' ^' - - : `HMMMT iMMH' .' - -.`HMH . - -:*H . ' - -`\,, . .- - ' . _ .-` - '`~\.__,obb#q==~''' -[H .ovr:HMM#?:`' >b\_ - .,:&Hi' `' "' \\|&bSMHo_ - oHMMM#*} `?&dMMMMMMHo. - .dMMMH"'''' ,oHH*&&9MMMM?. - ,MMM*' `*M\bd<|"*&#MH\ - dHH?' :MMMMMM#bd#odMML - H' |\ `dMMMMMMMMMMMMMM9Mk - JL/"7+,. `MMMMMMMMMMMMMMMH9ML --`Hp ' |MMMMMMMMMMMMMMMMHH|: -: \\#M#d? `HMMMMMMMMMMMMMMMMH. -. JMMMMM##, ``*""'"*#MMMMMMMMH --. ,MMMMMMMM6o_ |MMMMMMMM': -: |MMMMMMMMMMMMMb\ TMMMMMMT : -. ?MMMMMMMMMMMMM' :MMMMMM|.` -- ?HMMMMMMMMMM: HMMMMMM\|: - : 9MMMMMMMMH' `MMMMMP.P. - . `MMMMMMT'' HMMM*''- - - TMMMMM' MM*' - - '. HMM# - - -. `9M: .' - -. `b,, . . ' - '-\ ., .-` - '-:b~\\_,oddq==--" -[H _oo##'9MMHb':'-,o_ - .oH":HH$' ""' "' -\7*R&o_ - .oHMMMHMH#9: "\bMMMMHo. - dMMMMMM*""'`' .oHM"H9MM?. - ,MMMMMM' "HLbd<|?&H\ - JMMH#H' |MMMMM#b>bHb - :MH ."\ `|MMMMMMMMMMMM& - .:M:d-"|:b.. 9MMMMMMMMMMMMM+ -: "*H| - &MMMMMMMMMMMMMH: -. `LvdHH#d? `?MMMMMMMMMMMMMb -: iMMMMMMH#b `"*"'"#HMMMMMM -. . ,MMMMMMMMMMb\. {MMMMMH -- |MMMMMMMMMMMMMMHb, `MMMMM| -: |MMMMMMMMMMMMMMH' &MMMM, -- `#MMMMMMMMMMMM |MMMM6- - : `MMMMMMMMMM+ ]MMMT/ - . `MMMMMMMP" HMM*` - - |MMMMMH' ,M#'- - '. :MMMH| .- - . |MM - - ` . `#?.. . ..' - -. _. .- - '-|.#qo__,,ob=~~-'' -[H _ooppH[`MMMD::--\_ - _oHMR":&M&. ""' "' /&\\_ - oHMMMMMHMMH#9, `"<MMHo. - oHMMMMMMMM*""'`` .dMP#M?. - .dMMMMMMMM* `H\do?&\ - -iMMMHH#H' &MMMHb#? - : ZMM' 7-. `{MMMMMMMMH - . .M6_d|"`$|v.. 9MMMMMMMMML -- `'*H# : |MMMMMMMMMM: -: *\\dHM#dd. ?MMMMMMMMMb -- |MMMMMMM##\ `"*""?HMMM -: . |MMMMMMMMMMMo\. {MMM -. {MMMMMMMMMMMMMMMHo. `MMM -- ?MMMMMMMMMMMMMMM*' -MMP -: `#MMMMMMMMMMMMT dMM' - - |MMMMMMMMMMH' -MMT - : `MMMMMMMM"' JMP - - MMMMMMH' ,H? - '. HMMM#' : - . ?MM- . ' - -. *M:.. .- - - . _. .- - '-.~-dHb__\ov+~~-` -[H .oo>#&H6?*MMH:-.._ - .oHMMMR:"&MZ\ `"' " |$-_ - ..dMMMMMMMMdMMM#9\ `'HHo. - . ,dMMMMMMMMMMM"`' ` ?MP?. - . |MMMMMMMMMMM' `"$b&\ - - |MMMMHH##M' HMMH? - - TTMM| >.. \MMMMMH - : |MM\,#-""$~b\. `MMMMMM+ -. ``"H&# - &MMMMMM| -: *\v,#MHddc. `9MMMMMb -. MMMMMMMM##\ `"":HM -- . .HMMMMMMMMMMRo_. |M -: |MMMMMMMMMMMMMMMM#\ :M -- `HMMMMMMMMMMMMMMM' |T -: `*HMMMMMMMMMMMM' H' - : MMMMMMMMMMM| |T - . MMMMMMMM?' ./ - `. MMMMMMH' ./ - -. |MMMH#' . - . `MM* . ' - -. #M: . . .- - ` . ., .- - '-.-~ooHH__,,v~--` -[H _ood>H&H&Z?#M#b-\. - .\HMMMMMR?`\M6b."`' ''``v. - .. .MMMMMMMMMMHMMM#&. ``~o. - . ,HMMMMMMMMMMMM*"'-` &b. - . .MMMMMMMMMMMMH' `"&\ - - RMMMMM#H##R' 4Mb - - |7MMM' ?:: `|MMb - / HMM__#|`"\>?v.. `MMML -. `"'#Hd| ` 9MMM: -- |\,\?HH#bbL `9MMb -: !MMMMMMMH#b, `""T -. . ,MMMMMMMMMMMbo. | -: 4MMMMMMMMMMMMMMMHo | -: ?MMMMMMMMMMMMMMM? : --. `#MMMMMMMMMMMM: .- - : |MMMMMMMMMM? . - - JMMMMMMMT' : - `. MMMMMMH' - - -. |MMM#*` - - . HMH' . ' - -. #H:. .- - ` . .\ .- - '-..-+oodHL_,--/-` -[H _,\?dZkMHF&$*q#b.. - .//9MMMMMMM?:'HM\\"`-''`.. - ..` :MMMMMMMMMMHMMMMH?_ `-\ - . .dMMMMMMMMMMMMMM'"'" `\. - . |MMMMMMMMMMMMMR \\ - - T9MMMMMHH##M" `? - : (9MMM' !':. &k - .: HMM\_?p "":-b\. `ML -- "'"H&#, : |M| -: ?\,\dMH#b#. 9b -: |MMMMMMM##, `* -: . +MMMMMMMMMMMo_ - -: HMMMMMMMMMMMMMM#, : -: 9MMMMMMMMMMMMMH' . -: . *HMMMMMMMMMMP .' - : MMMMMMMMMH' . - - :MMMMMMM'` . - `. 9MMMMM*' - - -. {MMM#' : - - |MM" .' - `. &M'.. . ..' - ' . ._ .- - '-. -voboo#&:,-.-` -[H _oo:\bk99M[<$$+b\. - .$*"MMMMMMMM[:"\Mb\?^" . - . '` HMMMMMMMMMMHMMMM+?. `. - . .HMMMMMMMMMMMMMMP"'' . - . `MMMMMMMMMMMMMM| -`. - - `&MMMMMMHH##H: : - : `(*MMM} `|\ | - : `- ?MMb__#|""`|+v.. \ -. `''*H#b - :| -: `*\v,#M#b#, \ -. 9MMMMMMHb. : -: . #MMMMMMMMMb\ - -- .HMMMMMMMMMMMMb : -: `MMMMMMMMMMMMH . --: . `#MMMMMMMMMP ' - : ]MMMMMMMH' : - - ,MMMMMM?' . - `: HMMMMH" - - -. .HMM#* .- - `. .HH*' . - `-. &R". .- - -. ._ .- - '-. .voodoodc?..-` -[H _\oo\?ddk9MRbS>v\_ - ..:>*""MMMMMMMMM:?|H?$?-. - ..- - "HMMMMMMMMMMHMMMH\_-. - . dMMMMMMMMMMMMMMT" . - . TMMMMMMMMMMMMMM `. - - `&HMMMMMM#H#H: . - - `\7HMMH |\. . - : ` HMM\_?c`""+?\.. : -- "``#&#| . - -: `?,\#MHdb. . -: |MMMMMH#. : -: . ,HMMMMMMMb, - -: ' 4MMMMMMMMMMH` -: . 9MMMMMMMMMT- -:.` `#MMMMMMMH ' - : ' HMMMMMH': - - |MMMMH" - - `: |MMMH*' .' - '? dMM#' . - \. .dH" .' - -. ,M'- ..' - ` . .. ..-` - '-. .\ooooboo<^.-` -[H _o,:o?\?dM&MHcc~,. - ..^':&#""HMMMMMMMM$:?&&?. - .` -` 'HMMMMMMMMMHMMMp\. - . ' |MMMMMMMMMMMMMM"' . - . `9MMMMMMMMMMMMM -. - - `*9MMMMMHH##[ . - - `\Z9MMM `~\ . - : '| ?MMb_?p""-?v.. : -- `"'*&#, - . -: `?,oHH#? . --- |MMMMH,: -: . |MMMMMM6, -: - |MMMMMMMM -? HMMMMMMP --- . ' |HMMMMM' - :.` . ' JMMMM+ - \ ,MMMP: - : |MMH?: - -:\. dM#" . - \ ,H*' .' - -. d':..' - ` . .,.- - '-.. .\oooodov~^-` -[H _o\:,??\??MR9#cb\_ - .v/''':&#""#HMMMMMMM$?*d\. - ..~' - -` `"#MMMMMMMMMMMHv. - .-' HMMMMMMMMMMMR!. - : `9MMMMMMMMMMM| -. - . `*9MMMMMH##| . - - `(#MMH `:, . - : '| `HMb_>/"|\,.: -.' `"'#&b - . -: ?\oHH?. -: !MMM& -: . . HMMMM -/. - -MMMMM -\`. 9MMMP -:. . . - |MMM' - \... ' .MMT - &. .dMP - \, .HM* - \. `\. ,H&' - `- `| - ,&': - `. ,/\ ' - '-.. _.- - "---.._\o,oov+--'" -[H _,d?,:?o?:?HM>#b\_ - ..H*"''`'H#*"**MMMMMM6$$v_ - v//" - `` `'#MMMMMMMMHo. - /"` |MMMMMMMMMM:. - ,> `HMMMMMMMMH:. - : `#HMMMMHH\ - - ' `Z#MM, `,: - : '\ ?HH_>:`\, -: "'*&| `: -. <\Hb -: MM -: . iMM -Mb\. {MM -::.`- - !MP -`&. . . - :M' - 9H, \ ' |T - HM? ,P - *ML ?? - :&. `o .d' - ': |T /" - -. .<'' - `... ..- - "`-=.,_,,,oov-~.-` -[H _,oc>?_:b?o?HH#b\_ - .v/99*""" '*H#""*HMMMMMZ,_ - oH* /" - ' "`#MMMMM#o. - ./*>- `MMMMMMMb - ,b/' `#MMMMMMM\ - :' ``HMMMMb: - /- `|&MH `\ - / `-. |Hb??\ -,- ' "`&,. -1 \} -!. T -$,. . 1 -?`M??. M -?.::| '\ - ? - M?&. . . - ,' - 9MMH\ .. ' ` . - HMMM#. :' - 9#MMb .. - -:"# `b. .- - . ` {! / - - ,-' - ' . .- - ```^==\_.,,,ov--\-` -[H _\o##??,:io??$#b\_ - .oH#"H9*""" "`#H*"*#MMMHo_ - oHMM- -' - '' ``*HMMHo. - dM#S>-` ?MMMM?. - ,&&,/' "#MMMH\ - d?-" `*HMMb - H? "ZHb: - /: \ H?L -|:| . `*: -:?: \ ->" : -M|\,_ | -!|":HH?-'. : -:^'_:?"\ `-- - . -- |ML?b . .. - - - :HMMMMH\ \ ` : - >MMMMMM#. . - ^M*HMMM| - - `. `"#+ `?v .` - . `- +?' - - ` . ..' - - . .- - "`\b=p?.._\\vv---` -[H _,o#bH\??::?o?cbo_ - .o#MH#**SH""' "`*H#"*#MHo_ - oHMMMH^ ^" - ` '*HHo. - .dMMM#">>- `HM?. - ,MH:R_o/ `*MH\ - dMM' ' "ML - HMR! ' `#k - d&'. -. `L -:M :: ` `- -/| !| - -k.$-" : -}9R:!,,_. . -\::\':`*M#\-'. - -: "''..:"!`\ '- - ` -- ,HMb.H| . _ - .' - : ,MMMMMMMb. .. . - .`HMMMMMMMM? . - `.`9M#*HMMMM : - -.' "##* `b, . - . ` ,/' .' - ` . ..' - - . ..- - "`*#d##c.._\v----` -[H _,o#&oHb?\o::d?>\_ - .oHHMMM#**$M""` "`*HH"#&o_ - oHMMMMMMD' .'' - ' ``bo. - .dMMMMMH*'/|- `\b. - ,MMMM?T|_o/ `\\ - dMMMMP '' `| - HMMMH& - `\ - /MH7' : -- : --:MM {. . . -:i?' .!& . -:{, o| ' : --T?9M\:-'o,_ . -: \?::``"`?9MHo./.. - -. '"`'^ _.`"!"^. `- - ` -- ,bMM?.M\ . . - . .' - : .oMMMMMMMMb. .. ` . - . `HMMMMMMMMMMb - - - 9MH*#HMMMMH .' - '. ' `"*##' `b. : - . ` .d'' .' - -. . ' - -. .-` - "`*##H###:._\--.-` -[H _oo#H&d#b?\b:_>>\_ - .oHMMMMMMH*"*9R"'-``*#P\-_ - oHMMMMMMMMM$ ." ' `^- - .dMMMMMMMMH*",?- '\. - ,MMMMMMM:?}.,d' `. - dMMMMMMMH /'' : - HMMMMMMM&' - - - dPTMMP>' : -. : -|? -MM} .\ . -J' ::*' -$L . -: ?b .,H- ' : -- |6.&MP:: !.,_. - -: `\:: "' "`:"MM#,-^, - : -- ````:' _.:"?``\ `- . -: .?bMML.]# - _ ` . .' - - .o#MMMMMMMMH\ \. . . - - `HMMMMMMMMMMMH : - `. `HMM#*#MMMMMH' - - -. ' ``##*' i+ : - - `' v/' .' - `- ..' - ' . .- - "`*##HMH##:__,-.-` -[H _oo##Mbb&bo??o_>\_ - .oHMMMMMMMMM**#?M*' "?*&.. - oHMMMMMMMMMMMM4 `" - `. - .dMMMMMMMMMMMM#"\?.- . - ,MMMMMMMMMM}"9:_,d' -. - dMMMMMMMMMMM| ^'' . - &MMMMMMMMMMH\ - . - :{M*"MMMPT"' : `-. : -.'M' 'MMM. -T, . . -- k i:?'' -|& . -: ` -o& .,H- " : -- `M:`HMP|:'!.o._. . -: "<:::'<^ '"``9MH#,-^ . - -- '''``''._.`"?`^| ^ - : -: ?#dMM_.M? . . - ..' - : ,ddMMMMMMMMMb. .. ' . - . TMMMMMMMMMMMMM, : - - ?MMH**#MMMMMH' : - '. ' "`##*' &. : - -. `' ,~" .' - -. ..' - ` . .- - ```*##HMMMH#<:,..-` -[H _,dd#HMb&dHo?\?:\_ - .oHMMMMMMMMMMMH***9P'`"\v. - oHMMMMMMMMMMMMMMM> `' -. - .dMMMMMMMMMMMMMMMH*'|~-' . - ,MMMMMMMMMMMMM6>`H._,& -. - dMMMMMMMMMMMMMMM| `" . - H*MMMMMMMMMMMMMH&. - . - d' HMM""&MMMPT'' :. `.- -,' MP `TMMM, |: . - -| #: ? *" : &L : -! `' /?H ,#r `' : -. ?M: HMM^<~->,o._ : -: `9:::'`*-``':`9MHb,|-, ' : -. `"''':' :_ ""!"^. `| : -`. _dbHM6_|H. . . ' .' - \ _odHMMMMMMMMH, .. ` : - `- |MMMMMMMMMMMMM| : - `. 9MMH**#MMMMMH' : - -. ' "?##" d : - . ' ,/" .' - `.. ..' - ` . .- - '`"#HHMMMMM#<>..-` -[H _oo##bHMb&d#bd,>\_ - .oHMMMMMMMMMMMMMM***9R"-.. - oHMMMMMMMMMMMMMMMMMH\ ? `-. - .dMMMMMMMMMMMMMMMMMMM#".}-' . - ,MMMMMMMMMMMMMMMMM6/`H _o} -. - dMMMMMMMMMMMMMMMMMMML `'' . - HbP*HMMMMMMMMMMMMMMM*: - , - dMH' `MMMP'"HMMMR'T" : : -|H' -MR' `?MMMb P, . . -1& *| |.`*" .-`&| . -M' " |\&| .,#~ "' : -T :HL.|HMH\c~`|v,\_ : -| `"|:::':`-`` '"MM#\-'. -: -% ``'``'`' :_ '?'`| ``. : -||, ,#dMM?.M? . .` - - ?\ .,odMMMMMMMMM? \ ` : - / |MMMMMMMMMMMMM: .' - `. TMMH#*9MMMMM* : - -. ` "*#*' ,: . - . ` .v'' .' - `. ..' - '- . .- - "`\+HHMMMMMMHr~.-` -[H _,,>#b&HMHd&&bb>\_ - _oHMMMMMMMMMMMMMMMMH**H:. - oHMMMMMMMMMMMMMMMMMMMM#v`? `. - .dMMMMMMMMMMMMMMMMMMMMMMH*`+| . - ,MMMMMMMMMMMMMMMMMMMMMb|?+.,H -. - ddHMMMMMMMMMMMMMMMMMMMMMb `' . - HMMkZ**HMMMMMMMMMMMMMMMMH\ - . : - dTMMM* `9MMMP'"*MMMMPT"` .. : -|M6H'' 4MP' `"HMMM| !|. . . -1MHp' #L $ *"' .-:&. . -MMM' " q:H. .o#-``' : -MM' ?H?.|MMH::::-o,_. - -M[ `*?:::'|` `"`:9MH\~-. ` -&M. ""'`'^'.:.`?'`. '| -: -`M|d, .dbHM[.1? .. : - 9||| . _obMMMMMMMMH, . : - H.^ MMMMMMMMMMMM} - - \ |MMH#*HMMMMH' .' - . ` `#*' ,:- - ` '' .-'. - `. .- - '- . .-` - '`\bqHMMMMMMHHb--` -[H .,:,#&6dHHHb&##o\_ - .oHHMMMMMMMMMMMMMMMMMH*\,. - oHMMMMMMMMMMMMMMMMMMMMMMHb:'-. - .dMMMMMMMMMMMMMMMMMMMMMMMMMH|\/' . - ,&HMMMMMMMMMMMMMMMMMMMMMMM/"&.,d. -. - dboMMHMMMMMMMMMMMMMMMMMMMMMML `' . - HMHMMM$Z***MMMMMMMMMMMMMMMMMM|.- . - dMM}MMMM#' `9MMMH?"`MMMMR'T' _ : -|MMMbM#'' |MM" ``MMMH. <_ . -dMMMM#& *&. .?`*" .'&: . -MMMMMH- `' -v/H .dD "' ' : -MMMM* `*M: 4MM*::-!v,_ : -MMMM `*?::" "'``"?9Mb::. : -&MMM, `"'"'|"._ "?`| - : -`MMM}.H ,#dM[_H ..: - 9MMi`M: . .ooHMMMMMMM, .. - 9Mb `- 1MMMMMMMMMM| : - ?M |MM#*#MMMM* . - -. ` |#"' ,' - . -" v` - -. .- - - . . ` - '-*#d#HHMMMMHH#"-' -[H _,<_:&S6dHHHb&bb\_ - .odHMMMMMMMMMMMMMMMMMMM}-_ - .oHMMMMMMMMMMMMMMMMMMMMMMMM#d:. - ?9MMMMMMMMMMMMMMMMMMMMMMMMMMMH-$ . - ,::dHMMMMMMMMMMMMMMMMMMMMMMMMH:\.?? -. - dMdboHMMHMMMMMMMMMMMMMMMMMMMMMMH, ' . - HMMMM7MMMb$R***MMMMMMMMMMMMMMMMMH\ - . - dMMMMM/MMMMM* `$MMMM*'"*MMMM?&' . : -|MMMMMMb1H*' HMP' '9MMM| &. . . -dMMMMMMM##~` `#\ |.`*" .-9. : -9MMMMMMMM* ` |v7? .,H `' ` : -SMMMMMMH' '9M_-MMH::-\v_ : -:HMMMMM `\_:"'|'`':9Mv\. --|MMMMM, ""`'`':.`?\ \ -`:MMMMM}.d} .?bM6,| | - :?MMM6 M| . .,oHMMMMM| / - .?MMM- `' &MMMMMMMM|. - -`HM- HMH#*MMM?: - '. ' `#*:` - - -'/ - ` . . ' - ` . . ` - '--##HH#HMMMHH#""` -[H _o,d_?dZdoHHHb#b\_ - .vdMMMMMMMMMMMMMMMMMMMMH\. - .,HHMMMMMMMMMMMMMMMMMMMMMMMMH&,. - /?RMMMMMMMMMMMMMMMMMMMMMMMMMMMMH|.. - ,\?>`T#RMMMMMMMMMMMMMMMMMMMMMMMM6`\|/ - dMMbd#ooHMMMHMMMMMMMMMMMMMMMMMMMMMH,`' ' - HMMMMMMMTMMMMb$ZP**HMMMMMMMMMMMMMMMM|. : - dMMMMMMMM}$MMMMMH' `HMMMH?"`MMMM?T' . : -|MMMMMMMMMMoMH*'' `MM? ``MMM| +\ . -1MMMMMMMMMMMb#/ ?#? |`#" -T: : -*'HMMMMMMMMMM*' " ~?& .?} ' ' . -- 4MMMMMMMMP" `M? HMTc:\\.: -: `MMMMMMM[ "#:::`>`"?M{ -. |MMMMMMH. ``'``'_`:- -- |MMMMMMM|.dD ,#Mb\' - : *MMMMM: iM| . _oHMMMM: - . ?MMMM' "' ,MMMMMMP - : `HMH JM#*MMT - -. ' ` #' - . / - -. - .' - -. . ` - '--=&&MH##HMHH#""" -[H .-:?,Z?:&$dHH##b\_ - ,:bqRMMMMMMMMMMMMMMMMMHo. - .?HHHMMMMMMMMMMMMMMMMMMMMMMMHo. - -o/*M9MMMMMMMMMMMMMMMMMMMMMMMMMMMv - .:H\b\'|?#HHMMMMMMMMMMMMMMMMMMMMMM6?Z\ - .?MMMHbdbbodMMMMHMMMMMMMMMMMMMMMMMMMM\': - :MMMMMMMMMMM7MMMMb?6P**#MMMMMMMMMMMMMMM_ : - \MMMMMMMMMMMMb^MMMMMM? `*MMMM*"`MMMR<' . - -.1MMMMMMMMMMMMMb]M#"" 9MR' `?MMb \. : --MMMMMMMMMMMMMMMH##|` *&. |`*' .\ . --?""*MMMMMMMMMMMMM' ' |?b ,}" : -: MMMMMMMMMMH' `M_|M}r\? -. `MMMMMMMMM' `$_:`'"H -- TMMMMMMMM, '"``:: -: {MMMMMMMM| oH| .#M- - : `9MMMMMM' .MP . ,oMMT - . HMMMMP' `' ,MMMP - - `MMH' HH9* - '. ` ` .' - - . ' - ` . - .- - ` . .- - ' -==pHMMH##HH#""" -[H _..-:b&::&?&&##bo_ - ...?-#&9MMMMMMMMMMMMMMMHo_ - .. .1&#MMHMMMMMMMMMMMMMMMMMMMHo. - . .o/##R9MMMMMMMMMMMMMMMMMMMMMMMM?. - .- |MSd?|'`$?#HMMMMMMMMMMMMMMMMMMMMMH\ - - dMMMMHbd##oodMMMM#MMMMMMMMMMMMMMMMMH: - - JMMMMMMMMMMMMM7HMMMH$SR***MMMMMMMMMMMMb> - : {MMMMMMMMMMMMMMM`9MMMMMH' ``HMMM?"*MM[| : -- |MMMMMMMMMMMMMMMMM<MH*'' `MM' 'HM? |. -: `MMMMMMMMMMMMMMMMMM##H-' `#, ` |`? /| -. ?"""?HMMMMMMMMMMMMMH' " v& .}? -- |MMMMMMMMMMMP' `H:&H& -i `9MMMMMMMMMT `|?"? -: MMMMMMMMMH "`\ -: MMMMMMMMMH-.dH ,| - : ?MMMMMMM? {M' . .dT - . ?MMMMMR' `' ,MP - - `HMM#' .&* - '. ' `. - - . ' - `.. .- - -. .- - '-.==p##HMMHp&#""" -[H _v---:?&?:?&?&#b\_ - ..' i: #M$MMMMMMMMMMMMMHo_ - .. -]M#HMHMMMMMMMMMMMMMMMMMHo. - . ooP*&6&MMMMMMMMMMMMMMMMMMMMM?. - . - &Rbbd-/`?:##HMMMMMMMMMMMMMMMMMH? - - ,HMMMMM#od#boodMMMMHMMMMMMMMMMMMMMb - - iMMMMMMMMMMMMMMM[*MMMH&$R***MMMMMMMMMb - : |MMMMMMMMMMMMMMMMML"MMMMMM' ``MMMP"HMM: -. HMMMMMMMMMMMMMMMMMMb/MH"" `MR *M,| -: TMMMMMMMMMMMMMMMMMMMMd#&` `D. ?|\ -. `*"'"*HMMMMMMMMMMMMMMP' ' -d,J -: |MMMMMMMMMMMMP' ||M -M, ?MMMMMMMMMM| `\? -&| HMMMMMMMMM} `` -`L .MMMMMMMMMMP ,d| : - *. ?MMMMMMMF' .MP / - | TMMMMMM' `"' / - `. `MMMP' ./ - -. ` . - . . ' - - . .- - -\ ..- - '-..=p####HMH&=""" -[H _vo~^'':&b::d,#b\_ - ..`" `:v +9P]MMMMMMMMMMHo_ - ,- ?Mb#MMMMMMMMMMMMMMMMMHo. - . " ,ooM*&&&HMMMMMMMMMMMMMMMMHb. - . - 99Soo?|'`*?##HMMMMMMMMMMMMMH\ - - .HMMMMMM#od#boodMMMMHMMMMMMMMMMb - - :MMMMMMMMMMMMMMMM67HMMH&$R**HMMMMMb - : .MMMMMMMMMMMMMMMMMMM/HMMMMM| `9MM'HL -: {MMMMMMMMMMMMMMMMMMMM\MM*'' `H[ `9| -| `HMMMMMMMMMMMMMMMMMMMMb##| `F. :? -H `"*"'"`#MMMMMMMMMMMMMMM? ' k -M. MMMMMMMMMMMMM"' H -MMH. `HMMMMMMMMMM: | -&MM| `MMMMMMMMMM, - -`MM| dMMMMMMMMMM|.oH : - 9ML `HMMMMMMM? dH' - - Hi |MMMMMMP "' .' - T. `MMM#' - - `. ` .` - ` - - `.. . ..' - ... .- - '-. //######M#b~"" -[H _ooq=""''$b$_&?b\_ - .-`^" "'o |&M:MMMMMMMMHo_ - o/' -$Mb#MMMMMMMMMMMMMMHo. - /' .ooHP*&R&MMMMMMMMMMMMMM?. - .' `MRbod?|'`+?##9MMMMMMMMMH\ - .` .,MMMMMMH#od##obdMMMMHMMMMMMb - - ?MMMMMMMMMMMMMMMMM$HMMH$ZP*HMMb - ? |MMMMMMMMMMMMMMMMMMM|9MMMMP "M6\ -.- dMMMMMMMMMMMMMMMMMMMMb]M*' |R | -1| `HMMMMMMMMMMMMMMMMMMMMMd#| ?,: -MH, ``*""'"*#MMMMMMMMMMMMMM* '` -MM6_ |MMMMMMMMMMMMH" : -MMMMMb. "MMMMMMMMMMT - -&MMMMM' |MMMMMMMMMH ` -!MMMMb .HMMMMMMMMM+.?& : - TMMMM *MMMMMMMP dH' . : - 9MM' `MMMMMMP' "' . - 9ML `MMM#' - - `H ` : - `\. .' - `-\ . .- - ' ._ .-` - '-\. ,b#####p&**^` diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/interact.py b/lldb/third_party/Python/module/pexpect-4.6/tests/interact.py deleted file mode 100755 index a839e9502f9..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/interact.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -try: - # This allows coverage to measure code run in this process - import coverage - coverage.process_startup() -except ImportError: - pass - -from utils import no_coverage_env -import pexpect -import sys - - -def main(): - p = pexpect.spawn('{sys.executable} getch.py'.format(sys=sys), - env=no_coverage_env()) - - # defaults matches api - escape_character = chr(29) - encoding = None - - if len(sys.argv) > 1 and '--no-escape' in sys.argv: - escape_character = None - - if len(sys.argv) > 1 and '--utf8' in sys.argv: - encoding = 'utf8' - - p.interact(escape_character=escape_character) - - print("Escaped interact") - -if __name__ == '__main__': - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/list100.py b/lldb/third_party/Python/module/pexpect-4.6/tests/list100.py deleted file mode 100644 index 3b2b6ec3581..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/list100.py +++ /dev/null @@ -1,2 +0,0 @@ -# -*- coding: utf-8 -*- -print(list(range(100))) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/needs_kill.py b/lldb/third_party/Python/module/pexpect-4.6/tests/needs_kill.py deleted file mode 100755 index 810236bdad6..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/needs_kill.py +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env python -"""This script can only be killed by SIGKILL.""" -import signal, time - -# Ignore interrupt, hangup and continue signals - only SIGKILL will work -signal.signal(signal.SIGINT, signal.SIG_IGN) -signal.signal(signal.SIGHUP, signal.SIG_IGN) -signal.signal(signal.SIGCONT, signal.SIG_IGN) - -print('READY') -while True: - time.sleep(10) -
\ No newline at end of file diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/pexpectTest.py b/lldb/third_party/Python/module/pexpect-4.6/tests/pexpectTest.py deleted file mode 100755 index 6839a2f7053..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/pexpectTest.py +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -import time -import pexpect -import sys - -def getProcessResults(cmd, timeLimit=20): - ''' - executes 'cmd' as a child process and returns the child's output, - the duration of execution, and the process exit status. Aborts if - child process does not generate output for 'timeLimit' seconds. - ''' - output = "" - startTime = time.time() - child = pexpect.spawn(cmd, timeout=10) - child.logfile = sys.stdout - - while 1: - try: - # read_nonblocking will add to 'outout' one byte at a time - # newlines can show up as '\r\n' so we kill any '\r's which - # will mess up the formatting for the viewer - output += child.read_nonblocking(timeout=timeLimit).replace("\r","") - except pexpect.EOF as e: - print(str(e)) - # process terminated normally - break - except pexpect.TIMEOUT as e: - print(str(e)) - output += "\nProcess aborted by FlashTest after %s seconds.\n" % timeLimit - print(child.isalive()) - child.kill(9) - break - - endTime = time.time() - child.close(force=True) - - duration = endTime - startTime - exitStatus = child.exitstatus - - return (output, duration, exitStatus) - -cmd = "./ticker.py" - -result, duration, exitStatus = getProcessResults(cmd) - -print("result: %s" % result) -print("duration: %s" % duration) -print("exit-status: %s" % exitStatus) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/CSIGNALTEST/test.c b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/CSIGNALTEST/test.c deleted file mode 100644 index 86bcc17fab5..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/CSIGNALTEST/test.c +++ /dev/null @@ -1,90 +0,0 @@ -/* I built this with "gcc -lutil test.c -otest" */ -#include <sys/types.h> /* include this before any other sys headers */ -#include <sys/wait.h> /* header for waitpid() and various macros */ -#include <signal.h> /* header for signal functions */ -#include <stdio.h> /* header for fprintf() */ -#include <unistd.h> /* header for fork() */ -#ifdef LINUX -#include <pty.h> -#else -#include <util.h> /* header for forkpty, compile with -lutil */ -#endif - -void sig_chld(int); /* prototype for our SIGCHLD handler */ - -int main() -{ - struct sigaction act; - int pid; - int fdm; - char slave_name [20]; - - - /* Assign sig_chld as our SIGCHLD handler. - We don't want to block any other signals in this example - We're only interested in children that have terminated, not ones - which have been stopped (eg user pressing control-Z at terminal). - Finally, make these values effective. If we were writing a real - application, we would save the old value instead of passing NULL. - */ - act.sa_handler = sig_chld; - sigemptyset(&act.sa_mask); - act.sa_flags = SA_NOCLDSTOP; - if (sigaction(SIGCHLD, &act, NULL) < 0) - { - fprintf(stderr, "sigaction failed\n"); - return 1; - } - - /* Do the Fork thing. - */ - pid = forkpty (&fdm, slave_name, NULL, NULL); - /* pid = fork(); */ - - switch (pid) - { - case -1: - fprintf(stderr, "fork failed\n"); - return 1; - break; - - case 0: /* Child process. */ - printf ("This child output will cause trouble.\n"); - _exit(7); - break; - - default: /* Parent process. */ - sleep(1); - printf ("Child pid: %d\n", pid); - sleep(10); /* let child finish -- crappy way to avoid race. */ - break; - } - - return 0; -} - -void sig_chld(int signo) -{ - int status, wpid, child_val; - - printf ("In sig_chld signal handler.\n"); - - /* Wait for any child without blocking */ - wpid = waitpid (-1, & status, WNOHANG); - printf ("\tWaitpid found status for pid: %d\n", wpid); - if (wpid < 0) - { - fprintf(stderr, "\twaitpid failed\n"); - return; - } - printf("\tWaitpid status: %d\n", status); - - if (WIFEXITED(status)) /* did child exit normally? */ - { - child_val = WEXITSTATUS(status); - printf("\tchild exited normally with status %d\n", child_val); - } - printf ("End of sig_chld.\n"); -} - - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/README b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/README deleted file mode 100644 index d50f94cd620..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/README +++ /dev/null @@ -1,2 +0,0 @@ -These scripts are for checking how the underlying system behaves, not for -testing Pexpect itself.
\ No newline at end of file diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check.py b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check.py deleted file mode 100755 index b41755a9635..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env python -import signal -import os -import time -import pty - -def signal_handler (signum, frame): - print 'Signal handler called with signal:', signum - print 'signal.SIGCHLD=', signal.SIGKILL - -# First thing we do is set up a handler for SIGCHLD. -signal.signal (signal.SIGCHLD, signal.SIG_IGN) - -print 'PART 1 -- Test signal handling with empty pipe.' -# Create a child process for us to kill. -try: - pid, fd = pty.fork() -except Exception as e: - print str(e) - -if pid == 0: -# os.write (sys.stdout.fileno(), 'This is a test.\n This is a test.') - time.sleep(10000) - -print 'Sending SIGKILL to child pid:', pid -os.kill (pid, signal.SIGKILL) - -# SIGCHLD should interrupt sleep. -# Note that this is a race. -# It is possible that the signal handler will get called -# before we try to sleep, but this has not happened yet. -# But in that case we can only tell by order of printed output. -print 'Entering sleep...' -try: - time.sleep(10) -except: - print 'sleep was interrupted by signal.' - -# Just for fun let's see if the process is alive. -try: - os.kill(pid, 0) - print 'Child is alive. This is ambiguous because it may be a Zombie.' -except OSError as e: - print 'Child appears to be dead.' - -print 'PART 2 -- Test signal handling with full pipe.' -# Create a child process for us to kill. -try: - pid, fd = pty.fork() -except Exception as e: - print str(e) - -if pid == 0: - os.write (sys.stdout.fileno(), 'This is a test.\n This is a test.') - time.sleep(10000) - -print 'Sending SIGKILL to child pid:', pid -os.kill (pid, signal.SIGKILL) - -# SIGCHLD should interrupt sleep. -# Note that this is a race. -# It is possible that the signal handler will get called -# before we try to sleep, but this has not happened yet. -# But in that case we can only tell by order of printed output. -print 'Entering sleep...' -try: - time.sleep(10) -except: - print 'sleep was interrupted by signal.' - -# Just for fun let's see if the process is alive. -try: - os.kill(pid, 0) - print 'Child is alive. This is ambiguous because it may be a Zombie.' -except OSError as e: - print 'Child appears to be dead.' - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check2.py b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check2.py deleted file mode 100755 index 0a7d5f89ca8..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check2.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python -import signal -import os -import time - -def signal_handler (signum, frame): - print 'Signal handler called with signal:', signum - print 'signal.SIGCHLD=', signal.SIGKILL - -# Create a child process for us to kill. -pid = os.fork() -if pid == 0: - time.sleep(10000) - -#signal.signal (signal.SIGCHLD, signal.SIG_IGN) -signal.signal (signal.SIGCHLD, signal_handler) - -print 'Sending SIGKILL to child pid:', pid -os.kill (pid, signal.SIGKILL) - -# SIGCHLD should interrupt sleep. -# Note that this is a race. -# It is possible that the signal handler will get called -# before we try to sleep, but this has not happened yet. -# But in that case we can only tell by order of printed output. -interrupted = 0 -try: - time.sleep(10) -except: - print 'sleep was interrupted by signal.' - interrupted = 1 - -if not interrupted: - print 'ERROR. Signal did not interrupt sleep.' -else: - print 'Signal interrupted sleep. This is good.' - -# Let's see if the process is alive. -try: - os.kill(pid, 0) - print 'Child is alive. This is ambiguous because it may be a Zombie.' -except OSError as e: - print 'Child appears to be dead.' - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_control_terminal.py b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_control_terminal.py deleted file mode 100755 index 9598fd7ca6b..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_control_terminal.py +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env python - -import termios, fcntl, struct, os, sys - -def getwinsize(): - s = struct.pack("HHHH", 0, 0, 0, 0) - x = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, s) - rows, cols = struct.unpack("HHHH", x)[:2] - return rows, cols - -def setwinsize(r,c): - # Assume ws_xpixel and ws_ypixel are zero. - s = struct.pack("HHHH", r,c,0,0) - x = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCSWINSZ, s) -print 'stdin tty:', os.ttyname(0) -print 'stdout tty:', os.ttyname(1) -print 'controlling terminal:', os.ctermid() -print 'winsize %d,%d' % getwinsize() -print 'ENDTEST' diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_handler.py b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_handler.py deleted file mode 100755 index c0633eb80e0..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_handler.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python -import signal -import os -import time -import pty -import sys -import fcntl -import tty -GLOBAL_SIGCHLD_RECEIVED = 0 - -def nonblock (fd): - # if O_NDELAY is set read() returns 0 (ambiguous with EOF). - # if O_NONBLOCK is set read() returns -1 and sets errno to EAGAIN - original_flags = fcntl.fcntl (fd, fcntl.F_GETFL, 0) - flags = original_flags | os.O_NONBLOCK - fcntl.fcntl(fd, fcntl.F_SETFL, flags) - return original_flags - -def signal_handler (signum, frame): - print '<HANDLER>' - global GLOBAL_SIGCHLD_RECEIVED - status = os.waitpid (-1, os.WNOHANG) - if status[0] == 0: - print 'No process for waitpid:', status - else: - print 'Status:', status - print 'WIFEXITED(status):', os.WIFEXITED(status[1]) - print 'WEXITSTATUS(status):', os.WEXITSTATUS(status[1]) - GLOBAL_SIGCHLD_RECEIVED = 1 - -def main (): - signal.signal (signal.SIGCHLD, signal_handler) - pid, fd = pty.fork() - if pid == 0: - os.write (sys.stdout.fileno(), 'This is a test.\nThis is a test.') - time.sleep(10000) - nonblock (fd) - tty.setraw(fd) #STDIN_FILENO) - print 'Sending SIGKILL to child pid:', pid - time.sleep(2) - os.kill (pid, signal.SIGKILL) - - print 'Entering to sleep...' - try: - time.sleep(2) - except: - print 'Sleep interrupted' - try: - os.kill(pid, 0) - print '\tChild is alive. This is ambiguous because it may be a Zombie.' - except OSError as e: - print '\tChild appears to be dead.' -# print str(e) - print - print 'Reading from master fd:', os.read (fd, 1000) - - - -if __name__ == '__main__': - main () diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_read.py b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_read.py deleted file mode 100755 index 9598aa765eb..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_read.py +++ /dev/null @@ -1,35 +0,0 @@ -import os - -filename = os.tmpnam() -print 'filename:', filename - -fd_out = os.open(filename, os.O_CREAT | os.O_WRONLY) -print 'fd_out:', fd_out -os.write (fd_out, 'This is a test.\n') -os.close(fd_out) -print -print 'testing read on good fd...' -fd_in = os.open (filename, os.O_RDONLY) -print 'fd_in:', fd_in -while 1: - data_in = os.read(fd_in, 1) - print 'data_in:', data_in - if data_in == '': - print 'data_in was empty' - break #sys.exit(1) -os.close(fd_in) -print -print -print 'testing read on closed fd...' -fd_in = os.open ('test_read.py', os.O_RDONLY) -print 'fd_in:', fd_in -while 1: - data_in = os.read(fd_in, 1) - print 'data_in:', data_in - if data_in == '': - print 'data_in was empty' - break -os.close(fd_in) -d = os.read(fd_in, 1) # fd_in should be closed now... -if s == '': - print 'd is empty. good.' diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_signals.py b/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_signals.py deleted file mode 100755 index d45bc8a3bd4..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/platform_checks/check_signals.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python -import signal -import os -import time -import pty -import sys -GLOBAL_SIGCHLD_RECEIVED = 0 - -def signal_handler (signum, frame): - print '<HANDLER>' - global GLOBAL_SIGCHLD_RECEIVED - status = os.waitpid (-1, os.WNOHANG) - print 'WIFEXITED(status):', os.WIFEXITED(status) - print 'WEXITSTATUS(status):', os.WEXITSTATUS(status) - GLOBAL_SIGCHLD_RECEIVED = 1 - -def main (): -# sig_test ('SIG_IGN', 'ptyfork', 'yes') - sig_test ('handler', 'ptyfork', 'yes') -# sig_test ('SIG_IGN', 'ptyfork', 'no') -# sig_test ('handler', 'ptyfork', 'no') -# sig_test ('SIG_IGN', 'osfork', 'yes') -# sig_test ('handler', 'osfork', 'yes') -# sig_test ('SIG_IGN', 'osfork', 'no') -# sig_test ('handler', 'osfork', 'no') - -def sig_test (sig_handler_type, fork_type, child_output): - print 'Testing with:' - print '\tsig_handler_type:', sig_handler_type - print '\tfork_type:', fork_type - print '\tchild_output:', child_output - - if sig_handler_type == 'SIG_IGN': - signal.signal (signal.SIGCHLD, signal.SIG_IGN) - else: - signal.signal (signal.SIGCHLD, signal_handler) - pid = -1 - fd = -1 - if fork_type == 'ptyfork': - pid, fd = pty.fork() - else: - pid = os.fork() - - if pid == 0: - if child_output == 'yes': - os.write (sys.stdout.fileno(), 'This is a test.\nThis is a test.') - time.sleep(10000) - - #print 'Sending SIGKILL to child pid:', pid - time.sleep(2) - os.kill (pid, signal.SIGKILL) - - #print 'Entering to sleep...' - try: - time.sleep(2) - except: - pass - try: - os.kill(pid, 0) - print '\tChild is alive. This is ambiguous because it may be a Zombie.' - except OSError as e: - print '\tChild appears to be dead.' -# print str(e) - print - -if __name__ == '__main__': - main () diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/qa.py b/lldb/third_party/Python/module/pexpect-4.6/tests/qa.py deleted file mode 100755 index f50e3ed7726..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/qa.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import commands -import signal - -signal.signal(signal.SIGCHLD, signal.SIG_IGN) -print(commands.getoutput('/bin/ls -l')) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/sigwinch_report.py b/lldb/third_party/Python/module/pexpect-4.6/tests/sigwinch_report.py deleted file mode 100755 index f10956ab1c9..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/sigwinch_report.py +++ /dev/null @@ -1,50 +0,0 @@ -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import print_function - -import signal, time, struct, fcntl, termios, sys - -def getwinsize(): - '''This returns the window size of the child tty. - The return value is a tuple of (rows, cols). - ''' - if 'TIOCGWINSZ' in dir(termios): - TIOCGWINSZ = termios.TIOCGWINSZ - else: - TIOCGWINSZ = 1074295912 # Assume - s = struct.pack('HHHH', 0, 0, 0, 0) - x = fcntl.ioctl(sys.stdout.fileno(), TIOCGWINSZ, s) - return struct.unpack('HHHH', x)[0:2] - -def handler(signum, frame): - print('signal') - sys.stdout.flush() - print('SIGWINCH:', getwinsize ()) - sys.stdout.flush() - -print("Initial Size:", getwinsize()) -print("setting handler for SIGWINCH") -signal.signal(signal.SIGWINCH, handler) -print("READY") - -while 1: - sys.stdout.flush() - time.sleep(1) - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/sleep_for.py b/lldb/third_party/Python/module/pexpect-4.6/tests/sleep_for.py deleted file mode 100755 index 902710576be..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/sleep_for.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -from __future__ import print_function - -import time -import sys - -def main(): - """ - This script sleeps for the number of seconds (float) specified by the - command line argument. - """ - if len(sys.argv) < 2: - print("Usage: %s seconds_to_sleep" % (sys.argv[0],)) - sys.exit(1) - timeout = float(sys.argv[1]) - print("READY") - time.sleep(timeout) - print("END") - -if __name__ == '__main__': - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/swapcase_echo.py b/lldb/third_party/Python/module/pexpect-4.6/tests/swapcase_echo.py deleted file mode 100755 index aaac442dbaf..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/swapcase_echo.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import sys, time -while True: - x = raw_input () - time.sleep(1) # without this delay the test would fail about 75% of the time. Why? - print(x.swapcase()) - sys.stdout.flush() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_FSM.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_FSM.py deleted file mode 100644 index 3425fd2110e..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_FSM.py +++ /dev/null @@ -1,34 +0,0 @@ -import io -import sys -import unittest -try: - import builtins -except ImportError: - import __builtin__ as builtins - -PY3 = (sys.version_info[0] >= 3) -input_name = 'input' if PY3 else 'raw_input' - -from pexpect import FSM - -class FSMTestCase(unittest.TestCase): - def test_run_fsm(self): - def _input(prompt): - return "167 3 2 2 * * * 1 - =" - orig_input = getattr(builtins, input_name) - orig_stdout = sys.stdout - setattr(builtins, input_name, _input) - sys.stdout = sio = (io.StringIO if PY3 else io.BytesIO)() - - try: - FSM.main() - finally: - setattr(builtins, input_name, orig_input) - sys.stdout = orig_stdout - - printed = sio.getvalue() - assert '2003' in printed, printed - - -if __name__ == '__main__': - unittest.main()
\ No newline at end of file diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_ansi.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_ansi.py deleted file mode 100755 index a9d445ed7de..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_ansi.py +++ /dev/null @@ -1,228 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from pexpect import ANSI -import unittest -from . import PexpectTestCase -import sys - -PY3 = (sys.version_info[0] >= 3) - -write_target = 'I\'ve got a ferret sticking up my nose. \n' +\ -'(He\'s got a ferret sticking up his nose.) \n' +\ -'How it got there I can\'t tell \n' +\ -'But now it\'s there it hurts like hell \n' +\ -'And what is more it radically affects my sense of smell. \n' +\ -'(His sense of smell.) ' - -write_text = 'I\'ve got a ferret sticking up my nose.\n' + \ -'(He\'s got a ferret sticking up his nose.)\n' + \ -'How it got there I can\'t tell\n' + \ -'But now it\'s there it hurts like hell\n' + \ -'And what is more it radically affects my sense of smell.\n' + \ -'(His sense of smell.)\n' + \ -'I can see a bare-bottomed mandril.\n' + \ -'(Slyly eyeing his other nostril.)\n' + \ -'If it jumps inside there too I really don\'t know what to do\n' + \ -'I\'ll be the proud posessor of a kind of nasal zoo.\n' + \ -'(A nasal zoo.)\n' + \ -'I\'ve got a ferret sticking up my nose.\n' + \ -'(And what is worst of all it constantly explodes.)\n' + \ -'"Ferrets don\'t explode," you say\n' + \ -'But it happened nine times yesterday\n' + \ -'And I should know for each time I was standing in the way.\n' + \ -'I\'ve got a ferret sticking up my nose.\n' + \ -'(He\'s got a ferret sticking up his nose.)\n' + \ -'How it got there I can\'t tell\n' + \ -'But now it\'s there it hurts like hell\n' + \ -'And what is more it radically affects my sense of smell.\n' + \ -'(His sense of smell.)' - -tetris_target=' XX XXXX XX \n' +\ -' XXXXXX XXXXXXXX XX \n' +\ -' XXXXXX XXXXXXXX XX \n' +\ -' XX XX XX XXXX XX \n' +\ -' XXXXXX XXXX XXXX XX \n' +\ -' XXXXXXXXXX XXXX XX \n' +\ -' XX XXXXXX XX XX \n' +\ -' XXXXXX XX XX \n' +\ -' XXXX XXXXXX XX XX \n' +\ -' XXXXXX XXXX XX XX \n' +\ -' XX XX XXXX XX XX \n' +\ -' XX XX XX XX XX \n' +\ -' XX XX XXXX XXXX XX \n' +\ -' XXXXXXXX XXXX XXXX XX \n' +\ -' XXXXXXXXXXXXXX XXXXXXXX \n' +\ -' XX XXXXXXXX XX XX \n' +\ -' XXXXXXXXXXXXXX XX XX \n' +\ -' XX XXXX XXXXXX XX \n' +\ -' XXXXXX XXXXXXXX \n' +\ -' XXXXXXXXXX XX XX \n' +\ -' XXXXXXXXXXXXXXXXXXXXXXXX \n' +\ -' \n' +\ -' J->LEFT K->ROTATE L->RIGHT SPACE->DROP P->PAUSE Q->QUIT \n' +\ -' ' - -torture_target='+--------------------------------------------------------------------------------+\n' +\ -'|a`opqrs` This is the `srqpo`a |\n' +\ -'|VT100 series Torture Test Demonstration. |\n' +\ -'|VT100 series Torture Test Demonstration. |\n' +\ -'|This is a normal line __________________________________________________y_ |\n' +\ -'|This is a bold line (normal unless the Advanced Video Option is installed) |\n' +\ -'|This line is underlined _ " " " " " " _y_ |\n' +\ -'|This is a blinking line _ " " " " " " _y_ |\n' +\ -'|This is inverse video _ (underlined if no AVO and cursor is underline) _y_ |\n' +\ -'|Normal gjpqy Underline Blink Underline+Blink gjpqy |\n' +\ -'|Bold gjpqy Underline Blink Underline+Blink gjpqy |\n' +\ -'|Inverse Underline Blink Underline+Blink |\n' +\ -'|Bold+Inverse Underline Blink Underline+Blink |\n' +\ -'|This is double width |\n' +\ -'|This is double height |\n' +\ -'|This is double height |\n' +\ -'|_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ioy |\n' +\ -'|_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ioy |\n' +\ -'|_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ioy |\n' +\ -'|`abcdefghijklmnopqrstuvwxyz{|}~ lqwqk |\n' +\ -'|`abcdefghijklmnopqrstuvwxyz{|}~ tqnqu |\n' +\ -'|`abcdefghijklmnopqrstuvwxyz{|}~ tqnqu |\n' +\ -'|`abcdefghijklmnopqrstuvwxyz{|}~ mqvqj |\n' +\ -'| This test created by Joe Smith, 8-May-85 |\n' +\ -'| |\n' +\ -'+--------------------------------------------------------------------------------+\n' - -class ansiTestCase (PexpectTestCase.PexpectTestCase): - def test_write (self): - s = ANSI.ANSI (6,65) - s.fill('.') - s.cursor_home() - for c in write_text: - s.write (c) - assert str(s) == write_target - - def test_torturet (self): - s = ANSI.ANSI (24,80) - with open('torturet.vt') as f: - sample_text = f.read() - for c in sample_text: - s.process (c) - assert s.pretty() == torture_target, 'processed: \n' + s.pretty() + '\nexpected:\n' + torture_target - - def test_tetris (self): - s = ANSI.ANSI (24,80) - with open('tetris.data') as f: - tetris_text = f.read() - for c in tetris_text: - s.process (c) - assert str(s) == tetris_target - - def test_lines(self): - s = ANSI.ANSI(5, 5) - s.write('a'*6 + '\n') - s.write('ab\bcd\n') - s.write('ab\rcd\n') - assert str(s) == ('aaaaa\n' - 'a \n' - 'acd \n' - 'cd \n' - ' ') - - def test_number_x(self): - """Test the FSM state used to handle more than 2 numeric parameters.""" - class TestANSI(ANSI.ANSI): - captured_memory = None - def do_sgr(self, fsm): - assert self.captured_memory is None - self.captured_memory = fsm.memory - - s = TestANSI(1, 20) - s.write('\x1b[0;1;32;45mtest') - assert str(s) == ('test ') - assert s.captured_memory is not None - assert s.captured_memory == [s, '0', '1', '32', '45'] - - def test_fsm_memory(self): - """Test the FSM stack/memory does not have numbers left on it - after some sequences with numbers are passed in.""" - s = ANSI.ANSI(1, 20) - s.write('\x1b[0;1;2;3m\x1b[4;5;6;7q\x1b[?8h\x1b[?9ltest') - assert str(s) == ('test ') - assert s.state.memory == [s] - - def test_utf8_bytes(self): - """Test that when bytes are passed in containing UTF-8 encoded - characters, where the encoding of each character consists of - multiple bytes, the characters are correctly decoded. - Incremental decoding is also tested.""" - s = ANSI.ANSI(2, 10, encoding='utf-8') - # This is the UTF-8 encoding of the UCS character "HOURGLASS" - # followed by the UTF-8 encoding of the UCS character - # "KEYBOARD". These characters can't be encoded in cp437 or - # latin-1. The "KEYBOARD" character is split into two - # separate writes. - s.write(b'\xe2\x8c\x9b') - s.write(b'\xe2\x8c') - s.write(b'\xa8') - if PY3: - assert str(s) == u'\u231b\u2328 \n ' - else: - assert unicode(s) == u'\u231b\u2328 \n ' - assert str(s) == b'\xe2\x8c\x9b\xe2\x8c\xa8 \n ' - assert s.dump() == u'\u231b\u2328 ' - assert s.pretty() == u'+----------+\n|\u231b\u2328 |\n| |\n+----------+\n' - assert s.get_abs(1, 1) == u'\u231b' - assert s.get_region(1, 1, 1, 5) == [u'\u231b\u2328 '] - - def test_unicode(self): - """Test passing in of a unicode string.""" - s = ANSI.ANSI(2, 10, encoding="utf-8") - s.write(u'\u231b\u2328') - if PY3: - assert str(s) == u'\u231b\u2328 \n ' - else: - assert unicode(s) == u'\u231b\u2328 \n ' - assert str(s) == b'\xe2\x8c\x9b\xe2\x8c\xa8 \n ' - assert s.dump() == u'\u231b\u2328 ' - assert s.pretty() == u'+----------+\n|\u231b\u2328 |\n| |\n+----------+\n' - assert s.get_abs(1, 1) == u'\u231b' - assert s.get_region(1, 1, 1, 5) == [u'\u231b\u2328 '] - - def test_decode_error(self): - """Test that default handling of decode errors replaces the - invalid characters.""" - s = ANSI.ANSI(2, 10, encoding="ascii") - s.write(b'\xff') # a non-ASCII character - # In unicode, the non-ASCII character is replaced with - # REPLACEMENT CHARACTER. - if PY3: - assert str(s) == u'\ufffd \n ' - else: - assert unicode(s) == u'\ufffd \n ' - assert str(s) == b'? \n ' - assert s.dump() == u'\ufffd ' - assert s.pretty() == u'+----------+\n|\ufffd |\n| |\n+----------+\n' - assert s.get_abs(1, 1) == u'\ufffd' - assert s.get_region(1, 1, 1, 5) == [u'\ufffd '] - - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(ansiTestCase,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_async.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_async.py deleted file mode 100644 index 1cc32361fe2..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_async.py +++ /dev/null @@ -1,70 +0,0 @@ -try: - import asyncio -except ImportError: - asyncio = None - -import gc -import sys -import unittest - -import pexpect -from .PexpectTestCase import PexpectTestCase - -def run(coro): - return asyncio.get_event_loop().run_until_complete(coro) - -@unittest.skipIf(asyncio is None, "Requires asyncio") -class AsyncTests(PexpectTestCase): - def test_simple_expect(self): - p = pexpect.spawn('cat') - p.sendline('Hello asyncio') - coro = p.expect(['Hello', pexpect.EOF] , async_=True) - assert run(coro) == 0 - print('Done') - - def test_timeout(self): - p = pexpect.spawn('cat') - coro = p.expect('foo', timeout=1, async_=True) - with self.assertRaises(pexpect.TIMEOUT): - run(coro) - - p = pexpect.spawn('cat') - coro = p.expect(['foo', pexpect.TIMEOUT], timeout=1, async_=True) - assert run(coro) == 1 - - def test_eof(self): - p = pexpect.spawn('cat') - p.sendline('Hi') - coro = p.expect(pexpect.EOF, async_=True) - p.sendeof() - assert run(coro) == 0 - - p = pexpect.spawn('cat') - p.sendeof() - coro = p.expect('Blah', async_=True) - with self.assertRaises(pexpect.EOF): - run(coro) - - def test_expect_exact(self): - p = pexpect.spawn('%s list100.py' % sys.executable) - assert run(p.expect_exact(b'5', async_=True)) == 0 - assert run(p.expect_exact(['wpeok', b'11'], async_=True)) == 1 - assert run(p.expect_exact([b'foo', pexpect.EOF], async_=True)) == 1 - - def test_async_utf8(self): - p = pexpect.spawn('%s list100.py' % sys.executable, encoding='utf8') - assert run(p.expect_exact(u'5', async_=True)) == 0 - assert run(p.expect_exact([u'wpeok', u'11'], async_=True)) == 1 - assert run(p.expect_exact([u'foo', pexpect.EOF], async_=True)) == 1 - - def test_async_and_gc(self): - p = pexpect.spawn('%s sleep_for.py 1' % sys.executable, encoding='utf8') - assert run(p.expect_exact(u'READY', async_=True)) == 0 - gc.collect() - assert run(p.expect_exact(u'END', async_=True)) == 0 - - def test_async_and_sync(self): - p = pexpect.spawn('echo 1234', encoding='utf8', maxread=1) - assert run(p.expect_exact(u'1', async_=True)) == 0 - assert p.expect_exact(u'2') == 0 - assert run(p.expect_exact(u'3', async_=True)) == 0 diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_command_list_split.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_command_list_split.py deleted file mode 100755 index 370f46e5b49..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_command_list_split.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -from . import PexpectTestCase - -class SplitCommandLineTestCase(PexpectTestCase.PexpectTestCase): - def testSplitSizes(self): - assert len(pexpect.split_command_line(r'')) == 0 - assert len(pexpect.split_command_line(r'one')) == 1 - assert len(pexpect.split_command_line(r'one two')) == 2 - assert len(pexpect.split_command_line(r'one two')) == 2 - assert len(pexpect.split_command_line(r'one two')) == 2 - assert len(pexpect.split_command_line(r'one\ one')) == 1 - assert len(pexpect.split_command_line('\'one one\'')) == 1 - assert len(pexpect.split_command_line(r'one\"one')) == 1 - assert len(pexpect.split_command_line(r'This\' is a\'\ test')) == 3 - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(SplitCommandLineTestCase,'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_constructor.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_constructor.py deleted file mode 100755 index 98c473ae584..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_constructor.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -from . import PexpectTestCase - -class TestCaseConstructor(PexpectTestCase.PexpectTestCase): - def test_constructor (self): - '''This tests that the constructor will work and give - the same results for different styles of invoking __init__(). - This assumes that the root directory / is static during the test. - ''' - p1 = pexpect.spawn('uname -m -n -p -r -s -v') - p2 = pexpect.spawn('uname', ['-m', '-n', '-p', '-r', '-s', '-v']) - p1.expect(pexpect.EOF) - p2.expect(pexpect.EOF) - assert p1.before == p2.before - - def test_named_parameters (self): - '''This tests that named parameters work. - ''' - p = pexpect.spawn ('/bin/ls',timeout=10) - p = pexpect.spawn (timeout=10, command='/bin/ls') - p = pexpect.spawn (args=[], command='/bin/ls') - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(TestCaseConstructor,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_ctrl_chars.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_ctrl_chars.py deleted file mode 100755 index 10d03dbc2af..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_ctrl_chars.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import print_function - -import pexpect -import unittest -from . import PexpectTestCase -import time -import sys - -from ptyprocess import ptyprocess -ptyprocess._make_eof_intr() - -if sys.version_info[0] >= 3: - def byte(i): - return bytes([i]) -else: - byte = chr - -class TestCtrlChars(PexpectTestCase.PexpectTestCase): - - def test_control_chars(self): - '''This tests that we can send all 256 8-bit characters to a child - process.''' - child = pexpect.spawn('python getch.py', echo=False, timeout=5) - child.expect('READY') - for i in range(1, 256): - child.send(byte(i)) - child.expect ('%d<STOP>' % (i,)) - - # This needs to be last, as getch.py exits on \x00 - child.send(byte(0)) - child.expect('0<STOP>') - child.expect(pexpect.EOF) - assert not child.isalive() - assert child.exitstatus == 0 - - def test_sendintr (self): - child = pexpect.spawn('python getch.py', echo=False, timeout=5) - child.expect('READY') - child.sendintr() - child.expect(str(ord(ptyprocess._INTR)) + '<STOP>') - - child.send(byte(0)) - child.expect('0<STOP>') - child.expect(pexpect.EOF) - assert not child.isalive() - assert child.exitstatus == 0 - - def test_sendeof(self): - child = pexpect.spawn('python getch.py', echo=False, timeout=5) - child.expect('READY') - child.sendeof() - child.expect(str(ord(ptyprocess._EOF)) + '<STOP>') - - child.send(byte(0)) - child.expect('0<STOP>') - child.expect(pexpect.EOF) - assert not child.isalive() - assert child.exitstatus == 0 - - def test_bad_sendcontrol_chars (self): - '''This tests that sendcontrol will return 0 for an unknown char. ''' - - child = pexpect.spawn('python getch.py', echo=False, timeout=5) - child.expect('READY') - assert 0 == child.sendcontrol('1') - - def test_sendcontrol(self): - '''This tests that we can send all special control codes by name. - ''' - child = pexpect.spawn('python getch.py', echo=False, timeout=5) - child.expect('READY') - for ctrl in 'abcdefghijklmnopqrstuvwxyz': - assert child.sendcontrol(ctrl) == 1 - val = ord(ctrl) - ord('a') + 1 - child.expect_exact(str(val)+'<STOP>') - - # escape character - assert child.sendcontrol('[') == 1 - child.expect('27<STOP>') - assert child.sendcontrol('\\') == 1 - child.expect('28<STOP>') - # telnet escape character - assert child.sendcontrol(']') == 1 - child.expect('29<STOP>') - assert child.sendcontrol('^') == 1 - child.expect('30<STOP>') - # irc protocol uses this to underline ... - assert child.sendcontrol('_') == 1 - child.expect('31<STOP>') - # the real "backspace is delete" - assert child.sendcontrol('?') == 1 - child.expect('127<STOP>') - - # NUL, same as ctrl + ' ' - assert child.sendcontrol('@') == 1 - child.expect('0<STOP>') - child.expect(pexpect.EOF) - assert not child.isalive() - assert child.exitstatus == 0 - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(TestCtrlChars,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_delay.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_delay.py deleted file mode 100644 index 1e4dba687df..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_delay.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- - -from . import PexpectTestCase -import pexpect - - -class TestCaseDelay(PexpectTestCase.PexpectTestCase): - """ - Tests for various delay attributes. - """ - def test_delaybeforesend(self): - """ - Test various values for delaybeforesend. - """ - p = pexpect.spawn("cat") - - p.delaybeforesend = 1 - p.sendline("line 1") - p.expect("line 1") - - p.delaybeforesend = 0.0 - p.sendline("line 2") - p.expect("line 2") - - p.delaybeforesend = None - p.sendline("line 3") - p.expect("line 3") - - def test_delayafterread(self): - """ - Test various values for delayafterread. - """ - p = pexpect.spawn("cat") - - p.delayafterread = 1 - p.sendline("line 1") - p.expect("line 1") - - p.delayafterread = 0.0 - p.sendline("line 2") - p.expect("line 2") - - p.delayafterread = None - p.sendline("line 3") - p.expect("line 3") diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_destructor.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_destructor.py deleted file mode 100755 index d27b6f6251e..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_destructor.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -from . import PexpectTestCase -import gc -import platform -import time - -class TestCaseDestructor(PexpectTestCase.PexpectTestCase): - def test_destructor (self): - if platform.python_implementation() != 'CPython': - # Details of garbage collection are different on other implementations - return 'SKIP' - gc.collect() - time.sleep(3) - p1 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p2 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p3 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p4 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - fd_t1 = (p1.child_fd,p2.child_fd,p3.child_fd,p4.child_fd) - p1.expect(pexpect.EOF) - p2.expect(pexpect.EOF) - p3.expect(pexpect.EOF) - p4.expect(pexpect.EOF) - p1.kill(9) - p2.kill(9) - p3.kill(9) - p4.kill(9) - p1 = None - p2 = None - p3 = None - p4 = None - gc.collect() - time.sleep(3) # Some platforms are slow at gc... Solaris! - - p1 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p2 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p3 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p4 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - fd_t2 = (p1.child_fd,p2.child_fd,p3.child_fd,p4.child_fd) - p1.kill(9) - p2.kill(9) - p3.kill(9) - p4.kill(9) - del (p1) - del (p2) - del (p3) - del (p4) - gc.collect() - time.sleep(3) - - p1 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p2 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p3 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - p4 = pexpect.spawn('%s hello_world.py' % self.PYTHONBIN) - fd_t3 = (p1.child_fd,p2.child_fd,p3.child_fd,p4.child_fd) - - assert (fd_t1 == fd_t2 == fd_t3), "pty file descriptors not properly garbage collected (fd_t1,fd_t2,fd_t3)=(%s,%s,%s)" % (str(fd_t1),str(fd_t2),str(fd_t3)) - - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(TestCaseDestructor,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_dotall.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_dotall.py deleted file mode 100755 index 68aef3f50b7..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_dotall.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -import re -from . import PexpectTestCase - -testdata = 'BEGIN\nHello world\nEND' -class TestCaseDotall(PexpectTestCase.PexpectTestCase): - def test_dotall (self): - p = pexpect.spawn('echo "%s"' % testdata) - i = p.expect ([b'BEGIN(.*)END', pexpect.EOF]) - assert i==0, 'DOTALL does not seem to be working.' - - def test_precompiled (self): - p = pexpect.spawn('echo "%s"' % testdata) - pat = re.compile(b'BEGIN(.*)END') # This overrides the default DOTALL. - i = p.expect ([pat, pexpect.EOF]) - assert i==1, 'Precompiled pattern to override DOTALL does not seem to be working.' - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(TestCaseDotall,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_env.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_env.py deleted file mode 100755 index ecaaa4bea26..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_env.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2016, Martin Packman <martin.packman@canonical.com> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import contextlib -import os -import tempfile -import unittest - -import pexpect -from . import PexpectTestCase - - -@contextlib.contextmanager -def example_script(name, output='success'): - " helper to create a temporary shell script that tests can run " - tempdir = tempfile.mkdtemp(prefix='tmp-pexpect-test') - try: - script_path = os.path.join(tempdir, name) - with open(script_path, 'w') as f: - f.write('#!/bin/sh\necho "%s"' % (output,)) - try: - os.chmod(script_path, 0o755) - yield tempdir - finally: - os.remove(script_path) - finally: - os.rmdir(tempdir) - - -class TestCaseEnv(PexpectTestCase.PexpectTestCase): - " tests for the env argument to pexpect.spawn and pexpect.run " - - def test_run_uses_env(self): - " pexpect.run uses env argument when running child process " - script_name = 'run_uses_env.sh' - environ = {'PEXPECT_TEST_KEY': 'pexpect test value'} - with example_script(script_name, '$PEXPECT_TEST_KEY') as script_dir: - script = os.path.join(script_dir, script_name) - out = pexpect.run(script, env=environ) - self.assertEqual(out.rstrip(), b'pexpect test value') - - def test_spawn_uses_env(self): - " pexpect.spawn uses env argument when running child process " - script_name = 'spawn_uses_env.sh' - environ = {'PEXPECT_TEST_KEY': 'pexpect test value'} - with example_script(script_name, '$PEXPECT_TEST_KEY') as script_dir: - script = os.path.join(script_dir, script_name) - child = pexpect.spawn(script, env=environ) - out = child.readline() - child.expect(pexpect.EOF) - self.assertEqual(child.exitstatus, 0) - self.assertEqual(out.rstrip(), b'pexpect test value') - - def test_run_uses_env_path(self): - " pexpect.run uses binary from PATH when given in env argument " - script_name = 'run_uses_env_path.sh' - with example_script(script_name) as script_dir: - out = pexpect.run(script_name, env={'PATH': script_dir}) - self.assertEqual(out.rstrip(), b'success') - - def test_run_uses_env_path_over_path(self): - " pexpect.run uses PATH from env over os.environ " - script_name = 'run_uses_env_path_over_path.sh' - with example_script(script_name, output='failure') as wrong_dir: - with example_script(script_name) as right_dir: - orig_path = os.environ['PATH'] - os.environ['PATH'] = wrong_dir - try: - out = pexpect.run(script_name, env={'PATH': right_dir}) - finally: - os.environ['PATH'] = orig_path - self.assertEqual(out.rstrip(), b'success') - - -if __name__ == '__main__': - unittest.main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_expect.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_expect.py deleted file mode 100755 index 795518ab2fc..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_expect.py +++ /dev/null @@ -1,602 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import multiprocessing -import unittest -import subprocess -import time -import signal -import sys -import os - -import pexpect -from . import PexpectTestCase -from .utils import no_coverage_env - -# Many of these test cases blindly assume that sequential directory -# listings of the /bin directory will yield the same results. -# This may not be true, but seems adequate for testing now. -# I should fix this at some point. - -FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)]) -def hex_dump(src, length=16): - result=[] - for i in xrange(0, len(src), length): - s = src[i:i+length] - hexa = ' '.join(["%02X"%ord(x) for x in s]) - printable = s.translate(FILTER) - result.append("%04X %-*s %s\n" % (i, length*3, hexa, printable)) - return ''.join(result) - -def hex_diff(left, right): - diff = ['< %s\n> %s' % (_left, _right,) for _left, _right in zip( - hex_dump(left).splitlines(), hex_dump(right).splitlines()) - if _left != _right] - return '\n' + '\n'.join(diff,) - - -class ExpectTestCase (PexpectTestCase.PexpectTestCase): - - def test_expect_basic (self): - p = pexpect.spawn('cat', echo=False, timeout=5) - p.sendline (b'Hello') - p.sendline (b'there') - p.sendline (b'Mr. Python') - p.expect (b'Hello') - p.expect (b'there') - p.expect (b'Mr. Python') - p.sendeof () - p.expect (pexpect.EOF) - - def test_expect_exact_basic (self): - p = pexpect.spawn('cat', echo=False, timeout=5) - p.sendline (b'Hello') - p.sendline (b'there') - p.sendline (b'Mr. Python') - p.expect_exact (b'Hello') - p.expect_exact (b'there') - p.expect_exact (b'Mr. Python') - p.sendeof () - p.expect_exact (pexpect.EOF) - - def test_expect_ignore_case(self): - '''This test that the ignorecase flag will match patterns - even if case is different using the regex (?i) directive. - ''' - p = pexpect.spawn('cat', echo=False, timeout=5) - p.sendline (b'HELLO') - p.sendline (b'there') - p.expect (b'(?i)hello') - p.expect (b'(?i)THERE') - p.sendeof () - p.expect (pexpect.EOF) - - def test_expect_ignore_case_flag(self): - '''This test that the ignorecase flag will match patterns - even if case is different using the ignorecase flag. - ''' - p = pexpect.spawn('cat', echo=False, timeout=5) - p.ignorecase = True - p.sendline (b'HELLO') - p.sendline (b'there') - p.expect (b'hello') - p.expect (b'THERE') - p.sendeof () - p.expect (pexpect.EOF) - - def test_expect_order (self): - '''This tests that patterns are matched in the same order as given in the pattern_list. - - (Or does it? Doesn't it also pass if expect() always chooses - (one of the) the leftmost matches in the input? -- grahn) - ... agreed! -jquast, the buffer ptr isn't forwarded on match, see first two test cases - ''' - p = pexpect.spawn('cat', echo=False, timeout=5) - self._expect_order(p) - - def test_expect_order_exact (self): - '''Like test_expect_order(), but using expect_exact(). - ''' - p = pexpect.spawn('cat', echo=False, timeout=5) - p.expect = p.expect_exact - self._expect_order(p) - - def _expect_order (self, p): - p.sendline (b'1234') - p.sendline (b'abcd') - p.sendline (b'wxyz') - p.sendline (b'7890') - p.sendeof () - index = p.expect ([ - b'1234', - b'abcd', - b'wxyz', - pexpect.EOF, - b'7890' ]) - assert index == 0, (index, p.before, p.after) - index = p.expect ([ - b'54321', - pexpect.TIMEOUT, - b'1234', - b'abcd', - b'wxyz', - pexpect.EOF], timeout=5) - assert index == 3, (index, p.before, p.after) - index = p.expect ([ - b'54321', - pexpect.TIMEOUT, - b'1234', - b'abcd', - b'wxyz', - pexpect.EOF], timeout=5) - assert index == 4, (index, p.before, p.after) - index = p.expect ([ - pexpect.EOF, - b'abcd', - b'wxyz', - b'7890' ]) - assert index == 3, (index, p.before, p.after) - - index = p.expect ([ - b'abcd', - b'wxyz', - b'7890', - pexpect.EOF]) - assert index == 3, (index, p.before, p.after) - - def test_expect_setecho_off(self): - '''This tests that echo may be toggled off. - ''' - p = pexpect.spawn('cat', echo=True, timeout=5) - try: - self._expect_echo_toggle(p) - except IOError: - if sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - raise - - def test_expect_setecho_off_exact(self): - p = pexpect.spawn('cat', echo=True, timeout=5) - p.expect = p.expect_exact - try: - self._expect_echo_toggle(p) - except IOError: - if sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - raise - - def test_waitnoecho(self): - " Tests setecho(False) followed by waitnoecho() " - p = pexpect.spawn('cat', echo=False, timeout=5) - try: - p.setecho(False) - p.waitnoecho() - except IOError: - if sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - raise - - def test_waitnoecho_order(self): - - ''' This tests that we can wait on a child process to set echo mode. - For example, this tests that we could wait for SSH to set ECHO False - when asking of a password. This makes use of an external script - echo_wait.py. ''' - - p1 = pexpect.spawn('%s echo_wait.py' % self.PYTHONBIN) - start = time.time() - try: - p1.waitnoecho(timeout=10) - except IOError: - if sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - raise - - - end_time = time.time() - start - assert end_time < 10 and end_time > 2, "waitnoecho did not set ECHO off in the expected window of time." - - # test that we actually timeout and return False if ECHO is never set off. - p1 = pexpect.spawn('cat') - start = time.time() - retval = p1.waitnoecho(timeout=4) - end_time = time.time() - start - assert end_time > 3, "waitnoecho should have waited longer than 2 seconds. retval should be False, retval=%d"%retval - assert retval==False, "retval should be False, retval=%d"%retval - - # This one is mainly here to test default timeout for code coverage. - p1 = pexpect.spawn('%s echo_wait.py' % self.PYTHONBIN) - start = time.time() - p1.waitnoecho() - end_time = time.time() - start - assert end_time < 10, "waitnoecho did not set ECHO off in the expected window of time." - - def test_expect_echo (self): - '''This tests that echo is on by default. - ''' - p = pexpect.spawn('cat', echo=True, timeout=5) - self._expect_echo(p) - - def test_expect_echo_exact (self): - '''Like test_expect_echo(), but using expect_exact(). - ''' - p = pexpect.spawn('cat', echo=True, timeout=5) - p.expect = p.expect_exact - self._expect_echo(p) - - def _expect_echo (self, p): - p.sendline (b'1234') # Should see this twice (once from tty echo and again from cat). - index = p.expect ([ - b'1234', - b'abcd', - b'wxyz', - pexpect.EOF, - pexpect.TIMEOUT]) - assert index == 0, "index="+str(index)+"\n"+p.before - index = p.expect ([ - b'1234', - b'abcd', - b'wxyz', - pexpect.EOF]) - assert index == 0, "index="+str(index) - - def _expect_echo_toggle(self, p): - p.sendline (b'1234') # Should see this twice (once from tty echo and again from cat). - index = p.expect ([ - b'1234', - b'abcd', - b'wxyz', - pexpect.EOF, - pexpect.TIMEOUT]) - assert index == 0, "index="+str(index)+"\n"+p.before - index = p.expect ([ - b'1234', - b'abcd', - b'wxyz', - pexpect.EOF]) - assert index == 0, "index="+str(index) - p.setecho(0) # Turn off tty echo - p.waitnoecho() - p.sendline (b'abcd') # Now, should only see this once. - p.sendline (b'wxyz') # Should also be only once. - index = p.expect ([ - pexpect.EOF, - pexpect.TIMEOUT, - b'abcd', - b'wxyz', - b'1234']) - assert index == 2, "index="+str(index) - index = p.expect ([ - pexpect.EOF, - b'abcd', - b'wxyz', - b'7890']) - assert index == 2, "index="+str(index) - p.setecho(1) # Turn on tty echo - p.sendline (b'7890') # Should see this twice. - index = p.expect ([pexpect.EOF,b'abcd',b'wxyz',b'7890']) - assert index == 3, "index="+str(index) - index = p.expect ([pexpect.EOF,b'abcd',b'wxyz',b'7890']) - assert index == 3, "index="+str(index) - p.sendeof() - - def test_expect_index (self): - '''This tests that mixed list of regex strings, TIMEOUT, and EOF all - return the correct index when matched. - ''' - p = pexpect.spawn('cat', echo=False, timeout=5) - self._expect_index(p) - - def test_expect_index_exact (self): - '''Like test_expect_index(), but using expect_exact(). - ''' - p = pexpect.spawn('cat', echo=False, timeout=5) - p.expect = p.expect_exact - self._expect_index(p) - - def _expect_index (self, p): - p.sendline (b'1234') - index = p.expect ([b'abcd',b'wxyz',b'1234',pexpect.EOF]) - assert index == 2, "index="+str(index) - p.sendline (b'abcd') - index = p.expect ([pexpect.TIMEOUT,b'abcd',b'wxyz',b'1234',pexpect.EOF]) - assert index == 1, "index="+str(index)+str(p) - p.sendline (b'wxyz') - index = p.expect ([b'54321',pexpect.TIMEOUT,b'abcd',b'wxyz',b'1234',pexpect.EOF]) - assert index == 3, "index="+str(index) # Expect 'wxyz' - p.sendline (b'$*!@?') - index = p.expect ([b'54321',pexpect.TIMEOUT,b'abcd',b'wxyz',b'1234',pexpect.EOF], - timeout=1) - assert index == 1, "index="+str(index) # Expect TIMEOUT - p.sendeof () - index = p.expect ([b'54321',pexpect.TIMEOUT,b'abcd',b'wxyz',b'1234',pexpect.EOF]) - assert index == 5, "index="+str(index) # Expect EOF - - def test_expect (self): - the_old_way = subprocess.Popen(args=['ls', '-l', '/bin'], - stdout=subprocess.PIPE).communicate()[0].rstrip() - p = pexpect.spawn('ls -l /bin') - the_new_way = b'' - while 1: - i = p.expect ([b'\n', pexpect.EOF]) - the_new_way = the_new_way + p.before - if i == 1: - break - the_new_way = the_new_way.rstrip() - the_new_way = the_new_way.replace(b'\r\n', b'\n' - ).replace(b'\r', b'\n').replace(b'\n\n', b'\n').rstrip() - the_old_way = the_old_way.replace(b'\r\n', b'\n' - ).replace(b'\r', b'\n').replace(b'\n\n', b'\n').rstrip() - assert the_old_way == the_new_way, hex_diff(the_old_way, the_new_way) - - def test_expect_exact (self): - the_old_way = subprocess.Popen(args=['ls', '-l', '/bin'], - stdout=subprocess.PIPE).communicate()[0].rstrip() - p = pexpect.spawn('ls -l /bin') - the_new_way = b'' - while 1: - i = p.expect_exact ([b'\n', pexpect.EOF]) - the_new_way = the_new_way + p.before - if i == 1: - break - the_new_way = the_new_way.replace(b'\r\n', b'\n' - ).replace(b'\r', b'\n').replace(b'\n\n', b'\n').rstrip() - the_old_way = the_old_way.replace(b'\r\n', b'\n' - ).replace(b'\r', b'\n').replace(b'\n\n', b'\n').rstrip() - assert the_old_way == the_new_way, hex_diff(the_old_way, the_new_way) - p = pexpect.spawn('echo hello.?world') - i = p.expect_exact(b'.?') - self.assertEqual(p.before, b'hello') - self.assertEqual(p.after, b'.?') - - def test_expect_eof (self): - the_old_way = subprocess.Popen(args=['/bin/ls', '-l', '/bin'], - stdout=subprocess.PIPE).communicate()[0].rstrip() - p = pexpect.spawn('/bin/ls -l /bin') - p.expect(pexpect.EOF) # This basically tells it to read everything. Same as pexpect.run() function. - the_new_way = p.before - the_new_way = the_new_way.replace(b'\r\n', b'\n' - ).replace(b'\r', b'\n').replace(b'\n\n', b'\n').rstrip() - the_old_way = the_old_way.replace(b'\r\n', b'\n' - ).replace(b'\r', b'\n').replace(b'\n\n', b'\n').rstrip() - assert the_old_way == the_new_way, hex_diff(the_old_way, the_new_way) - - def test_expect_timeout (self): - p = pexpect.spawn('cat', timeout=5) - p.expect(pexpect.TIMEOUT) # This tells it to wait for timeout. - self.assertEqual(p.after, pexpect.TIMEOUT) - - def test_unexpected_eof (self): - p = pexpect.spawn('ls -l /bin') - try: - p.expect('_Z_XY_XZ') # Probably never see this in ls output. - except pexpect.EOF: - pass - else: - self.fail ('Expected an EOF exception.') - - def test_buffer_interface(self): - p = pexpect.spawn('cat', timeout=5) - p.sendline (b'Hello') - p.expect (b'Hello') - assert len(p.buffer) - p.buffer = b'Testing' - p.sendeof () - - def test_before_across_chunks(self): - # https://github.com/pexpect/pexpect/issues/478 - child = pexpect.spawn( - '''/bin/bash -c "openssl rand -base64 {} | head -500 | nl --number-format=rz --number-width=5 2>&1 ; echo 'PATTERN!!!'"'''.format(1024 * 1024 * 2), - searchwindowsize=128 - ) - child.expect(['PATTERN']) - assert len(child.before.splitlines()) == 500 - assert child.after == b'PATTERN' - assert child.buffer == b'!!!\r\n' - - def _before_after(self, p): - p.timeout = 5 - - p.expect(b'5') - self.assertEqual(p.after, b'5') - assert p.before.startswith(b'[0, 1, 2'), p.before - - p.expect(b'50') - self.assertEqual(p.after, b'50') - assert p.before.startswith(b', 6, 7, 8'), p.before[:20] - assert p.before.endswith(b'48, 49, '), p.before[-20:] - - p.expect(pexpect.EOF) - self.assertEqual(p.after, pexpect.EOF) - assert p.before.startswith(b', 51, 52'), p.before[:20] - assert p.before.endswith(b', 99]\r\n'), p.before[-20:] - - def test_before_after(self): - '''This tests expect() for some simple before/after things. - ''' - p = pexpect.spawn('%s -Wi list100.py' % self.PYTHONBIN, env=no_coverage_env()) - self._before_after(p) - - def test_before_after_exact(self): - '''This tests some simple before/after things, for - expect_exact(). (Grahn broke it at one point.) - ''' - p = pexpect.spawn('%s -Wi list100.py' % self.PYTHONBIN, env=no_coverage_env()) - # mangle the spawn so we test expect_exact() instead - p.expect = p.expect_exact - self._before_after(p) - - def _ordering(self, p): - p.timeout = 20 - p.expect(b'>>> ') - - p.sendline('list(range(4*3))') - self.assertEqual(p.expect([b'5,', b'5,']), 0) - p.expect(b'>>> ') - - p.sendline(b'list(range(4*3))') - self.assertEqual(p.expect([b'7,', b'5,']), 1) - p.expect(b'>>> ') - - p.sendline(b'list(range(4*3))') - self.assertEqual(p.expect([b'5,', b'7,']), 0) - p.expect(b'>>> ') - - p.sendline(b'list(range(4*5))') - self.assertEqual(p.expect([b'2,', b'12,']), 0) - p.expect(b'>>> ') - - p.sendline(b'list(range(4*5))') - self.assertEqual(p.expect([b'12,', b'2,']), 1) - - def test_ordering(self): - '''This tests expect() for which pattern is returned - when many may eventually match. I (Grahn) am a bit - confused about what should happen, but this test passes - with pexpect 2.1. - ''' - p = pexpect.spawn(self.PYTHONBIN) - self._ordering(p) - - def test_ordering_exact(self): - '''This tests expect_exact() for which pattern is returned - when many may eventually match. I (Grahn) am a bit - confused about what should happen, but this test passes - for the expect() method with pexpect 2.1. - ''' - p = pexpect.spawn(self.PYTHONBIN) - # mangle the spawn so we test expect_exact() instead - p.expect = p.expect_exact - self._ordering(p) - - def _greed(self, expect): - # End at the same point: the one with the earliest start should win - self.assertEqual(expect([b'3, 4', b'2, 3, 4']), 1) - - # Start at the same point: first pattern passed wins - self.assertEqual(expect([b'5,', b'5, 6']), 0) - - # Same pattern passed twice: first instance wins - self.assertEqual(expect([b'7, 8', b'7, 8, 9', b'7, 8']), 0) - - def _greed_read1(self, expect): - # Here, one has an earlier start and a later end. When processing - # one character at a time, the one that finishes first should win, - # because we don't know about the other match when it wins. - # If maxread > 1, this behaviour is currently undefined, although in - # most cases the one that starts first will win. - self.assertEqual(expect([b'1, 2, 3', b'2,']), 1) - - def test_greed(self): - p = pexpect.spawn(self.PYTHONBIN + ' list100.py') - self._greed(p.expect) - - p = pexpect.spawn(self.PYTHONBIN + ' list100.py', maxread=1) - self._greed_read1(p.expect) - - def test_greed_exact(self): - p = pexpect.spawn(self.PYTHONBIN + ' list100.py') - self._greed(p.expect_exact) - - p = pexpect.spawn(self.PYTHONBIN + ' list100.py', maxread=1) - self._greed_read1(p.expect_exact) - - def test_bad_arg(self): - p = pexpect.spawn('cat') - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect(1) - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect([1, b'2']) - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect_exact(1) - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect_exact([1, b'2']) - - def test_timeout_none(self): - p = pexpect.spawn('echo abcdef', timeout=None) - p.expect('abc') - p.expect_exact('def') - p.expect(pexpect.EOF) - - def test_signal_handling(self): - ''' - This tests the error handling of a signal interrupt (usually a - SIGWINCH generated when a window is resized), but in this test, we - are substituting an ALARM signal as this is much easier for testing - and is treated the same as a SIGWINCH. - - To ensure that the alarm fires during the expect call, we are - setting the signal to alarm after 1 second while the spawned process - sleeps for 2 seconds prior to sending the expected output. - ''' - def noop(x, y): - pass - signal.signal(signal.SIGALRM, noop) - - p1 = pexpect.spawn('%s sleep_for.py 2' % self.PYTHONBIN, timeout=5) - p1.expect('READY') - signal.alarm(1) - p1.expect('END') - - def test_stdin_closed(self): - ''' - Ensure pexpect continues to operate even when stdin is closed - ''' - class Closed_stdin_proc(multiprocessing.Process): - def run(self): - sys.__stdin__.close() - cat = pexpect.spawn('cat') - cat.sendeof() - cat.expect(pexpect.EOF) - - proc = Closed_stdin_proc() - proc.start() - proc.join() - assert proc.exitcode == 0 - - def test_stdin_stdout_closed(self): - ''' - Ensure pexpect continues to operate even when stdin and stdout is closed - ''' - class Closed_stdin_stdout_proc(multiprocessing.Process): - def run(self): - sys.__stdin__.close() - sys.__stdout__.close() - cat = pexpect.spawn('cat') - cat.sendeof() - cat.expect(pexpect.EOF) - - proc = Closed_stdin_stdout_proc() - proc.start() - proc.join() - assert proc.exitcode == 0 - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(ExpectTestCase, 'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_filedescriptor.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_filedescriptor.py deleted file mode 100755 index d9164e1d50b..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_filedescriptor.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -from pexpect import fdpexpect -import unittest -from . import PexpectTestCase -import os - -class ExpectTestCase(PexpectTestCase.PexpectTestCase): - def setUp(self): - print(self.id()) - PexpectTestCase.PexpectTestCase.setUp(self) - - def test_fd (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = fdpexpect.fdspawn (fd) - s.expect(b'This is the end of test data:') - s.expect(pexpect.EOF) - self.assertEqual(s.before, b' END\n') - - def test_maxread (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = fdpexpect.fdspawn (fd) - s.maxread = 100 - s.expect('2') - s.expect ('This is the end of test data:') - s.expect (pexpect.EOF) - self.assertEqual(s.before, b' END\n') - - def test_fd_isalive (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = fdpexpect.fdspawn(fd) - assert s.isalive() - os.close(fd) - assert not s.isalive(), "Should not be alive after close()" - - def test_fd_isatty (self): - fd = os.open ('TESTDATA.txt', os.O_RDONLY) - s = fdpexpect.fdspawn (fd) - assert not s.isatty() - s.close() - - def test_fileobj(self): - f = open('TESTDATA.txt', 'r') - s = fdpexpect.fdspawn(f) # Should get the fileno from the file handle - s.expect('2') - s.close() - assert not s.isalive() - s.close() # Smoketest - should be able to call this again - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(ExpectTestCase, 'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_interact.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_interact.py deleted file mode 100755 index 865353b7151..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_interact.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import print_function -from __future__ import unicode_literals - -import os -import pexpect -import unittest -import sys -from . import PexpectTestCase - - -class InteractTestCase (PexpectTestCase.PexpectTestCase): - def setUp(self): - super(InteractTestCase, self).setUp() - self.env = env = os.environ.copy() - - # Ensure 'import pexpect' works in subprocess interact*.py - if 'PYTHONPATH' in env: - env['PYTHONPATH'] = os.pathsep.join((self.project_dir, - env['PYTHONPATH'])) - else: - env['PYTHONPATH'] = self.project_dir - - self.interact_py = ('{sys.executable} interact.py'.format(sys=sys)) - - def test_interact_escape(self): - " Ensure `escape_character' value exits interactive mode. " - p = pexpect.spawn(self.interact_py, timeout=5, env=self.env) - p.expect('READY') - p.sendcontrol(']') # chr(29), the default `escape_character' - # value of pexpect.interact(). - p.expect_exact('Escaped interact') - p.expect(pexpect.EOF) - assert not p.isalive() - assert p.exitstatus == 0 - - def test_interact_escape_None(self): - " Return only after Termination when `escape_character=None'. " - p = pexpect.spawn('{self.interact_py} --no-escape'.format(self=self), - timeout=5, env=self.env) - p.expect('READY') - p.sendcontrol(']') - p.expect('29<STOP>') - p.send('\x00') - if not os.environ.get('TRAVIS', None): - # on Travis-CI, we sometimes miss trailing stdout from the - # chain of child processes, not entirely sure why. So this - # is skipped on such systems. - p.expect('0<STOP>') - p.expect_exact('Escaped interact') - p.expect(pexpect.EOF) - assert not p.isalive() - assert p.exitstatus == 0 - - def test_interact_exit_unicode(self): - " Ensure subprocess receives utf8. " - p = pexpect.spawnu('{self.interact_py} --utf8'.format(self=self), - timeout=5, env=self.env) - p.expect('READY') - p.send('ɑ') # >>> map(ord, u'ɑ'.encode('utf8')) - p.expect('201<STOP>') # [201, 145] - p.expect('145<STOP>') - p.send('Β') # >>> map(ord, u'Β'.encode('utf8')) - p.expect('206<STOP>') # [206, 146] - p.expect('146<STOP>') - p.send('\x00') - if not os.environ.get('TRAVIS', None): - # on Travis-CI, we sometimes miss trailing stdout from the - # chain of child processes, not entirely sure why. So this - # is skipped on such systems. - p.expect('0<STOP>') - p.expect_exact('Escaped interact') - p.expect(pexpect.EOF) - assert not p.isalive() - assert p.exitstatus == 0 - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(InteractTestCase, 'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_isalive.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_isalive.py deleted file mode 100755 index cd79d09a4d3..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_isalive.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -import signal -import sys -import time -from . import PexpectTestCase - - -class IsAliveTestCase(PexpectTestCase.PexpectTestCase): - """Various tests for the running status of processes.""" - - def test_expect_wait(self): - """Ensure consistency in wait() and isalive().""" - p = pexpect.spawn('sleep 1') - assert p.isalive() - assert p.wait() == 0 - assert not p.isalive() - # In previous versions of ptyprocess/pexpect, calling wait() a second - # time would raise an exception, but not since v4.0 - assert p.wait() == 0 - - def test_expect_wait_after_termination(self): - """Ensure wait on a process terminated by kill -9.""" - p = pexpect.spawn('sleep 3') - assert p.isalive() - p.kill(9) - time.sleep(1) - - # when terminated, the exitstatus is None, but p.signalstatus - # and p.terminated reflects that the kill -9 nature. - assert p.wait() is None - assert p.signalstatus == 9 - assert p.terminated == True - assert not p.isalive() - - def test_signal_wait(self): - '''Test calling wait with a process terminated by a signal.''' - if not hasattr(signal, 'SIGALRM'): - return 'SKIP' - p = pexpect.spawn(sys.executable, ['alarm_die.py']) - p.wait() - assert p.exitstatus is None - self.assertEqual(p.signalstatus, signal.SIGALRM) - - def test_expect_isalive_dead_after_normal_termination (self): - p = pexpect.spawn('ls', timeout=15) - p.expect(pexpect.EOF) - assert not p.isalive() - - def test_expect_isalive_dead_after_SIGHUP(self): - p = pexpect.spawn('cat', timeout=5, ignore_sighup=False) - assert p.isalive() - force = False - if sys.platform.lower().startswith('sunos'): - # On Solaris (SmartOs), and only when executed from cron(1), SIGKILL - # is required to end the sub-process. This is done using force=True - force = True - assert p.terminate(force) == True - p.expect(pexpect.EOF) - assert not p.isalive() - - def test_expect_isalive_dead_after_SIGINT(self): - p = pexpect.spawn('cat', timeout=5) - assert p.isalive() - force = False - if sys.platform.lower().startswith('sunos'): - # On Solaris (SmartOs), and only when executed from cron(1), SIGKILL - # is required to end the sub-process. This is done using force=True - force = True - assert p.terminate(force) == True - p.expect(pexpect.EOF) - assert not p.isalive() - - def test_expect_isalive_dead_after_SIGKILL(self): - p = pexpect.spawn('cat', timeout=5) - assert p.isalive() - p.kill(9) - p.expect(pexpect.EOF) - assert not p.isalive() - - def test_forced_terminate(self): - p = pexpect.spawn(sys.executable, ['needs_kill.py']) - p.expect('READY') - assert p.terminate(force=True) == True - p.expect(pexpect.EOF) - assert not p.isalive() - -### Some platforms allow this. Some reset status after call to waitpid. -### probably not necessary, isalive() returns early when terminate is False. - def test_expect_isalive_consistent_multiple_calls (self): - '''This tests that multiple calls to isalive() return same value. - ''' - p = pexpect.spawn('cat') - assert p.isalive() - assert p.isalive() - p.sendeof() - p.expect(pexpect.EOF) - assert not p.isalive() - assert not p.isalive() - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(IsAliveTestCase, 'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_log.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_log.py deleted file mode 100755 index 4ad225697d8..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_log.py +++ /dev/null @@ -1,108 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -import os -import tempfile -from . import PexpectTestCase - -# the program cat(1) may display ^D\x08\x08 when \x04 (EOF, Ctrl-D) is sent -_CAT_EOF = b'^D\x08\x08' - -class TestCaseLog(PexpectTestCase.PexpectTestCase): - - def test_log (self): - log_message = 'This is a test.' - filename = tempfile.mktemp() - mylog = open(filename, 'wb') - p = pexpect.spawn('echo', [log_message]) - p.logfile = mylog - p.expect(pexpect.EOF) - p.logfile = None - mylog.close() - with open(filename, 'rb') as f: - lf = f.read() - os.unlink(filename) - self.assertEqual(lf.rstrip(), log_message.encode('ascii')) - - def test_log_logfile_read (self): - log_message = 'This is a test.' - filename = tempfile.mktemp() - mylog = open(filename, 'wb') - p = pexpect.spawn('cat') - p.logfile_read = mylog - p.sendline(log_message) - p.sendeof() - p.expect(pexpect.EOF) - p.logfile = None - mylog.close() - with open(filename, 'rb') as f: - lf = f.read() - os.unlink (filename) - lf = lf.replace(_CAT_EOF, b'') - self.assertEqual(lf, b'This is a test.\r\nThis is a test.\r\n') - - def test_log_logfile_send (self): - log_message = b'This is a test.' - filename = tempfile.mktemp() - mylog = open (filename, 'wb') - p = pexpect.spawn('cat') - p.logfile_send = mylog - p.sendline(log_message) - p.sendeof() - p.expect (pexpect.EOF) - p.logfile = None - mylog.close() - with open(filename, 'rb') as f: - lf = f.read() - os.unlink(filename) - lf = lf.replace(b'\x04', b'') - self.assertEqual(lf.rstrip(), log_message) - - def test_log_send_and_received (self): - - '''The logfile should have the test message three time -- once for the - data we sent. Once for the data that cat echos back as characters are - typed. And once for the data that cat prints after we send a linefeed - (sent by sendline). ''' - - log_message = 'This is a test.' - filename = tempfile.mktemp() - mylog = open(filename, 'wb') - p = pexpect.spawn('cat') - p.logfile = mylog - p.sendline(log_message) - p.sendeof() - p.expect (pexpect.EOF) - p.logfile = None - mylog.close() - with open(filename, 'rb') as f: - lf = f.read() - os.unlink(filename) - lf = lf.replace(b'\x04', b'').replace(_CAT_EOF, b'') - self.assertEqual(lf, - b'This is a test.\nThis is a test.\r\nThis is a test.\r\n') - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(TestCaseLog,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_misc.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_misc.py deleted file mode 100755 index 6052b6aee13..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_misc.py +++ /dev/null @@ -1,373 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import unittest -import sys -import re -import signal -import time -import tempfile -import os - -import pexpect -from . import PexpectTestCase - -# the program cat(1) may display ^D\x08\x08 when \x04 (EOF, Ctrl-D) is sent -_CAT_EOF = b'^D\x08\x08' - - -if (sys.version_info[0] >= 3): - def _u(s): - return s.decode('utf-8') -else: - def _u(s): - return s - - -class TestCaseMisc(PexpectTestCase.PexpectTestCase): - - def test_isatty(self): - " Test isatty() is True after spawning process on most platforms. " - child = pexpect.spawn('cat') - if not child.isatty() and sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - assert child.isatty() - - def test_isatty_poll(self): - " Test isatty() is True after spawning process on most platforms. " - child = pexpect.spawn('cat', use_poll=True) - if not child.isatty() and sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - assert child.isatty() - - def test_read(self): - " Test spawn.read by calls of various size. " - child = pexpect.spawn('cat') - child.sendline("abc") - child.sendeof() - self.assertEqual(child.read(0), b'') - self.assertEqual(child.read(1), b'a') - self.assertEqual(child.read(1), b'b') - self.assertEqual(child.read(1), b'c') - self.assertEqual(child.read(2), b'\r\n') - remaining = child.read().replace(_CAT_EOF, b'') - self.assertEqual(remaining, b'abc\r\n') - - def test_read_poll(self): - " Test spawn.read by calls of various size. " - child = pexpect.spawn('cat', use_poll=True) - child.sendline("abc") - child.sendeof() - self.assertEqual(child.read(0), b'') - self.assertEqual(child.read(1), b'a') - self.assertEqual(child.read(1), b'b') - self.assertEqual(child.read(1), b'c') - self.assertEqual(child.read(2), b'\r\n') - remaining = child.read().replace(_CAT_EOF, b'') - self.assertEqual(remaining, b'abc\r\n') - - def test_read_poll_timeout(self): - " Test use_poll properly times out " - child = pexpect.spawn('sleep 5', use_poll=True) - with self.assertRaises(pexpect.TIMEOUT): - child.expect(pexpect.EOF, timeout=1) - - def test_readline_bin_echo(self): - " Test spawn('echo'). " - # given, - child = pexpect.spawn('echo', ['alpha', 'beta']) - - # exercise, - assert child.readline() == b'alpha beta' + child.crlf - - def test_readline(self): - " Test spawn.readline(). " - # when argument 0 is sent, nothing is returned. - # Otherwise the argument value is meaningless. - child = pexpect.spawn('cat', echo=False) - child.sendline("alpha") - child.sendline("beta") - child.sendline("gamma") - child.sendline("delta") - child.sendeof() - assert child.readline(0) == b'' - assert child.readline().rstrip() == b'alpha' - assert child.readline(1).rstrip() == b'beta' - assert child.readline(2).rstrip() == b'gamma' - assert child.readline().rstrip() == b'delta' - child.expect(pexpect.EOF) - assert not child.isalive() - assert child.exitstatus == 0 - - def test_iter(self): - " iterating over lines of spawn.__iter__(). " - child = pexpect.spawn('cat', echo=False) - child.sendline("abc") - child.sendline("123") - child.sendeof() - # Don't use ''.join() because we want to test __iter__(). - page = b'' - for line in child: - page += line - page = page.replace(_CAT_EOF, b'') - assert page == b'abc\r\n123\r\n' - - def test_readlines(self): - " reading all lines of spawn.readlines(). " - child = pexpect.spawn('cat', echo=False) - child.sendline("abc") - child.sendline("123") - child.sendeof() - page = b''.join(child.readlines()).replace(_CAT_EOF, b'') - assert page == b'abc\r\n123\r\n' - child.expect(pexpect.EOF) - assert not child.isalive() - assert child.exitstatus == 0 - - def test_write(self): - " write a character and return it in return. " - child = pexpect.spawn('cat', echo=False) - child.write('a') - child.write('\r') - self.assertEqual(child.readline(), b'a\r\n') - - def test_writelines(self): - " spawn.writelines() " - child = pexpect.spawn('cat') - # notice that much like file.writelines, we do not delimit by newline - # -- it is equivalent to calling write(''.join([args,])) - child.writelines(['abc', '123', 'xyz', '\r']) - child.sendeof() - line = child.readline() - assert line == b'abc123xyz\r\n' - - def test_eof(self): - " call to expect() after EOF is received raises pexpect.EOF " - child = pexpect.spawn('cat') - child.sendeof() - with self.assertRaises(pexpect.EOF): - child.expect('the unexpected') - - def test_with(self): - "spawn can be used as a context manager" - with pexpect.spawn(sys.executable + ' echo_w_prompt.py') as p: - p.expect('<in >') - p.sendline(b'alpha') - p.expect(b'<out>alpha') - assert p.isalive() - - assert not p.isalive() - - def test_terminate(self): - " test force terminate always succeeds (SIGKILL). " - child = pexpect.spawn('cat') - child.terminate(force=1) - assert child.terminated - - def test_sighup(self): - " validate argument `ignore_sighup=True` and `ignore_sighup=False`. " - getch = sys.executable + ' getch.py' - child = pexpect.spawn(getch, ignore_sighup=True) - child.expect('READY') - child.kill(signal.SIGHUP) - for _ in range(10): - if not child.isalive(): - self.fail('Child process should not have exited.') - time.sleep(0.1) - - child = pexpect.spawn(getch, ignore_sighup=False) - child.expect('READY') - child.kill(signal.SIGHUP) - for _ in range(10): - if not child.isalive(): - break - time.sleep(0.1) - else: - self.fail('Child process should have exited.') - - def test_bad_child_pid(self): - " assert bad condition error in isalive(). " - expect_errmsg = re.escape("isalive() encountered condition where ") - child = pexpect.spawn('cat') - child.terminate(force=1) - # Force an invalid state to test isalive - child.ptyproc.terminated = 0 - try: - with self.assertRaisesRegexp(pexpect.ExceptionPexpect, - ".*" + expect_errmsg): - child.isalive() - finally: - # Force valid state for child for __del__ - child.terminated = 1 - - def test_bad_arguments_suggest_fdpsawn(self): - " assert custom exception for spawn(int). " - expect_errmsg = "maybe you want to use fdpexpect.fdspawn" - with self.assertRaisesRegexp(pexpect.ExceptionPexpect, - ".*" + expect_errmsg): - pexpect.spawn(1) - - def test_bad_arguments_second_arg_is_list(self): - " Second argument to spawn, if used, must be only a list." - with self.assertRaises(TypeError): - pexpect.spawn('ls', '-la') - - with self.assertRaises(TypeError): - # not even a tuple, - pexpect.spawn('ls', ('-la',)) - - def test_read_after_close_raises_value_error(self): - " Calling read_nonblocking after close raises ValueError. " - # as read_nonblocking underlies all other calls to read, - # ValueError should be thrown for all forms of read. - with self.assertRaises(ValueError): - p = pexpect.spawn('cat') - p.close() - p.read_nonblocking() - - with self.assertRaises(ValueError): - p = pexpect.spawn('cat') - p.close() - p.read() - - with self.assertRaises(ValueError): - p = pexpect.spawn('cat') - p.close() - p.readline() - - with self.assertRaises(ValueError): - p = pexpect.spawn('cat') - p.close() - p.readlines() - - def test_isalive(self): - " check isalive() before and after EOF. (True, False) " - child = pexpect.spawn('cat') - assert child.isalive() is True - child.sendeof() - child.expect(pexpect.EOF) - assert child.isalive() is False - - def test_bad_type_in_expect(self): - " expect() does not accept dictionary arguments. " - child = pexpect.spawn('cat') - with self.assertRaises(TypeError): - child.expect({}) - - def test_cwd(self): - " check keyword argument `cwd=' of pexpect.run() " - tmp_dir = os.path.realpath(tempfile.gettempdir()) - default = pexpect.run('pwd') - pwd_tmp = pexpect.run('pwd', cwd=tmp_dir).rstrip() - assert default != pwd_tmp - assert tmp_dir == _u(pwd_tmp) - - def _test_searcher_as(self, searcher, plus=None): - # given, - given_words = ['alpha', 'beta', 'gamma', 'delta', ] - given_search = given_words - if searcher == pexpect.searcher_re: - given_search = [re.compile(word) for word in given_words] - if plus is not None: - given_search = given_search + [plus] - search_string = searcher(given_search) - basic_fmt = '\n {0}: {1}' - fmt = basic_fmt - if searcher is pexpect.searcher_re: - fmt = '\n {0}: re.compile({1})' - expected_output = '{0}:'.format(searcher.__name__) - idx = 0 - for word in given_words: - expected_output += fmt.format(idx, "'{0}'".format(word)) - idx += 1 - if plus is not None: - if plus == pexpect.EOF: - expected_output += basic_fmt.format(idx, 'EOF') - elif plus == pexpect.TIMEOUT: - expected_output += basic_fmt.format(idx, 'TIMEOUT') - - # exercise, - assert search_string.__str__() == expected_output - - def test_searcher_as_string(self): - " check searcher_string(..).__str__() " - self._test_searcher_as(pexpect.searcher_string) - - def test_searcher_as_string_with_EOF(self): - " check searcher_string(..).__str__() that includes EOF " - self._test_searcher_as(pexpect.searcher_string, plus=pexpect.EOF) - - def test_searcher_as_string_with_TIMEOUT(self): - " check searcher_string(..).__str__() that includes TIMEOUT " - self._test_searcher_as(pexpect.searcher_string, plus=pexpect.TIMEOUT) - - def test_searcher_re_as_string(self): - " check searcher_re(..).__str__() " - self._test_searcher_as(pexpect.searcher_re) - - def test_searcher_re_as_string_with_EOF(self): - " check searcher_re(..).__str__() that includes EOF " - self._test_searcher_as(pexpect.searcher_re, plus=pexpect.EOF) - - def test_searcher_re_as_string_with_TIMEOUT(self): - " check searcher_re(..).__str__() that includes TIMEOUT " - self._test_searcher_as(pexpect.searcher_re, plus=pexpect.TIMEOUT) - - def test_nonnative_pty_fork(self): - " test forced self.__fork_pty() and __pty_make_controlling_tty " - # given, - class spawn_ourptyfork(pexpect.spawn): - def _spawn(self, command, args=[], preexec_fn=None, - dimensions=None): - self.use_native_pty_fork = False - pexpect.spawn._spawn(self, command, args, preexec_fn, - dimensions) - - # exercise, - p = spawn_ourptyfork('cat', echo=False) - # verify, - p.sendline('abc') - p.expect('abc') - p.sendeof() - p.expect(pexpect.EOF) - assert not p.isalive() - - def test_exception_tb(self): - " test get_trace() filters away pexpect/__init__.py calls. " - p = pexpect.spawn('sleep 1') - try: - p.expect('BLAH') - except pexpect.ExceptionPexpect as e: - # get_trace should filter out frames in pexpect's own code - tb = e.get_trace() - # exercise, - assert 'raise ' not in tb - assert 'pexpect/__init__.py' not in tb - else: - assert False, "Should have raised an exception." - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(TestCaseMisc,'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_missing_command.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_missing_command.py deleted file mode 100755 index 92e47335e5a..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_missing_command.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -from . import PexpectTestCase - -class MissingCommandTestCase (PexpectTestCase.PexpectTestCase): - def testMissingCommand(self): - try: - i = pexpect.spawn ('ZXQYQZX') - except Exception: - pass - else: - self.fail('Expected an Exception.') - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(MissingCommandTestCase,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_performance.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_performance.py deleted file mode 100755 index 63778af672f..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_performance.py +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import print_function - -import unittest, time, sys -import platform -import pexpect -import re -from . import PexpectTestCase - -# This isn't exactly a unit test, but it fits in nicely with the rest of the tests. - -class PerformanceTestCase (PexpectTestCase.PexpectTestCase): - - '''Testing the performance of expect, with emphasis on wading through long - inputs. ''' - - if sys.version_info[0] >= 3: - @staticmethod - def _iter_n(n): - s = 'for n in range(1, %d+1): print(n)' % n - return s.encode('ascii') - - else: - @staticmethod - def _iter_n(n): - return 'for n in range(1, %d+1): print(n)' % n - - def plain_range(self, n): - e = pexpect.spawn('python', timeout=100) - self.assertEqual(e.expect(b'>>>'), 0) - e.sendline(self._iter_n(n)) - self.assertEqual(e.expect(br'\.{3}'), 0) - e.sendline(b'') - self.assertEqual(e.expect([b'inquisition', '%d' % n]), 1) - - def window_range(self, n): - e = pexpect.spawn('python', timeout=100) - self.assertEqual(e.expect(b'>>>'), 0) - e.sendline(self._iter_n(n)) - self.assertEqual(e.expect(r'\.{3}'), 0) - e.sendline(b'') - self.assertEqual(e.expect([b'inquisition', '%d' % n], searchwindowsize=20), 1) - - def exact_range(self, n): - e = pexpect.spawn('python', timeout=100) - self.assertEqual(e.expect_exact([b'>>>']), 0) - e.sendline(self._iter_n(n)) - self.assertEqual(e.expect_exact([b'...']), 0) - e.sendline(b'') - self.assertEqual(e.expect_exact([b'inquisition', '%d' % n],timeout=520), 1) - - def ewin_range(self, n): - e = pexpect.spawn('python', timeout=100) - self.assertEqual(e.expect_exact([b'>>>']), 0) - e.sendline(self._iter_n(n)) - self.assertEqual(e.expect_exact([b'...']), 0) - e.sendline(b'') - self.assertEqual(e.expect_exact([b'inquisition', '%d' % n], searchwindowsize=20), 1) - - def faster_range(self, n): - e = pexpect.spawn('python', timeout=100) - self.assertEqual(e.expect(b'>>>'), 0) - e.sendline(('list(range(1, %d+1))' % n).encode('ascii')) - self.assertEqual(e.expect([b'inquisition', '%d' % n]), 1) - - def test_100000(self): - if platform.python_implementation() == 'PyPy': - raise unittest.SkipTest("This test fails on PyPy because of REPL differences") - print() - start_time = time.time() - self.plain_range (100000) - print("100000 calls to plain_range:", (time.time() - start_time)) - start_time = time.time() - self.window_range(100000) - print("100000 calls to window_range:", (time.time() - start_time)) - start_time = time.time() - self.exact_range (100000) - print("100000 calls to exact_range:", (time.time() - start_time)) - start_time = time.time() - self.ewin_range (100000) - print("100000 calls to ewin_range:", (time.time() - start_time)) - start_time = time.time() - self.faster_range(100000) - print("100000 calls to faster_range:", (time.time() - start_time)) - - def test_large_stdout_stream(self): - e = pexpect.spawn('openssl rand -base64 {}'.format(1024*1024*25), searchwindowsize=1000) - resp = e.expect(['Password:', pexpect.EOF, pexpect.TIMEOUT]) - assert resp == 1 # index 1 == EOF - -if __name__ == "__main__": - unittest.main() - -suite = unittest.makeSuite(PerformanceTestCase,'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_pickling.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_pickling.py deleted file mode 100644 index 6538677075a..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_pickling.py +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env python -import pickle -import unittest - -from pexpect import ExceptionPexpect - -class PickleTest(unittest.TestCase): - def test_picking(self): - e = ExceptionPexpect('Oh noes!') - clone = pickle.loads(pickle.dumps(e)) - self.assertEqual(e.value, clone.value) - -if __name__ == '__main__': - unittest.main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_popen_spawn.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_popen_spawn.py deleted file mode 100644 index fca7493d3be..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_popen_spawn.py +++ /dev/null @@ -1,139 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import unittest -import subprocess - - -import pexpect -from pexpect.popen_spawn import PopenSpawn -from . import PexpectTestCase - - -class ExpectTestCase (PexpectTestCase.PexpectTestCase): - - def test_expect_basic(self): - p = PopenSpawn('cat', timeout=5) - p.sendline(b'Hello') - p.sendline(b'there') - p.sendline(b'Mr. Python') - p.expect(b'Hello') - p.expect(b'there') - p.expect(b'Mr. Python') - p.sendeof() - p.expect(pexpect.EOF) - - def test_expect_exact_basic(self): - p = PopenSpawn('cat', timeout=5) - p.sendline(b'Hello') - p.sendline(b'there') - p.sendline(b'Mr. Python') - p.expect_exact(b'Hello') - p.expect_exact(b'there') - p.expect_exact(b'Mr. Python') - p.sendeof() - p.expect_exact(pexpect.EOF) - - def test_expect(self): - the_old_way = subprocess.Popen(args=['ls', '-l', '/bin'], - stdout=subprocess.PIPE).communicate()[0].rstrip() - p = PopenSpawn('ls -l /bin') - the_new_way = b'' - while 1: - i = p.expect([b'\n', pexpect.EOF]) - the_new_way = the_new_way + p.before - if i == 1: - break - the_new_way += b'\n' - the_new_way = the_new_way.rstrip() - assert the_old_way == the_new_way, len(the_old_way) - len(the_new_way) - - def test_expect_exact(self): - the_old_way = subprocess.Popen(args=['ls', '-l', '/bin'], - stdout=subprocess.PIPE).communicate()[0].rstrip() - p = PopenSpawn('ls -l /bin') - the_new_way = b'' - while 1: - i = p.expect_exact([b'\n', pexpect.EOF]) - the_new_way = the_new_way + p.before - if i == 1: - break - the_new_way += b'\n' - the_new_way = the_new_way.rstrip() - - assert the_old_way == the_new_way, len(the_old_way) - len(the_new_way) - p = PopenSpawn('echo hello.?world') - i = p.expect_exact(b'.?') - self.assertEqual(p.before, b'hello') - self.assertEqual(p.after, b'.?') - - def test_expect_eof(self): - the_old_way = subprocess.Popen(args=['ls', '-l', '/bin'], - stdout=subprocess.PIPE).communicate()[0].rstrip() - p = PopenSpawn('ls -l /bin') - # This basically tells it to read everything. Same as pexpect.run() - # function. - p.expect(pexpect.EOF) - the_new_way = p.before.rstrip() - assert the_old_way == the_new_way, len(the_old_way) - len(the_new_way) - - def test_expect_timeout(self): - p = PopenSpawn('cat', timeout=5) - p.expect(pexpect.TIMEOUT) # This tells it to wait for timeout. - self.assertEqual(p.after, pexpect.TIMEOUT) - - def test_unexpected_eof(self): - p = PopenSpawn('ls -l /bin') - try: - p.expect('_Z_XY_XZ') # Probably never see this in ls output. - except pexpect.EOF: - pass - else: - self.fail('Expected an EOF exception.') - - def test_bad_arg(self): - p = PopenSpawn('cat') - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect(1) - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect([1, b'2']) - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect_exact(1) - with self.assertRaisesRegexp(TypeError, '.*must be one of'): - p.expect_exact([1, b'2']) - - def test_timeout_none(self): - p = PopenSpawn('echo abcdef', timeout=None) - p.expect('abc') - p.expect_exact('def') - p.expect(pexpect.EOF) - - def test_crlf(self): - p = PopenSpawn('echo alpha beta') - assert p.read() == b'alpha beta' + p.crlf - - def test_crlf_encoding(self): - p = PopenSpawn('echo alpha beta', encoding='utf-8') - assert p.read() == 'alpha beta' + p.crlf - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(ExpectTestCase, 'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_pxssh.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_pxssh.py deleted file mode 100644 index 5f82302ebeb..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_pxssh.py +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env python -import os -import tempfile -import unittest - -from pexpect import pxssh - -class SSHTestBase(unittest.TestCase): - def setUp(self): - self.orig_path = os.environ.get('PATH') - fakessh_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'fakessh')) - os.environ['PATH'] = fakessh_dir + \ - ((os.pathsep + self.orig_path) if self.orig_path else '') - - def tearDown(self): - if self.orig_path: - os.environ['PATH'] = self.orig_path - else: - del os.environ['PATH'] - -class PxsshTestCase(SSHTestBase): - def test_fake_ssh(self): - ssh = pxssh.pxssh() - #ssh.logfile_read = sys.stdout # DEBUG - ssh.login('server', 'me', password='s3cret') - ssh.sendline('ping') - ssh.expect('pong', timeout=10) - assert ssh.prompt(timeout=10) - ssh.logout() - - def test_wrong_pw(self): - ssh = pxssh.pxssh() - try: - ssh.login('server', 'me', password='wr0ng') - except pxssh.ExceptionPxssh: - pass - else: - assert False, 'Password should have been refused' - - def test_failed_set_unique_prompt(self): - ssh = pxssh.pxssh() - ssh.set_unique_prompt = lambda: False - try: - ssh.login('server', 'me', password='s3cret', - auto_prompt_reset=True) - except pxssh.ExceptionPxssh: - pass - else: - assert False, 'should have raised exception, pxssh.ExceptionPxssh' - - def test_connection_refused(self): - ssh = pxssh.pxssh() - try: - ssh.login('noserver', 'me', password='s3cret') - except pxssh.ExceptionPxssh: - pass - else: - assert False, 'should have raised exception, pxssh.ExceptionPxssh' - - def test_ssh_tunnel_string(self): - ssh = pxssh.pxssh(debug_command_string=True) - tunnels = { 'local': ['2424:localhost:22'],'remote': ['2525:localhost:22'], - 'dynamic': [8888] } - confirmation_strings = 0 - confirmation_array = ['-R 2525:localhost:22','-L 2424:localhost:22','-D 8888'] - string = ssh.login('server', 'me', password='s3cret', ssh_tunnels=tunnels) - for confirmation in confirmation_array: - if confirmation in string: - confirmation_strings+=1 - - if confirmation_strings!=len(confirmation_array): - assert False, 'String generated from tunneling is incorrect.' - - def test_remote_ssh_tunnel_string(self): - ssh = pxssh.pxssh(debug_command_string=True) - tunnels = { 'local': ['2424:localhost:22'],'remote': ['2525:localhost:22'], - 'dynamic': [8888] } - confirmation_strings = 0 - confirmation_array = ['-R 2525:localhost:22','-L 2424:localhost:22','-D 8888'] - string = ssh.login('server', 'me', password='s3cret', ssh_tunnels=tunnels, spawn_local_ssh=False) - for confirmation in confirmation_array: - if confirmation in string: - confirmation_strings+=1 - - if confirmation_strings!=len(confirmation_array): - assert False, 'String generated from remote tunneling is incorrect.' - - def test_ssh_config_passing_string(self): - ssh = pxssh.pxssh(debug_command_string=True) - (temp_file,config_path) = tempfile.mkstemp() - string = ssh.login('server', 'me', password='s3cret', spawn_local_ssh=False, ssh_config=config_path) - if not '-F '+config_path in string: - assert False, 'String generated from SSH config passing is incorrect.' - - def test_ssh_key_string(self): - ssh = pxssh.pxssh(debug_command_string=True) - confirmation_strings = 0 - confirmation_array = [' -A'] - string = ssh.login('server', 'me', password='s3cret', ssh_key=True) - for confirmation in confirmation_array: - if confirmation in string: - confirmation_strings+=1 - - if confirmation_strings!=len(confirmation_array): - assert False, 'String generated from forcing the SSH agent sock is incorrect.' - - confirmation_strings = 0 - (temp_file,ssh_key) = tempfile.mkstemp() - confirmation_array = [' -i '+ssh_key] - string = ssh.login('server', 'me', password='s3cret', ssh_key=ssh_key) - for confirmation in confirmation_array: - if confirmation in string: - confirmation_strings+=1 - - if confirmation_strings!=len(confirmation_array): - assert False, 'String generated from adding an SSH key is incorrect.' - - -if __name__ == '__main__': - unittest.main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_replwrap.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_replwrap.py deleted file mode 100644 index d0fe8e21753..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_replwrap.py +++ /dev/null @@ -1,114 +0,0 @@ -import platform -import unittest -import re -import os - -import pexpect -from pexpect import replwrap - -skip_pypy = "This test fails on PyPy because of REPL differences" - - -class REPLWrapTestCase(unittest.TestCase): - def setUp(self): - super(REPLWrapTestCase, self).setUp() - self.save_ps1 = os.getenv('PS1', r'\$') - self.save_ps2 = os.getenv('PS2', '>') - os.putenv('PS1', r'\$') - os.putenv('PS2', '>') - - def tearDown(self): - super(REPLWrapTestCase, self).tearDown() - os.putenv('PS1', self.save_ps1) - os.putenv('PS2', self.save_ps2) - - def test_bash(self): - bash = replwrap.bash() - res = bash.run_command("time") - assert 'real' in res, res - - def test_pager_as_cat(self): - " PAGER is set to cat, to prevent timeout in ``man sleep``. " - bash = replwrap.bash() - res = bash.run_command('man sleep', timeout=5) - assert 'SLEEP' in res, res - - def test_bash_env(self): - """env, which displays PS1=..., should not mess up finding the prompt. - """ - bash = replwrap.bash() - res = bash.run_command("env") - self.assertIn('PS1', res) - res = bash.run_command("echo $HOME") - assert res.startswith('/'), res - - def test_long_running_multiline(self): - " ensure the default timeout is used for multi-line commands. " - bash = replwrap.bash() - res = bash.run_command("echo begin\r\nsleep 2\r\necho done") - self.assertEqual(res.strip().splitlines(), ['begin', 'done']) - - def test_long_running_continuation(self): - " also ensure timeout when used within continuation prompts. " - bash = replwrap.bash() - # The two extra '\\' in the following expression force a continuation - # prompt: - # $ echo begin\ - # + ; - # $ sleep 2 - # $ echo done - res = bash.run_command("echo begin\\\n;sleep 2\r\necho done") - self.assertEqual(res.strip().splitlines(), ['begin', 'done']) - - def test_multiline(self): - bash = replwrap.bash() - res = bash.run_command("echo '1 2\n3 4'") - self.assertEqual(res.strip().splitlines(), ['1 2', '3 4']) - - # Should raise ValueError if input is incomplete - try: - bash.run_command("echo '5 6") - except ValueError: - pass - else: - assert False, "Didn't raise ValueError for incomplete input" - - # Check that the REPL was reset (SIGINT) after the incomplete input - res = bash.run_command("echo '1 2\n3 4'") - self.assertEqual(res.strip().splitlines(), ['1 2', '3 4']) - - def test_existing_spawn(self): - child = pexpect.spawn("bash", timeout=5, echo=False, encoding='utf-8') - repl = replwrap.REPLWrapper(child, re.compile('[$#]'), - "PS1='{0}' PS2='{1}' " - "PROMPT_COMMAND=''") - - res = repl.run_command("echo $HOME") - assert res.startswith('/'), res - - def test_python(self): - if platform.python_implementation() == 'PyPy': - raise unittest.SkipTest(skip_pypy) - - p = replwrap.python() - res = p.run_command('4+7') - assert res.strip() == '11' - - res = p.run_command('for a in range(3): print(a)\n') - assert res.strip().splitlines() == ['0', '1', '2'] - - def test_no_change_prompt(self): - if platform.python_implementation() == 'PyPy': - raise unittest.SkipTest(skip_pypy) - - child = pexpect.spawn('python', echo=False, timeout=5, encoding='utf-8') - # prompt_change=None should mean no prompt change - py = replwrap.REPLWrapper(child, u">>> ", prompt_change=None, - continuation_prompt=u"... ") - assert py.prompt == ">>> " - - res = py.run_command("for a in range(3): print(a)\n") - assert res.strip().splitlines() == ['0', '1', '2'] - -if __name__ == '__main__': - unittest.main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_repr.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_repr.py deleted file mode 100644 index ac337160d7e..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_repr.py +++ /dev/null @@ -1,37 +0,0 @@ -""" Test __str__ methods. """ -import pexpect - -from . import PexpectTestCase - - -class TestCaseMisc(PexpectTestCase.PexpectTestCase): - - def test_str_spawnu(self): - """ Exercise spawnu.__str__() """ - # given, - p = pexpect.spawnu('cat') - # exercise, - value = str(p) - # verify - assert isinstance(value, str) - - def test_str_spawn(self): - """ Exercise spawn.__str__() """ - # given, - p = pexpect.spawn('cat') - # exercise, - value = str(p) - # verify - assert isinstance(value, str) - - def test_str_before_spawn(self): - """ Exercise derived spawn.__str__() """ - # given, - child = pexpect.spawn(None, None) - child.read_nonblocking = lambda size, timeout: b'' - try: - child.expect('alpha', timeout=0.1) - except pexpect.TIMEOUT as e: - str(e) # Smoketest - else: - assert False, 'TIMEOUT exception expected. No exception raised.' diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_run.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_run.py deleted file mode 100755 index 1b3c92ff602..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_run.py +++ /dev/null @@ -1,191 +0,0 @@ -#!/usr/bin/env python -# encoding: utf-8 -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -import subprocess -import tempfile -import sys -import os -from . import PexpectTestCase - -unicode_type = str if pexpect.PY3 else unicode - - -def timeout_callback(values): - if values["event_count"] > 3: - return 1 - return 0 - - -def function_events_callback(values): - try: - previous_echoed = (values["child_result_list"][-1] - .decode().split("\n")[-2].strip()) - if previous_echoed.endswith("stage-1"): - return "echo stage-2\n" - elif previous_echoed.endswith("stage-2"): - return "echo stage-3\n" - elif previous_echoed.endswith("stage-3"): - return "exit\n" - else: - raise Exception("Unexpected output {0}".format(previous_echoed)) - except IndexError: - return "echo stage-1\n" - - -class RunFuncTestCase(PexpectTestCase.PexpectTestCase): - runfunc = staticmethod(pexpect.run) - cr = b'\r' - empty = b'' - prep_subprocess_out = staticmethod(lambda x: x) - - def setUp(self): - fd, self.rcfile = tempfile.mkstemp() - os.write(fd, b'PS1=GO: \n') - os.close(fd) - super(RunFuncTestCase, self).setUp() - - def tearDown(self): - os.unlink(self.rcfile) - super(RunFuncTestCase, self).tearDown() - - def test_run_exit(self): - (data, exitstatus) = self.runfunc('python exit1.py', withexitstatus=1) - assert exitstatus == 1, "Exit status of 'python exit1.py' should be 1." - - def test_run(self): - the_old_way = subprocess.Popen( - args=['uname', '-m', '-n'], - stdout=subprocess.PIPE - ).communicate()[0].rstrip() - - (the_new_way, exitstatus) = self.runfunc( - 'uname -m -n', withexitstatus=1) - the_new_way = the_new_way.replace(self.cr, self.empty).rstrip() - - self.assertEqual(self.prep_subprocess_out(the_old_way), the_new_way) - self.assertEqual(exitstatus, 0) - - def test_run_callback(self): - # TODO it seems like this test could block forever if run fails... - events = {pexpect.TIMEOUT: timeout_callback} - self.runfunc("cat", timeout=1, events=events) - - def test_run_bad_exitstatus(self): - (the_new_way, exitstatus) = self.runfunc( - 'ls -l /najoeufhdnzkxjd', withexitstatus=1) - assert exitstatus != 0 - - def test_run_event_as_string(self): - events = [ - # second match on 'abc', echo 'def' - ('abc\r\n.*GO:', 'echo "def"\n'), - # final match on 'def': exit - ('def\r\n.*GO:', 'exit\n'), - # first match on 'GO:' prompt, echo 'abc' - ('GO:', 'echo "abc"\n') - ] - - (data, exitstatus) = pexpect.run( - 'bash --rcfile {0}'.format(self.rcfile), - withexitstatus=True, - events=events, - timeout=10) - assert exitstatus == 0 - - def test_run_event_as_function(self): - events = [ - ('GO:', function_events_callback) - ] - - (data, exitstatus) = pexpect.run( - 'bash --rcfile {0}'.format(self.rcfile), - withexitstatus=True, - events=events, - timeout=10) - assert exitstatus == 0 - - def test_run_event_as_method(self): - events = [ - ('GO:', self._method_events_callback) - ] - - (data, exitstatus) = pexpect.run( - 'bash --rcfile {0}'.format(self.rcfile), - withexitstatus=True, - events=events, - timeout=10) - assert exitstatus == 0 - - def test_run_event_typeerror(self): - events = [('GO:', -1)] - with self.assertRaises(TypeError): - pexpect.run('bash --rcfile {0}'.format(self.rcfile), - withexitstatus=True, - events=events, - timeout=10) - - def _method_events_callback(self, values): - try: - previous_echoed = (values["child_result_list"][-1].decode() - .split("\n")[-2].strip()) - if previous_echoed.endswith("foo1"): - return "echo foo2\n" - elif previous_echoed.endswith("foo2"): - return "echo foo3\n" - elif previous_echoed.endswith("foo3"): - return "exit\n" - else: - raise Exception("Unexpected output {0!r}" - .format(previous_echoed)) - except IndexError: - return "echo foo1\n" - - -class RunUnicodeFuncTestCase(RunFuncTestCase): - runfunc = staticmethod(pexpect.runu) - cr = b'\r'.decode('ascii') - empty = b''.decode('ascii') - prep_subprocess_out = staticmethod(lambda x: x.decode('utf-8', 'replace')) - - def test_run_unicode(self): - if pexpect.PY3: - char = chr(254) # þ - pattern = '<in >' - else: - char = unichr(254) # analysis:ignore - pattern = '<in >'.decode('ascii') - - def callback(values): - if values['event_count'] == 0: - return char + '\n' - else: - return True # Stop the child process - - output = pexpect.runu(sys.executable + ' echo_w_prompt.py', - env={'PYTHONIOENCODING': 'utf-8'}, - events={pattern: callback}) - assert isinstance(output, unicode_type), type(output) - assert ('<out>' + char) in output, output - -if __name__ == '__main__': - unittest.main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_run_out_of_pty.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_run_out_of_pty.py deleted file mode 100755 index 309014761df..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_run_out_of_pty.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -from . import PexpectTestCase - -class ExpectTestCase(PexpectTestCase.PexpectTestCase): - # This takes too long to run and isn't all that interesting of a test. - def OFF_test_run_out_of_pty (self): - '''This assumes that the tested platform has < 10000 pty devices. - This test currently does not work under Solaris. - Under Solaris it runs out of file descriptors first and - ld.so starts to barf: - ld.so.1: pt_chmod: fatal: /usr/lib/libc.so.1: Too many open files - ''' - plist=[] - for count in range (0,10000): - try: - plist.append (pexpect.spawn('ls -l')) - except pexpect.ExceptionPexpect: - for c in range (0, count): - plist[c].close() - return - except Exception: - err = sys.exc_info()[1] - self.fail ('Expected ExceptionPexpect. ' + str(err)) - self.fail ('Could not run out of pty devices. This may be OK.') - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(ExpectTestCase,'test') - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_screen.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_screen.py deleted file mode 100755 index 2429e57a90a..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_screen.py +++ /dev/null @@ -1,287 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -import sys - -from pexpect import screen -import unittest -from . import PexpectTestCase - -PY3 = (sys.version_info[0] >= 3) - -fill1_target='XXXXXXXXXX\n' + \ -'XOOOOOOOOX\n' + \ -'XO::::::OX\n' + \ -'XO:oooo:OX\n' + \ -'XO:o..o:OX\n' + \ -'XO:o..o:OX\n' + \ -'XO:oooo:OX\n' + \ -'XO::::::OX\n' + \ -'XOOOOOOOOX\n' + \ -'XXXXXXXXXX' -fill2_target = 'XXXXXXXXXXX\n' + \ -'XOOOOOOOOOX\n' + \ -'XO:::::::OX\n' + \ -'XO:ooooo:OX\n' + \ -'XO:o...o:OX\n' + \ -'XO:o.+.o:OX\n' + \ -'XO:o...o:OX\n' + \ -'XO:ooooo:OX\n' + \ -'XO:::::::OX\n' + \ -'XOOOOOOOOOX\n' + \ -'XXXXXXXXXXX' -put_target = '\\.3.5.7.9/\n' + \ -'.........2\n' + \ -'3.........\n' + \ -'.........4\n' + \ -'5...\\/....\n' + \ -'..../\\...6\n' + \ -'7.........\n' + \ -'.........8\n' + \ -'9.........\n' + \ -'/2.4.6.8.\\' -scroll_target = '\\.3.5.7.9/\n' + \ -'\\.3.5.7.9/\n' + \ -'\\.3.5.7.9/\n' + \ -'\\.3.5.7.9/\n' + \ -'5...\\/....\n' + \ -'..../\\...6\n' + \ -'/2.4.6.8.\\\n' + \ -'/2.4.6.8.\\\n' + \ -'/2.4.6.8.\\\n' + \ -'/2.4.6.8.\\' -insert_target = 'ZXZZZZZZXZ\n' +\ -'.........2\n' +\ -'3.........\n' +\ -'.........4\n' +\ -'Z5...\\/...\n' +\ -'..../Z\\...\n' +\ -'7.........\n' +\ -'.........8\n' +\ -'9.........\n' +\ -'ZZ/2.4.6ZZ' -get_region_target = ['......', '.\\/...', './\\...', '......'] - -unicode_box_unicode_result = u'\u2554\u2557\n\u255A\u255D' -unicode_box_pretty_result = u'''\ -+--+ -|\u2554\u2557| -|\u255A\u255D| -+--+ -''' -unicode_box_ascii_bytes_result = b'??\n??' -unicode_box_cp437_bytes_result = b'\xc9\xbb\n\xc8\xbc' -unicode_box_utf8_bytes_result = b'\xe2\x95\x94\xe2\x95\x97\n\xe2\x95\x9a\xe2\x95\x9d' - -class screenTestCase (PexpectTestCase.PexpectTestCase): - def make_screen_with_put (self): - s = screen.screen(10,10) - s.fill ('.') - for r in range (1,s.rows + 1): - if r % 2: - s.put_abs (r, 1, str(r)) - else: - s.put_abs (r, s.cols, str(r)) - for c in range (1,s.cols + 1): - if c % 2: - s.put_abs (1, c, str(c)) - else: - s.put_abs (s.rows, c, str(c)) - s.put_abs(1,1, '\\') - s.put_abs(1,s.cols, '/') - s.put_abs(s.rows,1,'/') - s.put_abs(s.rows, s.cols, '\\') - s.put_abs(5,5,'\\') - s.put_abs(5,6,'/') - s.put_abs(6,5,'/') - s.put_abs(6,6,'\\') - return s - - def test_fill (self): - s = screen.screen (10,10) - s.fill_region (10,1,1,10,'X') - s.fill_region (2,2,9,9,'O') - s.fill_region (8,8,3,3,':') - s.fill_region (4,7,7,4,'o') - s.fill_region (6,5,5,6,'.') - assert str(s) == fill1_target - - s = screen.screen (11,11) - s.fill_region (1,1,11,11,'X') - s.fill_region (2,2,10,10,'O') - s.fill_region (9,9,3,3,':') - s.fill_region (4,8,8,4,'o') - s.fill_region (7,5,5,7,'.') - s.fill_region (6,6,6,6,'+') - assert str(s) == fill2_target - def test_put (self): - s = self.make_screen_with_put() - assert str(s) == put_target - def test_get_region (self): - s = self.make_screen_with_put() - r = s.get_region (4,4,7,9) - assert r == get_region_target - - def test_cursor_save (self): - s = self.make_screen_with_put() - s.cursor_home (5,5) - c = s.get() - s.cursor_save() - s.cursor_home() - s.cursor_forward() - s.cursor_down() - s.cursor_unsave() - assert s.cur_r == 5 and s.cur_c == 5 - assert c == s.get() - def test_scroll (self): - s = self.make_screen_with_put() - s.scroll_screen_rows (1,4) - s.scroll_down(); s.scroll_down(); s.scroll_down() - s.scroll_down(); s.scroll_down(); s.scroll_down() - s.scroll_screen_rows (7,10) - s.scroll_up(); s.scroll_up(); s.scroll_up() - s.scroll_up(); s.scroll_up(); s.scroll_up() - assert str(s) == scroll_target - def test_insert (self): - s = self.make_screen_with_put() - s.insert_abs (10,1,'Z') - s.insert_abs (1,1,'Z') - s.insert_abs (1,1,'Z') - s.insert_abs (1,1,'Z') - s.insert_abs (1,1,'Z') - s.insert_abs (1,1,'Z') - s.insert_abs (10,1,'Z') - s.insert_abs (1,1,'Z') - s.insert_abs (1,1,'Z') - s.insert_abs (5,1,'Z') - s.insert_abs (6,6,'Z') - s.cursor_home (1,1) # Also test relative insert. - s.insert ('Z') - s.insert ('Z') - s.insert ('Z') - s.insert ('Z') - s.insert_abs (1,8,'X') - s.insert_abs (1,2,'X') - s.insert_abs (10,9,'Z') - s.insert_abs (10,9,'Z') - assert str(s) == insert_target - - def make_screen_with_box_unicode(self, *args, **kwargs): - '''Creates a screen containing a box drawn using double-line - line drawing characters. The characters are fed in as - unicode. ''' - s = screen.screen (2,2,*args,**kwargs) - s.put_abs (1,1,u'\u2554') - s.put_abs (1,2,u'\u2557') - s.put_abs (2,1,u'\u255A') - s.put_abs (2,2,u'\u255D') - return s - - def make_screen_with_box_cp437(self, *args, **kwargs): - '''Creates a screen containing a box drawn using double-line - line drawing characters. The characters are fed in as - CP437. ''' - s = screen.screen (2,2,*args,**kwargs) - s.put_abs (1,1,b'\xc9') - s.put_abs (1,2,b'\xbb') - s.put_abs (2,1,b'\xc8') - s.put_abs (2,2,b'\xbc') - return s - - def make_screen_with_box_utf8(self, *args, **kwargs): - '''Creates a screen containing a box drawn using double-line - line drawing characters. The characters are fed in as - UTF-8. ''' - s = screen.screen (2,2,*args,**kwargs) - s.put_abs (1,1,b'\xe2\x95\x94') - s.put_abs (1,2,b'\xe2\x95\x97') - s.put_abs (2,1,b'\xe2\x95\x9a') - s.put_abs (2,2,b'\xe2\x95\x9d') - return s - - def test_unicode_ascii (self): - # With the default encoding set to ASCII, we should still be - # able to feed in unicode strings and get them back out: - s = self.make_screen_with_box_unicode('ascii') - if PY3: - assert str(s) == unicode_box_unicode_result - else: - assert unicode(s) == unicode_box_unicode_result - # And we should still get something for Python 2 str(), though - # it might not be very useful - str(s) - - assert s.pretty() == unicode_box_pretty_result - - def test_decoding_errors(self): - # With strict error handling, it should reject bytes it can't decode - with self.assertRaises(UnicodeDecodeError): - self.make_screen_with_box_cp437('ascii', 'strict') - - # replace should turn them into unicode replacement characters, U+FFFD - s = self.make_screen_with_box_cp437('ascii', 'replace') - expected = u'\ufffd\ufffd\n\ufffd\ufffd' - if PY3: - assert str(s) == expected - else: - assert unicode(s) == expected - - def test_unicode_cp437 (self): - # Verify decoding from and re-encoding to CP437. - s = self.make_screen_with_box_cp437('cp437','strict') - if PY3: - assert str(s) == unicode_box_unicode_result - else: - assert unicode(s) == unicode_box_unicode_result - assert str(s) == unicode_box_cp437_bytes_result - assert s.pretty() == unicode_box_pretty_result - - def test_unicode_utf8 (self): - # Verify decoding from and re-encoding to UTF-8. - s = self.make_screen_with_box_utf8('utf-8','strict') - if PY3: - assert str(s) == unicode_box_unicode_result - else: - assert unicode(s) == unicode_box_unicode_result - assert str(s) == unicode_box_utf8_bytes_result - assert s.pretty() == unicode_box_pretty_result - - def test_no_bytes(self): - s = screen.screen(2, 2, encoding=None) - s.put_abs(1, 1, u'A') - s.put_abs(2, 2, u'D') - - with self.assertRaises(TypeError): - s.put_abs(1, 2, b'B') - - if PY3: - assert str(s) == u'A \n D' - else: - assert unicode(s) == u'A \n D' - # This will still work if it's limited to ascii - assert str(s) == b'A \n D' - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(screenTestCase,'test') - - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_socket.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_socket.py deleted file mode 100644 index 21648f4a0f6..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_socket.py +++ /dev/null @@ -1,270 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -from pexpect import fdpexpect -import unittest -from . import PexpectTestCase -import multiprocessing -import os -import signal -import socket -import time -import errno - - -class SocketServerError(Exception): - pass - - -class ExpectTestCase(PexpectTestCase.PexpectTestCase): - - def setUp(self): - print(self.id()) - PexpectTestCase.PexpectTestCase.setUp(self) - self.host = '127.0.0.1' - self.port = 49152 + 10000 - self.motd = b"""\ ------------------------------------------------------------------------------- -* Welcome to the SOCKET UNIT TEST code! * ------------------------------------------------------------------------------- -* * -* This unit test code is our best effort at testing the ability of the * -* pexpect library to handle sockets. We need some text to test buffer size * -* handling. * -* * -* A page is 1024 bytes or 1K. 80 x 24 = 1920. So a standard terminal window * -* contains more than one page. We actually want more than a page for our * -* tests. * -* * -* This is the twelfth line, and we need 24. So we need a few more paragraphs.* -* We can keep them short and just put lines between them. * -* * -* The 80 x 24 terminal size comes from the ancient past when computers were * -* only able to display text in cuneiform writing. * -* * -* The cunieform writing system used the edge of a reed to make marks on clay * -* tablets. * -* * -* It was the forerunner of the style of handwriting used by doctors to write * -* prescriptions. Thus the name: pre (before) script (writing) ion (charged * -* particle). * ------------------------------------------------------------------------------- -""".replace(b'\n', b'\n\r') + b"\r\n" - self.prompt1 = b'Press Return to continue:' - self.prompt2 = b'Rate this unit test>' - self.prompt3 = b'Press X to exit:' - self.enter = b'\r\n' - self.exit = b'X\r\n' - self.server_up = multiprocessing.Event() - self.server_process = multiprocessing.Process(target=self.socket_server, args=(self.server_up,)) - self.server_process.daemon = True - self.server_process.start() - counter = 0 - while not self.server_up.is_set(): - time.sleep(0.250) - counter += 1 - if counter > (10 / 0.250): - raise SocketServerError("Could not start socket server") - - def tearDown(self): - os.kill(self.server_process.pid, signal.SIGINT) - self.server_process.join(timeout=5.0) - PexpectTestCase.PexpectTestCase.tearDown(self) - - def socket_server(self, server_up): - sock = None - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - sock.bind((self.host, self.port)) - sock.listen(5) - server_up.set() - while True: - (conn, addr) = sock.accept() - conn.send(self.motd) - conn.send(self.prompt1) - result = conn.recv(1024) - if result != self.enter: - break - conn.send(self.prompt2) - result = conn.recv(1024) - if result != self.enter: - break - conn.send(self.prompt3) - result = conn.recv(1024) - if result.startswith(self.exit[0]): - conn.shutdown(socket.SHUT_RDWR) - conn.close() - except KeyboardInterrupt: - pass - if sock is not None: - try: - sock.shutdown(socket.SHUT_RDWR) - sock.close() - except socket.error: - pass - exit(0) - - def socket_fn(self, timed_out, all_read): - result = 0 - try: - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock, timeout=10) - # Get all data from server - session.read_nonblocking(size=4096) - all_read.set() - # This read should timeout - session.read_nonblocking(size=4096) - except pexpect.TIMEOUT: - timed_out.set() - result = errno.ETIMEDOUT - exit(result) - - def test_socket(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock.fileno(), timeout=10) - session.expect(self.prompt1) - self.assertEqual(session.before, self.motd) - session.send(self.enter) - session.expect(self.prompt2) - session.send(self.enter) - session.expect(self.prompt3) - session.send(self.exit) - session.expect(pexpect.EOF) - self.assertEqual(session.before, b'') - - def test_socket_with_write(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock.fileno(), timeout=10) - session.expect(self.prompt1) - self.assertEqual(session.before, self.motd) - session.write(self.enter) - session.expect(self.prompt2) - session.write(self.enter) - session.expect(self.prompt3) - session.write(self.exit) - session.expect(pexpect.EOF) - self.assertEqual(session.before, b'') - - def test_not_int(self): - with self.assertRaises(pexpect.ExceptionPexpect): - session = fdpexpect.fdspawn('bogus', timeout=10) - - def test_not_file_descriptor(self): - with self.assertRaises(pexpect.ExceptionPexpect): - session = fdpexpect.fdspawn(-1, timeout=10) - - def test_timeout(self): - with self.assertRaises(pexpect.TIMEOUT): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock, timeout=10) - session.expect(b'Bogus response') - - def test_interrupt(self): - timed_out = multiprocessing.Event() - all_read = multiprocessing.Event() - test_proc = multiprocessing.Process(target=self.socket_fn, args=(timed_out, all_read)) - test_proc.daemon = True - test_proc.start() - while not all_read.is_set(): - time.sleep(1.0) - os.kill(test_proc.pid, signal.SIGWINCH) - while not timed_out.is_set(): - time.sleep(1.0) - test_proc.join(timeout=5.0) - self.assertEqual(test_proc.exitcode, errno.ETIMEDOUT) - - def test_multiple_interrupts(self): - timed_out = multiprocessing.Event() - all_read = multiprocessing.Event() - test_proc = multiprocessing.Process(target=self.socket_fn, args=(timed_out, all_read)) - test_proc.daemon = True - test_proc.start() - while not all_read.is_set(): - time.sleep(1.0) - while not timed_out.is_set(): - os.kill(test_proc.pid, signal.SIGWINCH) - time.sleep(1.0) - test_proc.join(timeout=5.0) - self.assertEqual(test_proc.exitcode, errno.ETIMEDOUT) - - def test_maxread(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock.fileno(), timeout=10) - session.maxread = 1100 - session.expect(self.prompt1) - self.assertEqual(session.before, self.motd) - session.send(self.enter) - session.expect(self.prompt2) - session.send(self.enter) - session.expect(self.prompt3) - session.send(self.exit) - session.expect(pexpect.EOF) - self.assertEqual(session.before, b'') - - def test_fd_isalive(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock.fileno(), timeout=10) - assert session.isalive() - sock.close() - assert not session.isalive(), "Should not be alive after close()" - - def test_fd_isalive_poll(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock.fileno(), timeout=10, use_poll=True) - assert session.isalive() - sock.close() - assert not session.isalive(), "Should not be alive after close()" - - def test_fd_isatty(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock.fileno(), timeout=10) - assert not session.isatty() - session.close() - - def test_fd_isatty_poll(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock.fileno(), timeout=10, use_poll=True) - assert not session.isatty() - session.close() - - def test_fileobj(self): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.connect((self.host, self.port)) - session = fdpexpect.fdspawn(sock, timeout=10) # Should get the fileno from the socket - session.expect(self.prompt1) - session.close() - assert not session.isalive() - session.close() # Smoketest - should be able to call this again - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(ExpectTestCase, 'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_timeout_pattern.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_timeout_pattern.py deleted file mode 100755 index 5f610ef03ed..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_timeout_pattern.py +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -from __future__ import with_statement # bring 'with' stmt to py25 -import pexpect -import unittest -from . import PexpectTestCase -import sys - -class Exp_TimeoutTestCase(PexpectTestCase.PexpectTestCase): - def test_matches_exp_timeout (self): - '''This tests that we can raise and catch TIMEOUT. - ''' - try: - raise pexpect.TIMEOUT("TIMEOUT match test") - except pexpect.TIMEOUT: - pass - #print "Correctly caught TIMEOUT when raising TIMEOUT." - else: - self.fail('TIMEOUT not caught by an except TIMEOUT clause.') - - def test_pattern_printout (self): - '''Verify that a TIMEOUT returns the proper patterns it is trying to match against. - Make sure it is returning the pattern from the correct call.''' - try: - p = pexpect.spawn('cat') - p.sendline('Hello') - p.expect('Hello') - p.expect('Goodbye',timeout=5) - except pexpect.TIMEOUT: - assert p.match_index == None - else: - self.fail("Did not generate a TIMEOUT exception.") - - def test_exp_timeout_notThrown (self): - '''Verify that a TIMEOUT is not thrown when we match what we expect.''' - try: - p = pexpect.spawn('cat') - p.sendline('Hello') - p.expect('Hello') - except pexpect.TIMEOUT: - self.fail("TIMEOUT caught when it shouldn't be raised because we match the proper pattern.") - - def test_stacktraceMunging (self): - '''Verify that the stack trace returned with a TIMEOUT instance does not contain references to pexpect.''' - try: - p = pexpect.spawn('cat') - p.sendline('Hello') - p.expect('Goodbye',timeout=5) - except pexpect.TIMEOUT: - err = sys.exc_info()[1] - if err.get_trace().count("pexpect/__init__.py") != 0: - self.fail("The TIMEOUT get_trace() referenced pexpect.py. " - "It should only reference the caller.\n" + err.get_trace()) - - def test_correctStackTrace (self): - '''Verify that the stack trace returned with a TIMEOUT instance correctly handles function calls.''' - def nestedFunction (spawnInstance): - spawnInstance.expect("junk", timeout=3) - - try: - p = pexpect.spawn('cat') - p.sendline('Hello') - nestedFunction(p) - except pexpect.TIMEOUT: - err = sys.exc_info()[1] - if err.get_trace().count("nestedFunction") == 0: - self.fail("The TIMEOUT get_trace() did not show the call " - "to the nestedFunction function.\n" + str(err) + "\n" - + err.get_trace()) - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(Exp_TimeoutTestCase,'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_unicode.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_unicode.py deleted file mode 100644 index 9b5b988a497..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_unicode.py +++ /dev/null @@ -1,187 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -import platform -import tempfile -import sys -import time - -import pexpect -import unittest -from . import PexpectTestCase - -# the program cat(1) may display ^D\x08\x08 when \x04 (EOF, Ctrl-D) is sent -_CAT_EOF = '^D\x08\x08' - -class UnicodeTests(PexpectTestCase.PexpectTestCase): - def test_expect_basic (self): - p = pexpect.spawnu('cat') - p.sendline('Hello') - p.sendline('there') - p.sendline('Mr. þython') # þ is more like th than p, but never mind - p.expect('Hello') - p.expect('there') - p.expect('Mr. þython') - p.sendeof () - p.expect (pexpect.EOF) - - def test_expect_exact_basic (self): - p = pexpect.spawnu('cat') - p.sendline('Hello') - p.sendline('there') - p.sendline('Mr. þython') - p.expect_exact('Hello') - p.expect_exact('there') - p.expect_exact('Mr. þython') - p.sendeof() - p.expect_exact (pexpect.EOF) - - def test_expect_setecho_toggle(self): - '''This tests that echo may be toggled off. - ''' - p = pexpect.spawnu('cat', timeout=5) - try: - self._expect_echo_toggle_off(p) - except IOError: - if sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - raise - self._expect_echo_toggle_on(p) - - def test_expect_echo_exact (self): - '''Like test_expect_echo(), but using expect_exact(). - ''' - p = pexpect.spawnu('cat', timeout=5) - p.expect = p.expect_exact - self._expect_echo(p) - - def test_expect_setecho_toggle_exact(self): - p = pexpect.spawnu('cat', timeout=5) - p.expect = p.expect_exact - try: - self._expect_echo_toggle_off(p) - except IOError: - if sys.platform.lower().startswith('sunos'): - if hasattr(unittest, 'SkipTest'): - raise unittest.SkipTest("Not supported on this platform.") - return 'skip' - raise - self._expect_echo_toggle_on(p) - - def _expect_echo (self, p): - p.sendline('1234') # Should see this twice (once from tty echo and again from cat). - index = p.expect (['1234', 'abcdé', 'wxyz', pexpect.EOF, pexpect.TIMEOUT]) - assert index == 0, (index, p.before) - index = p.expect (['1234', 'abcdé', 'wxyz', pexpect.EOF]) - assert index == 0, index - - def _expect_echo_toggle_off(self, p): - p.setecho(0) # Turn off tty echo - p.waitnoecho() - p.sendline('abcdé') # Now, should only see this once. - p.sendline('wxyz') # Should also be only once. - index = p.expect ([pexpect.EOF,pexpect.TIMEOUT, 'abcdé', 'wxyz', '1234']) - assert index == 2, index - index = p.expect ([pexpect.EOF, 'abcdé', 'wxyz', '7890']) - assert index == 2, index - - def _expect_echo_toggle_on(self, p): - p.setecho(1) # Turn on tty echo - time.sleep(0.2) # there is no waitecho() ! - p.sendline('7890') # Should see this twice. - index = p.expect ([pexpect.EOF, 'abcdé', 'wxyz', '7890']) - assert index == 3, index - index = p.expect ([pexpect.EOF, 'abcdé', 'wxyz', '7890']) - assert index == 3, index - p.sendeof() - - def test_log_unicode(self): - msg = "abcΩ÷" - filename_send = tempfile.mktemp() - filename_read = tempfile.mktemp() - p = pexpect.spawnu('cat') - if platform.python_version_tuple() < ('3', '0', '0'): - import codecs - def open(fname, mode, **kwargs): - if 'newline' in kwargs: - del kwargs['newline'] - return codecs.open(fname, mode, **kwargs) - else: - import io - open = io.open - - p.logfile_send = open(filename_send, 'w', encoding='utf-8') - p.logfile_read = open(filename_read, 'w', encoding='utf-8') - p.sendline(msg) - p.sendeof() - p.expect(pexpect.EOF) - p.close() - p.logfile_send.close() - p.logfile_read.close() - - # ensure the 'send' log is correct, - with open(filename_send, 'r', encoding='utf-8') as f: - self.assertEqual(f.read(), msg + '\n\x04') - - # ensure the 'read' log is correct, - with open(filename_read, 'r', encoding='utf-8', newline='') as f: - output = f.read().replace(_CAT_EOF, '') - self.assertEqual(output, (msg + '\r\n')*2 ) - - - def test_spawn_expect_ascii_unicode(self): - # A bytes-based spawn should be able to handle ASCII-only unicode, for - # backwards compatibility. - p = pexpect.spawn('cat') - p.sendline('Camelot') - p.expect('Camelot') - - p.sendline('Aargh') - p.sendline('Aårgh') - p.expect_exact('Aargh') - - p.sendeof() - p.expect(pexpect.EOF) - - def test_spawn_send_unicode(self): - # A bytes-based spawn should be able to send arbitrary unicode - p = pexpect.spawn('cat') - p.sendline('3½') - p.sendeof() - p.expect(pexpect.EOF) - - def test_spawn_utf8_incomplete(self): - # This test case ensures correct incremental decoding, which - # otherwise fails when the stream inspected by os.read() - # does not align exactly at a utf-8 multibyte boundary: - # UnicodeDecodeError: 'utf8' codec can't decode byte 0xe2 in - # position 0: unexpected end of data - p = pexpect.spawnu('cat', maxread=1) - p.sendline('▁▂▃▄▅▆▇█') - p.sendeof() - p.expect('▁▂▃▄▅▆▇█') - - def test_readline_bin_echo(self): - # Test using readline() with spawnu objects. pexpect 3.2 had threw - # a TypeError when concatenating a bytestring to a unicode type. - - # given, - child = pexpect.spawnu('echo', ['input', ]) - - # exercise, - assert child.readline() == 'input' + child.crlf - - def test_unicode_argv(self): - """ Ensure a program can be executed with unicode arguments. """ - p = pexpect.spawn(u'echo ǝpoɔıun', timeout=5, encoding='utf8') - p.expect(u'ǝpoɔıun') - p.expect(pexpect.EOF) - assert not p.isalive() - assert p.exitstatus == 0 - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(UnicodeTests, 'test') diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_which.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_which.py deleted file mode 100644 index 15a8944153d..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_which.py +++ /dev/null @@ -1,291 +0,0 @@ -# -*- coding: utf-8 -*- -import subprocess -import tempfile -import shutil -import errno -import os - -import pexpect -from . import PexpectTestCase - -import pytest - - -class TestCaseWhich(PexpectTestCase.PexpectTestCase): - " Tests for pexpect.which(). " - - def test_which_finds_ls(self): - " which() can find ls(1). " - exercise = pexpect.which("ls") - assert exercise is not None - assert exercise.startswith('/') - - def test_path_from_env(self): - " executable found from optional env argument " - bin_name = 'pexpect-test-path-from-env' - tempdir = tempfile.mkdtemp() - try: - bin_path = os.path.join(tempdir, bin_name) - with open(bin_path, 'w') as f: - f.write('# test file not to be run') - try: - os.chmod(bin_path, 0o700) - found_path = pexpect.which(bin_name, env={'PATH': tempdir}) - finally: - os.remove(bin_path) - self.assertEqual(bin_path, found_path) - finally: - os.rmdir(tempdir) - - def test_os_defpath_which(self): - " which() finds an executable in $PATH and returns its abspath. " - - bin_dir = tempfile.mkdtemp() - temp_obj = tempfile.NamedTemporaryFile( - suffix=u'.sh', prefix=u'ǝpoɔıun-', - dir=bin_dir, delete=False) - bin_path = temp_obj.name - fname = os.path.basename(temp_obj.name) - save_path = os.environ['PATH'] - save_defpath = os.defpath - - try: - # setup - os.environ['PATH'] = '' - os.defpath = bin_dir - with open(bin_path, 'w') as fp: - pass - - # given non-executable, - os.chmod(bin_path, 0o400) - - # exercise absolute and relative, - assert pexpect.which(bin_path) is None - assert pexpect.which(fname) is None - - # given executable, - os.chmod(bin_path, 0o700) - - # exercise absolute and relative, - assert pexpect.which(bin_path) == bin_path - assert pexpect.which(fname) == bin_path - - finally: - # restore, - os.environ['PATH'] = save_path - os.defpath = save_defpath - - # destroy scratch files and folders, - if os.path.exists(bin_path): - os.unlink(bin_path) - if os.path.exists(bin_dir): - os.rmdir(bin_dir) - - def test_path_search_which(self): - " which() finds an executable in $PATH and returns its abspath. " - fname = 'gcc' - bin_dir = tempfile.mkdtemp() - bin_path = os.path.join(bin_dir, fname) - save_path = os.environ['PATH'] - try: - # setup - os.environ['PATH'] = bin_dir - with open(bin_path, 'w') as fp: - pass - - # given non-executable, - os.chmod(bin_path, 0o400) - - # exercise absolute and relative, - assert pexpect.which(bin_path) is None - assert pexpect.which(fname) is None - - # given executable, - os.chmod(bin_path, 0o700) - - # exercise absolute and relative, - assert pexpect.which(bin_path) == bin_path - assert pexpect.which(fname) == bin_path - - finally: - # restore, - os.environ['PATH'] = save_path - - # destroy scratch files and folders, - if os.path.exists(bin_path): - os.unlink(bin_path) - if os.path.exists(bin_dir): - os.rmdir(bin_dir) - - def test_which_follows_symlink(self): - " which() follows symlinks and returns its path. " - fname = 'original' - symname = 'extra-crispy' - bin_dir = tempfile.mkdtemp() - bin_path = os.path.join(bin_dir, fname) - sym_path = os.path.join(bin_dir, symname) - save_path = os.environ['PATH'] - try: - # setup - os.environ['PATH'] = bin_dir - with open(bin_path, 'w') as fp: - pass - os.chmod(bin_path, 0o400) - os.symlink(bin_path, sym_path) - - # should not be found because symlink points to non-executable - assert pexpect.which(symname) is None - - # but now it should -- because it is executable - os.chmod(bin_path, 0o700) - assert pexpect.which(symname) == sym_path - - finally: - # restore, - os.environ['PATH'] = save_path - - # destroy scratch files, symlinks, and folders, - if os.path.exists(sym_path): - os.unlink(sym_path) - if os.path.exists(bin_path): - os.unlink(bin_path) - if os.path.exists(bin_dir): - os.rmdir(bin_dir) - - def test_which_should_not_match_folders(self): - " Which does not match folders, even though they are executable. " - # make up a path and insert a folder that is 'executable', a naive - # implementation might match (previously pexpect versions 3.2 and - # sh versions 1.0.8, reported by @lcm337.) - fname = 'g++' - bin_dir = tempfile.mkdtemp() - bin_dir2 = os.path.join(bin_dir, fname) - save_path = os.environ['PATH'] - try: - os.environ['PATH'] = bin_dir - os.mkdir(bin_dir2, 0o755) - # should not be found because it is not executable *file*, - # but rather, has the executable bit set, as a good folder - # should -- it should not be returned because it fails isdir() - exercise = pexpect.which(fname) - assert exercise is None - - finally: - # restore, - os.environ['PATH'] = save_path - # destroy scratch folders, - for _dir in (bin_dir2, bin_dir,): - if os.path.exists(_dir): - os.rmdir(_dir) - - def test_which_should_match_other_group_user(self): - " which() returns executables by other, group, and user ownership. " - # create an executable and test that it is found using which() for - # each of the 'other', 'group', and 'user' permission bits. - fname = 'g77' - bin_dir = tempfile.mkdtemp() - bin_path = os.path.join(bin_dir, fname) - save_path = os.environ['PATH'] - try: - # setup - os.environ['PATH'] = bin_dir - - # an interpreted script requires the ability to read, - # whereas a binary program requires only to be executable. - # - # to gain access to a binary program, we make a copy of - # the existing system program echo(1). - bin_echo = None - for pth in ('/bin/echo', '/usr/bin/echo'): - if os.path.exists(pth): - bin_echo = pth - break - bin_which = None - for pth in ('/bin/which', '/usr/bin/which'): - if os.path.exists(pth): - bin_which = pth - break - if not bin_echo or not bin_which: - pytest.skip('needs `echo` and `which` binaries') - shutil.copy(bin_echo, bin_path) - isroot = os.getuid() == 0 - for should_match, mode in ( - # note that although the file may have matching 'group' or - # 'other' executable permissions, it is *not* executable - # because the current uid is the owner of the file -- which - # takes precedence - (False, 0o000), # ----------, no - (isroot, 0o001), # ---------x, no - (isroot, 0o010), # ------x---, no - (True, 0o100), # ---x------, yes - (False, 0o002), # --------w-, no - (False, 0o020), # -----w----, no - (False, 0o200), # --w-------, no - (isroot, 0o003), # --------wx, no - (isroot, 0o030), # -----wx---, no - (True, 0o300), # --wx------, yes - (False, 0o004), # -------r--, no - (False, 0o040), # ----r-----, no - (False, 0o400), # -r--------, no - (isroot, 0o005), # -------r-x, no - (isroot, 0o050), # ----r-x---, no - (True, 0o500), # -r-x------, yes - (False, 0o006), # -------rw-, no - (False, 0o060), # ----rw----, no - (False, 0o600), # -rw-------, no - (isroot, 0o007), # -------rwx, no - (isroot, 0o070), # ----rwx---, no - (True, 0o700), # -rwx------, yes - (isroot, 0o4001), # ---S-----x, no - (isroot, 0o4010), # ---S--x---, no - (True, 0o4100), # ---s------, yes - (isroot, 0o4003), # ---S----wx, no - (isroot, 0o4030), # ---S-wx---, no - (True, 0o4300), # --ws------, yes - (isroot, 0o2001), # ------S--x, no - (isroot, 0o2010), # ------s---, no - (True, 0o2100), # ---x--S---, yes - - ): - mode_str = '{0:0>4o}'.format(mode) - - # given file mode, - os.chmod(bin_path, mode) - - # exercise whether we may execute - can_execute = True - try: - subprocess.Popen(fname).wait() == 0 - except OSError as err: - if err.errno != errno.EACCES: - raise - # permission denied - can_execute = False - - assert should_match == can_execute, ( - should_match, can_execute, mode_str) - - # exercise whether which(1) would match - proc = subprocess.Popen((bin_which, fname), - env={'PATH': bin_dir}, - stdout=subprocess.PIPE) - bin_which_match = bool(not proc.wait()) - assert should_match == bin_which_match, ( - should_match, bin_which_match, mode_str) - - # finally, exercise pexpect's which(1) matches - # the same. - pexpect_match = bool(pexpect.which(fname)) - - assert should_match == pexpect_match == bin_which_match, ( - should_match, pexpect_match, bin_which_match, mode_str) - - finally: - # restore, - os.environ['PATH'] = save_path - - # destroy scratch files and folders, - if os.path.exists(bin_path): - os.unlink(bin_path) - if os.path.exists(bin_dir): - os.rmdir(bin_dir) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/test_winsize.py b/lldb/third_party/Python/module/pexpect-4.6/tests/test_winsize.py deleted file mode 100755 index be16773b756..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/test_winsize.py +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import pexpect -import unittest -from . import PexpectTestCase -import time - -class TestCaseWinsize(PexpectTestCase.PexpectTestCase): - - def test_initial_winsize(self): - """ Assert initial window dimension size (24, 80). """ - p = pexpect.spawn('{self.PYTHONBIN} sigwinch_report.py' - .format(self=self), timeout=3) - # default size by PtyProcess class is 24 rows by 80 columns. - p.expect_exact('Initial Size: (24, 80)') - p.close() - - def test_initial_winsize_by_dimension(self): - """ Assert user-parameter window dimension size is initial. """ - p = pexpect.spawn('{self.PYTHONBIN} sigwinch_report.py' - .format(self=self), timeout=3, - dimensions=(40, 100)) - p.expect_exact('Initial Size: (40, 100)') - p.close() - - def test_setwinsize(self): - """ Ensure method .setwinsize() sends signal caught by child. """ - p = pexpect.spawn('{self.PYTHONBIN} sigwinch_report.py' - .format(self=self), timeout=3) - # Note that we must await the installation of the child process' - # signal handler, - p.expect_exact('READY') - p.setwinsize(19, 84) - p.expect_exact('SIGWINCH: (19, 84)') - p.close() - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(TestCaseWinsize,'test') - - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/tetris.data b/lldb/third_party/Python/module/pexpect-4.6/tests/tetris.data deleted file mode 100644 index 06b6ce6ed2f..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/tetris.data +++ /dev/null @@ -1,3 +0,0 @@ -[2J -[24;1H J->LEFT K->ROTATE L->RIGHT SPACE->DROP P->PAUSE Q->QUIT -[1;28HXX[1;36HXXXXXXXX[1;50HXX[2;28HXX[2;50HXX[3;28HXX[3;50HXX[4;28HXX[4;50HXX[5;28HXX[5;50HXX[6;28HXX[6;50HXX[7;28HXX[7;50HXX[8;28HXX[8;50HXX[9;28HXX[9;50HXX[10;28HXX[10;50HXX[11;28HXX[11;50HXX[12;28HXX[12;50HXX[13;28HXX[13;50HXX[14;28HXX[14;50HXX[15;28HXX[15;50HXX[16;28HXX[16;50HXX[17;28HXX[17;50HXX[18;28HXX[18;50HXX[19;28HXX[19;50HXX[20;28HXX[20;50HXX[21;28HXXXXXXXXXXXXXXXXXXXXXXXX[1;36H [2;36HXXXXXXXX[21;50HXX[2;36H [3;36HXXXXXXXX[21;50HXX[3;36H [4;36HXXXXXXXX[21;50HXX[4;36H [5;36HXXXXXXXX[21;50HXX[5;34HXX[5;42H [21;50HXX[5;34H [6;34HXXXXXXXX[21;50HXX[6;32HXX[6;40H [21;50HXX[6;30HXX[6;38H [21;50HXX[6;30H [7;30HXXXXXXXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[7;30H [8;30HXXXXXXXX[21;50HXX[8;30H [20;30HXXXXXXXX[21;50HXX[1;36HXXXXXX[2;36HXX[21;50HXX[1;36H [2;38HXXXX[3;36HXX[21;50HXX[2;36H [2;42HXX[3;36H XX[21;50HXX[2;38H [3;40HXXXX[4;38HXX[21;50HXX[3;38H [3;44HXX[4;38H XX[21;50HXX[3;40H [3;46HXX[4;40H XX[21;50HXX[3;42H [3;48HXX[4;42H XX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[3;44H [4;46HXXXX[5;44HXX[21;50HXX[4;44H [5;46HXXXX[6;44HXX[21;50HXX[5;44H [6;44H [19;44HXXXXXX[20;44HXX[21;50HXX[1;36HXXXXXX[2;36HXX[21;50HXX[1;36H [2;38HXXXX[3;36HXX[21;50HXX[2;36H [2;42HXX[3;36H XX[21;50HXX[2;38H [2;44HXX[3;38H XX[21;50HXX[2;40H [3;42HXXXX[4;40HXX[21;50HXX[2;42HXX[3;40H [3;44H [4;40H XXXX[21;50HXX[2;42H XX[3;40HXX[3;44HXX[4;42H [21;50HXX[2;44H [3;40H [4;40HXXXXXX[21;50HXX[3;44H [4;40H [17;44HXX[18;40HXXXXXX[21;50HXX[1;36HXXXX[21;50HXX[1;36H [1;40HXX[2;36HXXXX[21;50HXX[1;36HXX[1;40H [2;34HXX[2;38H [21;50HXX[1;36H [2;34H [2;38HXX[3;34HXXXX[21;50HXX[2;34HXX[2;38H [3;32HXX[3;36H [21;50HXX[2;32HXX[2;36H [3;30HXX[3;34H [21;50HXX[21;50HXX[2;32H [3;30H [3;34HXX[4;30HXXXX[21;50HXX[21;50HXX[3;32H [4;30H [18;32HXXXX[19;30HXXXX[21;50HXX[1;36HXXXXXX[2;36HXX[21;50HXX[1;36H [1;42HXX[2;36H XX[21;50HXX[1;38H [2;40HXXXX[3;38HXX[21;50HXX[2;38H [2;44HXX[3;38H XX[21;50HXX[2;40H [2;46HXX[3;40H XX[21;50HXX[2;42H [2;48HXX[3;42H XX[21;50HXX[2;44H [3;46HXXXX[4;44HXX[21;50HXX[21;50HXX[21;50HXX[3;44H [4;44H [15;44HXXXXXX[16;44HXX[21;50HXX[1;36HXXXXXXXX[21;50HXX[1;34HXX[1;42H [21;50HXX[1;34H [2;34HXXXXXXXX[21;50HXX[2;32HXX[2;40H [21;50HXX[2;30HXX[2;38H [21;50HXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[2;30H [3;30HXXXXXXXX[21;50HXX[3;30H [17;30HXXXXXXXX[21;50HXX[1;38HXXXX[21;50HXX[1;38H [16;36HXXXX[17;38HXXXX[21;50HXX[21;50HXX[1;36HXXXX[21;50HXX[1;36H [1;40HXX[21;50HXX[2;38HXXXX[21;50HXX[1;38H [1;42HXX[2;38H [2;42HXX[21;50HXX[1;40H [1;44HXX[2;40H [2;44HXX[21;50HXX[1;42H [1;46HXX[2;42H [2;46HXX[21;50HXX[1;44H [3;44HXXXX[21;50HXX[2;44H [3;44H [13;44HXXXX[14;44HXXXX[21;50HXX[1;36HXXXXXX[2;40HXX[21;50HXX[1;34HXX[1;40H [2;38HXX [21;50HXX[1;34H [2;34HXXXX[3;38HXX[21;50HXX[2;32HXX[2;38H [3;36HXX [21;50HXX[2;30HXX[2;36H [3;34HXX [21;50HXX[21;50HXX[21;50HXX[21;50HXX[2;30H [3;34H [15;30HXXXXXX[16;34HXX[21;50HXX[1;36HXXXXXXXX[21;50HXX[1;36H [1;44HXX[21;50HXX[1;38H [2;38HXXXXXXXX[21;50HXX[1;40HXX[2;38H [2;42H [3;40HXX[4;40HXX[21;50HXX[1;40H [5;40HXX[21;50HXX[2;40H [3;38HXX[3;42HXXXX[4;40H [5;40H [21;50HXX[2;40HXX[3;38H [3;42H [4;40HXX[5;40HXX[21;50HXX[2;40H [6;40HXX[21;50HXX[3;40H [4;40H [5;40H [6;40H [13;40HXX[14;40HXX[15;40HXX[16;40HXX[21;50HXX[1;36HXXXXXX[2;38HXX[21;50HXX[1;34HXX[1;40H [2;36HXX [21;50HXX[1;32HXX[1;38H [2;34HXX [21;50HXX[1;32H [21;50HXX[1;36H [2;36HXX[3;34HXX[21;50HXX[1;32HXX [2;32HXX[2;36H [3;32HXX [21;50HXX[2;30HXX[3;32H [21;50HXX[1;32H [2;30H [2;34H [3;30HXXXXXX[21;50HXX[2;32H [3;30H [13;32HXX[14;30HXXXXXX[21;50HXX[1;36HXXXXXXXX[21;50HXX[1;36H [1;44HXX[21;50HXX[1;38H [1;42H [2;40HXX[3;40HXX[21;50HXX[1;40H XX[2;40H XX[3;40H XX[21;50HXX[4;42HXX[21;50HXX[1;42H [2;40HXX[2;44HXXXX[3;42H [4;42H [21;50HXX[2;40H [2;48HXX[21;50HXX[1;44HXX[2;42H [2;46H [3;44HXX[4;44HXX[21;50HXX[1;44H [5;44HXX[21;50HXX[2;44H [3;44H [4;44H [5;44H [9;44HXX[10;44HXX[11;44HXX[12;44HXX[21;50HXX[1;36HXXXXXX[2;36HXX[21;50HXX[1;36H [1;40H [2;36H XXXX[21;50HXX[1;36HXX [2;36HXX[2;40H [21;50HXX[1;34HXX[1;38HXX[2;36H [21;50HXX[1;34H [2;34HXXXXXX[21;50HXX[1;36HXX [2;32HXX[2;38H [21;50HXX[1;32HXXXX [2;32H [2;36H [3;34HXX[21;50HXX[1;30HXX[1;34H [2;32HXX [3;32HXX [21;50HXX[1;30H [2;30HXX[4;32HXX[21;50HXX[2;30H [3;32H [4;32H [10;30HXXXX[11;32HXX[12;32HXX[21;50HXX[1;36HXXXXXX[2;40HXX[21;50HXX[1;36H [1;40H [2;38HXX [21;50HXX[1;36HXX[1;40HXX[2;38H [21;50HXX[1;38H [2;36HXXXXXX[21;50HXX[1;36H XX[2;36H [2;40H [3;36HXXXX[21;50HXX[1;38H [2;38H [3;36H [13;38HXX[14;38HXX[15;36HXXXX[21;50HXX[1;36HXXXXXX[2;36HXX[21;50HXX[1;36H [1;42HXX[2;36H XX[21;50HXX[1;38H [2;40HXXXX[3;38HXX[21;50HXX[1;40HXX[2;38H [2;42H [3;38H XXXX[21;50HXX[1;40H XX[2;40H XX[3;40H [3;44HXX[21;50HXX[1;42H XX[2;40HXX[2;44HXX[3;42H [21;50HXX[1;44H XX[2;40H [2;46HXX[21;50HXX[1;46H [2;42H [3;42HXXXXXX[21;50HXX[2;42HXXXX [3;42H [3;46H [4;44HXX[21;50HXX[2;42H [3;44H [4;44H [6;42HXXXX[7;44HXX[8;44HXX[21;50HXX[1;38HXXXX[21;50HXX[1;36HXX[1;40H [2;36HXX[21;50HXX[1;34HXX[1;38H [2;34HXX [21;50HXX[1;34H [2;36HXX[3;34HXX[21;50HXX[1;34HXX[2;34H [2;38HXX[3;34H [21;50HXX[1;32HXX[1;36H [2;34HXX[2;38H [21;50HXX[1;32H [2;32HXX[2;36H [3;32HXX[21;50HXX[1;32HXX [2;30HXX[2;34H [3;30HXX [21;50HXX[1;32H [2;30H [3;32HXX[4;30HXX[21;50HXX[2;32H [3;30H [4;30H [7;32HXX[8;30HXXXX[9;30HXX[21;50HXX[1;36HXXXX[21;50HXX[21;50HXX[1;36H [1;40HXX[21;50HXX[21;50HXX[2;38HXXXX[21;50HXX[1;38H [1;42HXX[2;38H [2;42HXX[21;50HXX[21;50HXX[1;40H [1;44HXX[2;40H [2;44HXX[21;50HXX[21;50HXX[1;42H [3;42HXXXX[21;50HXX[2;42H [3;42H [4;42HXXXX[5;42HXXXX[21;50HXX[1;36HXXXX[21;50HXX[1;36H [1;40HXX[2;40HXX[21;50HXX[1;36HXX[1;40H [2;40H [21;50HXX[1;36H [1;40HXX[2;40HXX[21;50HXX[1;40H [2;38HXX[3;40HXX[21;50HXX[1;38H [2;38H [3;40H [10;38HXX[11;38HXXXX[12;40HXX[21;50HXX[1;36HXXXXXX[2;40HXX[21;50HXX[1;36H [2;40H [9;36HXXXXXX[10;40HXX[21;50HXX[21;50HXX[1;38HXXXX[21;50HXX[1;36HXX[1;40H [2;36HXX[21;50HXX[1;34HXX[1;38H [2;34HXX [21;50HXX[1;34H [2;36HXX[3;34HXX[21;50HXX[1;34HXX[2;34H [2;38HXX[3;34H [21;50HXX[1;32HXX[1;36H [2;34HXX[2;38H [21;50HXX[1;32H [2;34H [6;32HXXXX[7;34HXXXX[21;50HXX[1;36HXXXXXX[2;40HXX[21;50HXX[1;36H [1;42HXX[2;40H XX[21;50HXX[1;38H [1;42H [2;40HXX [21;50HXX[1;40H XX[2;40H XX[21;50HXX[1;40HXX[1;44HXX[2;42H [21;50HXX[1;42H [2;40HXXXXXX[21;50HXX[1;40H XX[2;40H [2;46HXX[21;50HXX[1;42H XX[2;42H [2;46H [3;42HXXXX[21;50HXX[21;50HXX[1;38HXXXX[21;50HXX[1;36HXX[1;40H [2;36HXX[21;50HXX[1;36H [2;38HXX[3;36HXX[21;50HXX[1;36HXX [2;34HXX[2;38H [3;34HXX [21;50HXX[1;34HXX[2;34H [2;38HXX[3;34H [21;50HXX[1;32HXX[1;36H [2;34HXX[2;38H [21;50HXX[1;32H [2;32HXX[2;36H [3;32HXX[21;50HXX[1;34H [2;32H [3;34HXX[4;32HXX[21;50HXX[2;32HXX [3;30HXX[3;34H [4;30HXX [21;50HXX[2;32H [3;30H [4;30H XX[5;30HXXXX[6;30HXX[21;50HXX[1;36HXXXXXX[2;40HXX[21;50HXX[1;36H [1;42HXX[2;40H XX[21;50HXX[1;38H [1;42H [2;40HXX [21;50HXX[1;40H XX[2;40H XX[21;50HXX[21;50HXX[1;38HXXXX[21;50HXX[21;50HXX[1;36HXX[1;40H [2;36HXX[21;50HXX[1;36H [2;36H [4;38HXX[5;36HXXXX[6;36HXX[21;50HXX[1;36HXXXX[21;50HXX[21;50HXX[1;34HXX[1;38H [21;50HXX[2;34HXXXX[21;50HXX[21;50HXX[1;32HXX[1;36H [2;32HXX[2;36H [21;50HXX[21;50HXX[1;30HXX[1;34H [2;30HXX[2;34H [21;50HXX[1;30H [3;30HXXXX[21;50HXX[21;50HXX[1;36HXXXX[21;50HXX[1;36H [1;40HXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[2;38HXXXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[1;38H [3;38HXXXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX[21;50HXX diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/ticker.py b/lldb/third_party/Python/module/pexpect-4.6/tests/ticker.py deleted file mode 100755 index 5ecc1c21be0..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/ticker.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' - -import time, sys - -for i in range(5): - print "tick" - time.sleep(1) - -sys.exit(0) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/torturet.vt b/lldb/third_party/Python/module/pexpect-4.6/tests/torturet.vt deleted file mode 100644 index 65f965b505d..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/torturet.vt +++ /dev/null @@ -1,61 +0,0 @@ -\<>[H[1;2;3;4qPrEM1\[?4h[0m -[H[J[7m#6(0a`opqrs`(B This is the (0`srqpo`a(B[1m -#3VT100 series Torture Test Demonstration. -#4VT100 series Torture Test Demonstration. -#6[1;5m Watch the blinking lights [4;24r[0m -[0q[1q[0q[2q[0q[3q[0q[4q[0q -[0q[1q[0q[2q[0q[3q[0q[4q[0q -[0q[1q[0q[2q[0q[3q[0q[4q[0q -PrEM0\[4;1H[J[24;1H - -This file is a VT100-series Torture Test. It demonstrates all the visual -attributes of the VT100 terminal. - -The top line is double-width/single-height with inverse-video line-drawing -characters. The 2nd and 3rd lines are double-width/double-height in bold -inverse video. They also show the limited scrolling region. - -The remaining lines will show NORMAL, BOLD, BLINK, INVERSE, and all 16 -combinations of those 4 attributes. They show that there is a difference -between an underscore character and the underline attribute, and that -lower-case decenders go below the underline. - -A window pane is drawn in the lower right to show how the line-drawing set -can be used. At the lower left is the character set double-wide/double-high -to show the dot-matrix used. Upper-case characters are 8 by 7 in a 10 by 10 -character cell, with 1 blank row on top and 2 on the bottom. The underline -attribute uses the first bottom blank row, lower-case decenders use both. - - - -[0mThis is a normal line __________________________________________________y_ -[1mThis is a bold line (normal unless the Advanced Video Option is installed) -[0;4mThis line is underlined _ " " " " " " _y_ -[0;5mThis is a blinking line _ " " " " " " _y_ -[0;7mThis is inverse video _ (underlined if no AVO and cursor is underline) _y_ -[0mNormal gjpqy [4mUnderline[0;0m [5m Blink [4mUnderline+Blink gjpqy[0m -[1mBold gjpqy [4mUnderline[0;1m [5m Blink [4mUnderline+Blink gjpqy[0m -[7mInverse [4mUnderline[0;7m [5m Blink [4mUnderline+Blink[0;7m -[1mBold+Inverse [4mUnderline[0;1;7m [5m Blink [4mUnderline+Blink[0m -PrEM1\[A -#6This is double [1mwidth[0m -#3This is double [1mheight[0m -#4This is double [1mheight[0m -#6[7;4m_[0;7mABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ioy -#3[7;4m_[0;7mABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ioy -#4[7;4m_[0;7mABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ioy[3A -[0m[CA[CC[CE[CG[CI[CK[CM[CO[CQ[CS[CU[CW[CY[C0[C2[C4[C6[C8[Ci[Cy -[4m_[0m[CB[CD[CF[CH[CJ[CL[CN[CP[CR[CT[CV[CX[CZ[C1[C3[C5[C7[C9[Co -[4m_[0m[CB[CD[CF[CH[CJ[CL[CN[CP[CR[CT[CV[CX[CZ[C1[C3[C5[C7[C9[Co -(0#6[7m`abcdefghijklmnopqrstuvwxyz{|}~[0m lqwqk -#3[7m`abcdefghijklmnopqrstuvwxyz{|}~[0m tqnqu -#4[7m`abcdefghijklmnopqrstuvwxyz{|}~[0m tqnqu[3A[0m -[Ca[Cc[Ce[Cg[Ci[Ck[Cm[Co[Cq[Cs[Cu[Cw[Cy[C{[C} -`[Cb[Cd[Cf[Ch[Cj[Cl[Cn[Cp[Cr[Ct[Cv[Cx[Cz[C|[C~ -`[Cb[Cd[Cf[Ch[Cj[Cl[Cn[Cp[Cr[Ct[Cv[Cx[Cz[C|[C~(B -#6[7m`abcdefghijklmnopqrstuvwxyz{|}~(0[0m mqvqj[A(B -[0m[Ca[Cc[Ce[Cg[Ci[Ck[Cm[Co[Cq[Cs[Cu[Cw[Cy[C{[C} -PrEM0\ $PrEM0 works on GIGI [A[1;7m - This test created by Joe Smith, 8-May-85 [0m -[1;r[22;1H - diff --git a/lldb/third_party/Python/module/pexpect-4.6/tests/utils.py b/lldb/third_party/Python/module/pexpect-4.6/tests/utils.py deleted file mode 100644 index dcd3aa017da..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tests/utils.py +++ /dev/null @@ -1,7 +0,0 @@ -import os - -def no_coverage_env(): - "Return a copy of os.environ that won't trigger coverage measurement." - env = os.environ.copy() - env.pop('COV_CORE_SOURCE', None) - return env
\ No newline at end of file diff --git a/lldb/third_party/Python/module/pexpect-4.6/tools/display-fpathconf.py b/lldb/third_party/Python/module/pexpect-4.6/tools/display-fpathconf.py deleted file mode 100644 index d40cbae206f..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tools/display-fpathconf.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python -"""Displays os.fpathconf values related to terminals. """ -from __future__ import print_function -import sys -import os - - -def display_fpathconf(): - DISP_VALUES = ( - ('PC_MAX_CANON', ('Max no. of bytes in a ' - 'terminal canonical input line.')), - ('PC_MAX_INPUT', ('Max no. of bytes for which ' - 'space is available in a terminal input queue.')), - ('PC_PIPE_BUF', ('Max no. of bytes which will ' - 'be written atomically to a pipe.')), - ('PC_VDISABLE', 'Terminal character disabling value.') - ) - FMT = '{name:<13} {value:<5} {description}' - - # column header - print(FMT.format(name='name', value='value', description='description')) - print(FMT.format(name=('-' * 13), value=('-' * 5), description=('-' * 11))) - - fd = sys.stdin.fileno() - for name, description in DISP_VALUES: - key = os.pathconf_names.get(name, None) - if key is None: - value = 'UNDEF' - else: - try: - value = os.fpathconf(fd, name) - except OSError as err: - value = 'OSErrno {0.errno}'.format(err) - if name == 'PC_VDISABLE': - value = hex(value) - print(FMT.format(name=name, value=value, description=description)) - print() - - -if __name__ == '__main__': - display_fpathconf() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tools/display-maxcanon.py b/lldb/third_party/Python/module/pexpect-4.6/tools/display-maxcanon.py deleted file mode 100644 index cbd664ffec7..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tools/display-maxcanon.py +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env python -""" -This tool uses pexpect to test expected Canonical mode length. - -All systems use the value of MAX_CANON which can be found using -fpathconf(3) value PC_MAX_CANON -- with the exception of Linux -and FreeBSD. - -Linux, though defining a value of 255, actually honors the value -of 4096 from linux kernel include file tty.h definition -N_TTY_BUF_SIZE. - -Linux also does not honor IMAXBEL. termios(3) states, "Linux does not -implement this bit, and acts as if it is always set." Although these -tests ensure it is enabled, this is a non-op for Linux. - -FreeBSD supports neither, and instead uses a fraction (1/5) of the tty -speed which is always 9600. Therefor, the maximum limited input line -length is 9600 / 5 = 1920. - -These tests only ensure the correctness of the behavior described by -the sendline() docstring -- the values listed there, and above should -be equal to the output of the given OS described, but no promises! -""" -# std import -from __future__ import print_function -import sys -import os - - -def detect_maxcanon(): - import pexpect - bashrc = os.path.join( - # re-use pexpect/replwrap.py's bashrc file, - os.path.dirname(__file__), os.path.pardir, 'pexpect', 'bashrc.sh') - - child = pexpect.spawn('bash', ['--rcfile', bashrc], - echo=True, encoding='utf8', timeout=3) - - child.sendline(u'echo -n READY_; echo GO') - child.expect_exact(u'READY_GO') - - child.sendline(u'stty icanon imaxbel erase ^H; echo -n retval: $?') - child.expect_exact(u'retval: 0') - - child.sendline(u'echo -n GO_; echo AGAIN') - child.expect_exact(u'GO_AGAIN') - child.sendline(u'cat') - - child.delaybeforesend = 0 - - column, blocksize = 0, 64 - ch_marker = u'_' - - print('auto-detecting MAX_CANON: ', end='') - sys.stdout.flush() - - while True: - child.send(ch_marker * blocksize) - result = child.expect([ch_marker * blocksize, u'\a']) - if result == 0: - # entire block fit without emitting bel - column += blocksize - elif result == 1: - # an '\a' was emitted, count the number of ch_markers - # found since last blocksize, determining our MAX_CANON - column += child.before.count(ch_marker) - break - print(column) - -if __name__ == '__main__': - try: - detect_maxcanon() - except ImportError: - # we'd like to use this with CI -- but until we integrate - # with tox, we can't determine a period in testing when - # the pexpect module has been installed - print('warning: pexpect not in module path, MAX_CANON ' - 'could not be determined by systems test.', - file=sys.stderr) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tools/display-sighandlers.py b/lldb/third_party/Python/module/pexpect-4.6/tools/display-sighandlers.py deleted file mode 100755 index f3559f72e31..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tools/display-sighandlers.py +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env python -# Displays all signals, their values, and their handlers. -from __future__ import print_function -import signal -FMT = '{name:<10} {value:<5} {description}' - -# header -print(FMT.format(name='name', value='value', description='description')) -print('-' * (33)) - -for name, value in [(signal_name, getattr(signal, signal_name)) - for signal_name in dir(signal) - if signal_name.startswith('SIG') - and not signal_name.startswith('SIG_')]: - try: - handler = signal.getsignal(value) - except ValueError: - # FreeBSD: signal number out of range - handler = 'out of range' - description = { - signal.SIG_IGN: "ignored(SIG_IGN)", - signal.SIG_DFL: "default(SIG_DFL)" - }.get(handler, handler) - print(FMT.format(name=name, value=value, description=description)) diff --git a/lldb/third_party/Python/module/pexpect-4.6/tools/display-terminalinfo.py b/lldb/third_party/Python/module/pexpect-4.6/tools/display-terminalinfo.py deleted file mode 100755 index 1288397acbb..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tools/display-terminalinfo.py +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env python -""" Display known information about our terminal. """ -from __future__ import print_function -import termios -import locale -import sys -import os - -BITMAP_IFLAG = { - 'IGNBRK': 'ignore BREAK condition', - 'BRKINT': 'map BREAK to SIGINTR', - 'IGNPAR': 'ignore (discard) parity errors', - 'PARMRK': 'mark parity and framing errors', - 'INPCK': 'enable checking of parity errors', - 'ISTRIP': 'strip 8th bit off chars', - 'INLCR': 'map NL into CR', - 'IGNCR': 'ignore CR', - 'ICRNL': 'map CR to NL (ala CRMOD)', - 'IXON': 'enable output flow control', - 'IXOFF': 'enable input flow control', - 'IXANY': 'any char will restart after stop', - 'IMAXBEL': 'ring bell on input queue full', - 'IUCLC': 'translate upper case to lower case', -} - -BITMAP_OFLAG = { - 'OPOST': 'enable following output processing', - 'ONLCR': 'map NL to CR-NL (ala CRMOD)', - 'OXTABS': 'expand tabs to spaces', - 'ONOEOT': 'discard EOT\'s `^D\' on output)', - 'OCRNL': 'map CR to NL', - 'OLCUC': 'translate lower case to upper case', - 'ONOCR': 'No CR output at column 0', - 'ONLRET': 'NL performs CR function', -} - -BITMAP_CFLAG = { - 'CSIZE': 'character size mask', - 'CS5': '5 bits (pseudo)', - 'CS6': '6 bits', - 'CS7': '7 bits', - 'CS8': '8 bits', - 'CSTOPB': 'send 2 stop bits', - 'CREAD': 'enable receiver', - 'PARENB': 'parity enable', - 'PARODD': 'odd parity, else even', - 'HUPCL': 'hang up on last close', - 'CLOCAL': 'ignore modem status lines', - 'CCTS_OFLOW': 'CTS flow control of output', - 'CRTSCTS': 'same as CCTS_OFLOW', - 'CRTS_IFLOW': 'RTS flow control of input', - 'MDMBUF': 'flow control output via Carrier', -} - -BITMAP_LFLAG = { - 'ECHOKE': 'visual erase for line kill', - 'ECHOE': 'visually erase chars', - 'ECHO': 'enable echoing', - 'ECHONL': 'echo NL even if ECHO is off', - 'ECHOPRT': 'visual erase mode for hardcopy', - 'ECHOCTL': 'echo control chars as ^(Char)', - 'ISIG': 'enable signals INTR, QUIT, [D]SUSP', - 'ICANON': 'canonicalize input lines', - 'ALTWERASE': 'use alternate WERASE algorithm', - 'IEXTEN': 'enable DISCARD and LNEXT', - 'EXTPROC': 'external processing', - 'TOSTOP': 'stop background jobs from output', - 'FLUSHO': 'output being flushed (state)', - 'NOKERNINFO': 'no kernel output from VSTATUS', - 'PENDIN': 'XXX retype pending input (state)', - 'NOFLSH': 'don\'t flush after interrupt', -} - -CTLCHAR_INDEX = { - 'VEOF': 'EOF', - 'VEOL': 'EOL', - 'VEOL2': 'EOL2', - 'VERASE': 'ERASE', - 'VWERASE': 'WERASE', - 'VKILL': 'KILL', - 'VREPRINT': 'REPRINT', - 'VINTR': 'INTR', - 'VQUIT': 'QUIT', - 'VSUSP': 'SUSP', - 'VDSUSP': 'DSUSP', - 'VSTART': 'START', - 'VSTOP': 'STOP', - 'VLNEXT': 'LNEXT', - 'VDISCARD': 'DISCARD', - 'VMIN': '---', - 'VTIME': '---', - 'VSTATUS': 'STATUS', -} - - -def display_bitmask(kind, bitmap, value): - """ Display all matching bitmask values for ``value`` given ``bitmap``. """ - col1_width = max(map(len, list(bitmap.keys()) + [kind])) - col2_width = 7 - FMT = '{name:>{col1_width}} {value:>{col2_width}} {description}' - print(FMT.format(name=kind, - value='Value', - description='Description', - col1_width=col1_width, - col2_width=col2_width)) - print('{0} {1} {2}'.format('-' * col1_width, - '-' * col2_width, - '-' * max(map(len, bitmap.values())))) - for flag_name, description in bitmap.items(): - try: - bitmask = getattr(termios, flag_name) - bit_val = 'on' if bool(value & bitmask) else 'off' - except AttributeError: - bit_val = 'undef' - print(FMT.format(name=flag_name, - value=bit_val, - description=description, - col1_width=col1_width, - col2_width=col2_width)) - print() - - -def display_ctl_chars(index, cc): - """ Display all control character indicies, names, and values. """ - title = 'Special Character' - col1_width = len(title) - col2_width = max(map(len, index.values())) - FMT = '{idx:<{col1_width}} {name:<{col2_width}} {value}' - print('Special line Characters'.center(40).rstrip()) - print(FMT.format(idx='Index', - name='Name', - value='Value', - col1_width=col1_width, - col2_width=col2_width)) - print('{0} {1} {2}'.format('-' * col1_width, - '-' * col2_width, - '-' * 10)) - for index_name, name in index.items(): - try: - index = getattr(termios, index_name) - value = cc[index] - if value == b'\xff': - value = '_POSIX_VDISABLE' - else: - value = repr(value) - except AttributeError: - value = 'undef' - print(FMT.format(idx=index_name, - name=name, - value=value, - col1_width=col1_width, - col2_width=col2_width)) - print() - - -def display_conf(kind, names, getter): - col1_width = max(map(len, names)) - FMT = '{name:>{col1_width}} {value}' - print(FMT.format(name=kind, - value='value', - col1_width=col1_width)) - print('{0} {1}'.format('-' * col1_width, '-' * 27)) - for name in names: - try: - value = getter(name) - except OSError as err: - value = err - print(FMT.format(name=name, value=value, col1_width=col1_width)) - print() - - -def main(): - fd = sys.stdin.fileno() - locale.setlocale(locale.LC_ALL, '') - encoding = locale.getpreferredencoding() - - print('os.isatty({0}) => {1}'.format(fd, os.isatty(fd))) - print('locale.getpreferredencoding() => {0}'.format(encoding)) - - display_conf(kind='pathconf', - names=os.pathconf_names, - getter=lambda name: os.fpathconf(fd, name)) - - try: - (iflag, oflag, cflag, lflag, ispeed, ospeed, cc - ) = termios.tcgetattr(fd) - except termios.error as err: - print('stdin is not a typewriter: {0}'.format(err)) - else: - display_bitmask(kind='Input Mode', - bitmap=BITMAP_IFLAG, - value=iflag) - display_bitmask(kind='Output Mode', - bitmap=BITMAP_OFLAG, - value=oflag) - display_bitmask(kind='Control Mode', - bitmap=BITMAP_CFLAG, - value=cflag) - display_bitmask(kind='Local Mode', - bitmap=BITMAP_LFLAG, - value=lflag) - display_ctl_chars(index=CTLCHAR_INDEX, - cc=cc) - try: - print('os.ttyname({0}) => {1}'.format(fd, os.ttyname(fd))) - print('os.ctermid() => {0}'.format(os.ctermid())) - except OSError as e: - # Travis fails on ttyname with errno 0 'Error'. - print("Error inspecting TTY: {0}".format(e)) - -if __name__ == '__main__': - main() diff --git a/lldb/third_party/Python/module/pexpect-4.6/tools/teamcity-coverage-report.sh b/lldb/third_party/Python/module/pexpect-4.6/tools/teamcity-coverage-report.sh deleted file mode 100755 index 2e32241b7b7..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tools/teamcity-coverage-report.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# This is to be executed by each individual OS test. It only -# combines coverage files and reports locally to the given -# TeamCity build configuration. -set -e -set -o pipefail -[ -z ${TEMP} ] && TEMP=/tmp - -# combine all .coverage* files, -coverage combine - -# create ascii report, -report_file=$(mktemp $TEMP/coverage.XXXXX) -coverage report --rcfile=`dirname $0`/../.coveragerc > "${report_file}" 2>/dev/null - -# Report Code Coverage for TeamCity, using 'Service Messages', -# https://confluence.jetbrains.com/display/TCD8/How+To...#HowTo...-ImportcoverageresultsinTeamCity -# https://confluence.jetbrains.com/display/TCD8/Custom+Chart#CustomChart-DefaultStatisticsValuesProvidedbyTeamCity -total_no_lines=$(awk '/TOTAL/{printf("%s",$2)}' < "${report_file}") -total_no_misses=$(awk '/TOTAL/{printf("%s",$3)}' < "${report_file}") -total_no_covered=$((${total_no_lines} - ${total_no_misses})) -echo "##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='""${total_no_lines}""']" -echo "##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='""${total_no_covered}""']" - -# Display for human consumption and remove ascii file. -cat "${report_file}" -rm "${report_file}" diff --git a/lldb/third_party/Python/module/pexpect-4.6/tools/teamcity-runtests.sh b/lldb/third_party/Python/module/pexpect-4.6/tools/teamcity-runtests.sh deleted file mode 100755 index bcb28f78aa6..00000000000 --- a/lldb/third_party/Python/module/pexpect-4.6/tools/teamcity-runtests.sh +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash -# -# This script assumes that the project 'ptyprocess' is -# available in the parent of the project's folder. -set -e -set -o pipefail - -if [ -z $1 ]; then - echo "$0 (2.6|2.7|3.3|3.4)" - exit 1 -fi - -export PYTHONIOENCODING=UTF8 -export LANG=en_US.UTF-8 - -pyversion=$1 -shift -here=$(cd `dirname $0`; pwd) -osrel=$(uname -s) -venv=teamcity-pexpect -venv_wrapper=$(which virtualenvwrapper.sh) - -if [ -z $venv_wrapper ]; then - echo "virtualenvwrapper.sh not found in PATH." >&2 - exit 1 -fi - -. ${venv_wrapper} -rmvirtualenv ${venv} || true -mkvirtualenv -p `which python${pyversion}` ${venv} || true -workon ${venv} - -# install ptyprocess -cd $here/../../ptyprocess -pip uninstall --yes ptyprocess || true -python setup.py install - -# install all test requirements -pip install --upgrade pytest-cov coverage coveralls pytest-capturelog - -# run tests -cd $here/.. -ret=0 -py.test \ - --cov pexpect \ - --cov-config .coveragerc \ - --junit-xml=results.${osrel}.py${pyversion}.xml \ - --verbose \ - --verbose \ - "$@" || ret=$? - -if [ $ret -ne 0 ]; then - # we always exit 0, preferring instead the jUnit XML - # results to be the dominate cause of a failed build. - echo "py.test returned exit code ${ret}." >&2 - echo "the build should detect and report these failing tests." >&2 -fi - -# combine all coverage to single file, report for this build, -# then move into ./build-output/ as a unique artifact to allow -# the final "Full build" step to combine and report to coveralls.io -`dirname $0`/teamcity-coverage-report.sh -mkdir -p build-output -mv .coverage build-output/.coverage.${osrel}.py{$pyversion}.$RANDOM.$$ diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/Makefile b/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/Makefile deleted file mode 100644 index 265a1a43208..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make <target>' where <target> is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Ptyprocess.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Ptyprocess.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/Ptyprocess" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Ptyprocess" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/api.rst b/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/api.rst deleted file mode 100644 index 05f7f900050..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/api.rst +++ /dev/null @@ -1,10 +0,0 @@ -Ptyprocess API -============== - -.. module:: ptyprocess - -.. autoclass:: PtyProcess - - .. automethod:: spawn - -.. autoclass:: PtyProcessUnicode diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/conf.py b/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/conf.py deleted file mode 100644 index 3a5e13a6ca0..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/conf.py +++ /dev/null @@ -1,266 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Ptyprocess documentation build configuration file, created by -# sphinx-quickstart on Mon Oct 13 11:03:02 2014. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys -import os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('..')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.viewcode', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'Ptyprocess' -copyright = u'2014, Thomas Kluyver' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '0.5' -# The full version, including alpha/beta/rc tags. -release = version + '.2' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all -# documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - -# If true, keep warnings as "system message" paragraphs in the built documents. -#keep_warnings = False - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# "<project> v<release> documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# Add any extra paths that contain custom files (such as robots.txt or -# .htaccess) here, relative to this directory. These files are copied -# directly to the root of the documentation. -#html_extra_path = [] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a <link> tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'Ptyprocessdoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - ('index', 'Ptyprocess.tex', u'Ptyprocess Documentation', - u'Thomas Kluyver', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'ptyprocess', u'Ptyprocess Documentation', - [u'Thomas Kluyver'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'Ptyprocess', u'Ptyprocess Documentation', - u'Thomas Kluyver', 'Ptyprocess', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False - - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/images/pty_vs_popen.png b/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/images/pty_vs_popen.png Binary files differdeleted file mode 100644 index d78f8a3e14a..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/images/pty_vs_popen.png +++ /dev/null diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/images/pty_vs_popen.svg b/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/images/pty_vs_popen.svg deleted file mode 100644 index 457f376337d..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/images/pty_vs_popen.svg +++ /dev/null @@ -1,759 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="554.44196" - height="327.38452" - id="svg2" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="pty_vs_popen.svg"> - <defs - id="defs4"> - <marker - inkscape:stockid="SquareM" - orient="auto" - refY="0" - refX="0" - id="SquareM" - style="overflow:visible"> - <path - id="path3838" - d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="scale(0.4,0.4)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow2Lstart" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lstart" - style="overflow:visible"> - <path - id="path3783" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(1.1,0,0,1.1,1.1,0)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Tail" - orient="auto" - refY="0" - refX="0" - id="Tail" - style="overflow:visible"> - <g - id="g3801" - transform="scale(-1.2,-1.2)"> - <path - id="path3803" - d="M -3.8048674,-3.9585227 0.54352094,0" - style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round" - inkscape:connector-curvature="0" /> - <path - id="path3805" - d="M -1.2866832,-3.9585227 3.0617053,0" - style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round" - inkscape:connector-curvature="0" /> - <path - id="path3807" - d="M 1.3053582,-3.9585227 5.6537466,0" - style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round" - inkscape:connector-curvature="0" /> - <path - id="path3809" - d="M -3.8048674,4.1775838 0.54352094,0.21974226" - style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round" - inkscape:connector-curvature="0" /> - <path - id="path3811" - d="M -1.2866832,4.1775838 3.0617053,0.21974226" - style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round" - inkscape:connector-curvature="0" /> - <path - id="path3813" - d="M 1.3053582,4.1775838 5.6537466,0.21974226" - style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round" - inkscape:connector-curvature="0" /> - </g> - </marker> - <marker - inkscape:stockid="Arrow1Lstart" - orient="auto" - refY="0" - refX="0" - id="Arrow1Lstart" - style="overflow:visible"> - <path - id="path3765" - d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="matrix(0.8,0,0,0.8,10,0)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend" - style="overflow:visible"> - <path - id="path3786" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow1Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow1Lend" - style="overflow:visible"> - <path - id="path3768" - d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="matrix(-0.8,0,0,-0.8,-10,0)" - inkscape:connector-curvature="0" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-9" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path3786-2" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-6" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path3786-27" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="SquareM" - orient="auto" - refY="0" - refX="0" - id="SquareM-5" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path3838-7" - d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="scale(0.4,0.4)" /> - </marker> - <marker - inkscape:stockid="SquareM" - orient="auto" - refY="0" - refX="0" - id="marker10742" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path10744" - d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="scale(0.4,0.4)" /> - </marker> - <marker - inkscape:stockid="SquareM" - orient="auto" - refY="0" - refX="0" - id="marker10746" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path10748" - d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="scale(0.4,0.4)" /> - </marker> - <marker - inkscape:stockid="SquareM" - orient="auto" - refY="0" - refX="0" - id="marker10750" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path10752" - d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="scale(0.4,0.4)" /> - </marker> - <marker - inkscape:stockid="SquareM" - orient="auto" - refY="0" - refX="0" - id="marker10754" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path10756" - d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="scale(0.4,0.4)" /> - </marker> - <marker - inkscape:stockid="SquareM" - orient="auto" - refY="0" - refX="0" - id="marker10758" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path10760" - d="M -5,-5 -5,5 5,5 5,-5 -5,-5 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" - transform="scale(0.4,0.4)" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.98994949" - inkscape:cx="77.797977" - inkscape:cy="137.24456" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1301" - inkscape:window-height="744" - inkscape:window-x="65" - inkscape:window-y="24" - inkscape:window-maximized="1" - fit-margin-top="1" - fit-margin-left="1" - fit-margin-right="1" - fit-margin-bottom="1" - units="cm" /> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-40.758533,29.820888)"> - <g - id="g11880"> - <a - style="fill:#b380ff" - id="a6328"> - <path - sodipodi:type="arc" - style="fill:#b380ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="path4575" - sodipodi:cx="160.71428" - sodipodi:cy="222.89789" - sodipodi:rx="41.07143" - sodipodi:ry="25.535715" - d="m 201.78571,222.89789 c 0,14.10298 -18.38831,25.53571 -41.07143,25.53571 -22.68313,0 -41.07143,-11.43273 -41.07143,-25.53571 0,-14.10299 18.3883,-25.53572 41.07143,-25.53572 22.68312,0 41.07143,11.43273 41.07143,25.53572 z" - transform="translate(-4.6428572,12.857143)" /> - </a> - <text - sodipodi:linespacing="125%" - id="text10591" - y="240.97427" - x="138.65004" - style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="240.97427" - x="138.65004" - id="tspan10593" - sodipodi:role="line">Child</tspan></text> - <g - id="g10626"> - <path - sodipodi:type="arc" - style="fill:#b380ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="path4575-2" - sodipodi:cx="160.71428" - sodipodi:cy="222.89789" - sodipodi:rx="41.07143" - sodipodi:ry="25.535715" - d="m 201.78571,222.89789 c 0,14.10298 -18.38831,25.53571 -41.07143,25.53571 -22.68313,0 -41.07143,-11.43273 -41.07143,-25.53571 0,-14.10299 18.3883,-25.53572 41.07143,-25.53572 22.68312,0 41.07143,11.43273 41.07143,25.53572 z" - transform="translate(2.6428639,-191.24999)" /> - <text - xml:space="preserve" - style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="140.40549" - y="36.651806" - id="text6334" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan6336" - x="140.40549" - y="36.651806">Parent</tspan></text> - </g> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path2991" - d="m 196.72731,244.88337 c 67.0421,-0.73967 67.7774,-97.99531 67.7774,-97.99531" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#SquareM);marker-mid:none;marker-end:none" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path2991-7" - d="m 196.14285,226.15435 c 43.35572,-25.82886 35.12946,-81.02577 35.12946,-81.02577" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#SquareM);marker-mid:none;marker-end:none" /> - <a - id="a6331"> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#SquareM);marker-end:none" - d="M 115.87982,226.83468 C 83.964646,190.58994 84.459212,146.54858 84.459212,146.54858" - id="path2991-7-8" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - </a> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path5637" - d="M 138.92857,54.147895 C 93.997282,79.826286 84.654646,124.86218 84.654646,124.86218" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#SquareM);marker-end:none" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path5641" - d="M 263.9496,124.76501 C 252.52103,80.836439 194.64286,49.147895 194.64286,49.147895" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#SquareM)" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path5643" - d="M 232.25054,123.75485 C 221.88288,81.1682 185.35714,54.147895 185.35714,54.147895" - style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#SquareM)" /> - <text - sodipodi:linespacing="125%" - id="text6245" - y="240.57648" - x="90" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - style="font-size:9px;font-style:italic;-inkscape-font-specification:Sans Italic" - y="240.57648" - x="90" - id="tspan6247" - sodipodi:role="line">stdin</tspan></text> - <text - sodipodi:linespacing="125%" - id="text6245-8" - y="213.07455" - x="184.47076" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - id="tspan6270" - style="font-size:9px;font-style:italic;-inkscape-font-specification:Sans Italic" - y="213.07455" - x="184.47076" - sodipodi:role="line">stdout</tspan></text> - <text - sodipodi:linespacing="125%" - id="text6245-8-8" - y="262.00311" - x="192.32663" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - id="tspan6298" - style="font-size:9px;font-style:italic;-inkscape-font-specification:Sans Italic" - y="262.00311" - x="192.32663" - sodipodi:role="line">stderr</tspan></text> - <g - transform="translate(18,0)" - id="g11773"> - <g - id="g11763"> - <rect - y="120.8597" - x="58.558922" - height="13.836793" - width="15.97965" - id="rect4573-0-7" - style="fill:#ff8080;fill-rule:evenodd;stroke:#000000;stroke-width:0.73463506px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <text - sodipodi:linespacing="125%" - id="text6308" - y="129.96561" - x="63.277264" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="129.96561" - x="63.277264" - id="tspan6310" - sodipodi:role="line">w</tspan></text> - </g> - <g - id="g11768"> - <rect - y="135.43114" - x="58.558922" - height="13.836793" - width="15.97965" - id="rect4573-0-7-4" - style="fill:#b3b3b3;fill-rule:evenodd;stroke:#000000;stroke-width:0.73463506px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <text - sodipodi:linespacing="125%" - id="text6304" - y="144.58977" - x="64.540932" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="144.58977" - x="64.540932" - id="tspan6306" - sodipodi:role="line">r</tspan></text> - </g> - </g> - <g - transform="translate(54,-16)" - id="g10674"> - <g - id="g10664" - transform="translate(0,29.14287)"> - <rect - y="121.72949" - x="168.7959" - height="13.836793" - width="15.97965" - id="rect4573-0-7-0" - style="fill:#ff8080;fill-rule:evenodd;stroke:#000000;stroke-width:0.73463506px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <text - sodipodi:linespacing="125%" - id="text6308-1" - y="130.8354" - x="173.51424" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="130.8354" - x="173.51424" - id="tspan6310-7" - sodipodi:role="line">w</tspan></text> - </g> - <g - id="g10669"> - <rect - y="136.30093" - x="168.7959" - height="13.836793" - width="15.97965" - id="rect4573-0-7-4-7" - style="fill:#b3b3b3;fill-rule:evenodd;stroke:#000000;stroke-width:0.73463506px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <text - sodipodi:linespacing="125%" - id="text6304-5" - y="145.45956" - x="174.77791" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="145.45956" - x="174.77791" - id="tspan6306-6" - sodipodi:role="line">r</tspan></text> - </g> - </g> - <g - transform="translate(86.857134,-15.571435)" - id="g10674-6"> - <g - id="g10664-6" - transform="translate(0,29.14287)"> - <rect - y="121.72949" - x="168.7959" - height="13.836793" - width="15.97965" - id="rect4573-0-7-0-5" - style="fill:#ff8080;fill-rule:evenodd;stroke:#000000;stroke-width:0.73463506px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <text - sodipodi:linespacing="125%" - id="text6308-1-9" - y="130.8354" - x="173.51424" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="130.8354" - x="173.51424" - id="tspan6310-7-6" - sodipodi:role="line">w</tspan></text> - </g> - <g - id="g10669-5"> - <rect - y="136.30093" - x="168.7959" - height="13.836793" - width="15.97965" - id="rect4573-0-7-4-7-4" - style="fill:#b3b3b3;fill-rule:evenodd;stroke:#000000;stroke-width:0.73463506px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <text - sodipodi:linespacing="125%" - id="text6304-5-3" - y="145.45956" - x="174.77791" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="145.45956" - x="174.77791" - id="tspan6306-6-1" - sodipodi:role="line">r</tspan></text> - </g> - </g> - <text - sodipodi:linespacing="125%" - id="text10726" - y="139.6479" - x="135.03683" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - style="font-size:16px;font-weight:bold;-inkscape-font-specification:Sans Bold" - y="139.6479" - x="135.03683" - id="tspan10728" - sodipodi:role="line">Popen</tspan></text> - <text - sodipodi:linespacing="125%" - id="text6245-8-89" - y="158.43169" - x="234.46947" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" - xml:space="preserve"><tspan - id="tspan6270-24" - style="font-size:9px;font-style:normal;-inkscape-font-specification:Sans" - y="158.43169" - x="234.46947" - sodipodi:role="line">pipes</tspan></text> - </g> - <g - id="g11847" - transform="translate(-10,0.39179)"> - <a - style="fill:#b380ff" - id="a6328-0" - transform="translate(233.85132,-0.39179)"> - <path - sodipodi:type="arc" - style="fill:#b380ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="path4575-8" - sodipodi:cx="160.71428" - sodipodi:cy="222.89789" - sodipodi:rx="41.07143" - sodipodi:ry="25.535715" - d="m 201.78571,222.89789 c 0,14.10298 -18.38831,25.53571 -41.07143,25.53571 -22.68313,0 -41.07143,-11.43273 -41.07143,-25.53571 0,-14.10299 18.3883,-25.53572 41.07143,-25.53572 22.68312,0 41.07143,11.43273 41.07143,25.53572 z" - transform="translate(-4.6428572,12.857143)" /> - </a> - <text - sodipodi:linespacing="125%" - id="text10591-3" - y="240.5825" - x="372.50137" - style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="240.5825" - x="372.50137" - id="tspan10593-2" - sodipodi:role="line">Child</tspan></text> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path11075" - d="m 397.80427,110.64896 0,-52.85714" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#marker10758)" /> - <g - id="g10626-5" - transform="translate(233.85132,-0.39179)"> - <path - sodipodi:type="arc" - style="fill:#b380ff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="path4575-2-4" - sodipodi:cx="160.71428" - sodipodi:cy="222.89789" - sodipodi:rx="41.07143" - sodipodi:ry="25.535715" - d="m 201.78571,222.89789 c 0,14.10298 -18.38831,25.53571 -41.07143,25.53571 -22.68313,0 -41.07143,-11.43273 -41.07143,-25.53571 0,-14.10299 18.3883,-25.53572 41.07143,-25.53572 22.68312,0 41.07143,11.43273 41.07143,25.53572 z" - transform="translate(2.6428639,-191.24999)" /> - <text - xml:space="preserve" - style="font-size:14px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="140.40549" - y="36.651806" - id="text6334-0" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan6336-9" - x="140.40549" - y="36.651806">Parent</tspan></text> - </g> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path2991-4" - d="m 430.57864,244.49159 c 72.59794,2.79586 4.037,-103.77087 -17.74871,-113.05659" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#SquareM);marker-mid:none;marker-end:none" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path2991-7-87" - d="m 429.99418,225.76257 c 42.23788,-26.36983 -30.60585,-91.62802 -30.60585,-91.62802" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#SquareM);marker-mid:none;marker-end:none" /> - <a - id="a6331-7" - transform="translate(233.85132,-0.39179)"> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#SquareM);marker-end:none" - d="m 115.87982,226.83468 c -50.09792,-32.20413 30.963,-94.8423 30.963,-94.8423" - id="path2991-7-8-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - </a> - <text - sodipodi:linespacing="125%" - id="text6245-6" - y="240.18468" - x="323.85132" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - style="font-size:9px;font-style:italic;-inkscape-font-specification:Sans Italic" - y="240.18468" - x="323.85132" - id="tspan6247-3" - sodipodi:role="line">stdin</tspan></text> - <text - sodipodi:linespacing="125%" - id="text6245-8-6" - y="207.68279" - x="410.10779" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - id="tspan6270-2" - style="font-size:9px;font-style:italic;-inkscape-font-specification:Sans Italic" - y="207.68279" - x="410.10779" - sodipodi:role="line">stdout</tspan></text> - <text - sodipodi:linespacing="125%" - id="text6245-8-8-1" - y="261.61133" - x="426.17795" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - id="tspan6298-3" - style="font-size:9px;font-style:italic;-inkscape-font-specification:Sans Italic" - y="261.61133" - x="426.17795" - sodipodi:role="line">stderr</tspan></text> - <g - transform="translate(227.5656,-301.02546)" - id="g11065"> - <g - id="g11055"> - <rect - y="421.34998" - x="147.24721" - height="13.362738" - width="44.791309" - id="rect4573-0-7-0-55" - style="fill:#5599ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.73500001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <text - sodipodi:linespacing="125%" - id="text6308-1-6" - y="431.01376" - x="159.1624" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="431.01376" - x="159.1624" - id="tspan6310-7-9" - sodipodi:role="line">slave</tspan></text> - </g> - <g - id="g11060"> - <rect - y="407.25223" - x="147.24721" - height="13.362738" - width="44.791309" - id="rect4573-0-7-0-55-9" - style="fill:#80ffb3;fill-rule:evenodd;stroke:#000000;stroke-width:0.73500001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <text - sodipodi:linespacing="125%" - id="text6308-1-6-7" - y="416.68555" - x="155.16631" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="416.68555" - x="155.16631" - id="tspan6310-7-9-7" - sodipodi:role="line">master</tspan></text> - </g> - </g> - <text - sodipodi:linespacing="125%" - id="text10726-9" - y="116.71899" - x="429.1268" - style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - style="font-size:16px;font-weight:bold;-inkscape-font-specification:Sans Bold" - y="116.71899" - x="429.1268" - id="tspan10728-7" - sodipodi:role="line">Pseudoterminal</tspan><tspan - id="tspan11761" - style="font-size:16px;font-weight:bold;-inkscape-font-specification:Sans Bold" - y="136.71899" - x="429.1268" - sodipodi:role="line">(pty)</tspan></text> - </g> - </g> -</svg> diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/index.rst b/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/index.rst deleted file mode 100644 index ae737003736..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/docs/index.rst +++ /dev/null @@ -1,53 +0,0 @@ -Ptyprocess -========== - -.. include:: ../README.rst - -Contents: - -.. toctree:: - :maxdepth: 2 - - api - -What is a pty? --------------- - -A pty is a kernel-level object which processes can write data to and read data -from, a bit like a pipe. - -Unlike a pipe, data moves through a single pty in both directions. When you use -a program in a shell pipeline, or with :class:`subprocess.Popen` in Python, up -to three pipes are created for the process's standard streams (stdin, stdout -and stderr). When you run a program using ptyprocess, all three of its standard -streams are connected to a single pty: - -.. image:: images/pty_vs_popen.png - -A pty also does more than a pipe. It keeps track of the window size (rows and -columns of characters) and notifies child processes (with a SIGWINCH signal) -when it changes. In *cooked mode*, it does some processing of data sent from the -parent process, so for instance the byte ``03`` (entered as Ctrl-C) will cause -SIGINT to be sent to the child process. - -Many command line programs behave differently if they detect that stdin or stdout -is connected to a terminal instead of a pipe (using -`isatty() <http://linux.die.net/man/3/isatty>`_), because this normally means -that they're being used interactively by a human user. -They may format output differently (e.g. ``ls`` lists files in columns) -or prompt the user to confirm actions. -When you run these programs in ptyprocess, they will exhibit their 'interactive' -behaviour, instead of the 'pipe' behaviour you'll see using ``Popen()``. - -.. seealso:: - - `The TTY demystified <http://www.linusakesson.net/programming/tty/>`_ - Detailed article by Linus Akesson - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/__init__.py b/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/__init__.py +++ /dev/null diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_echo.py b/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_echo.py deleted file mode 100644 index 7d2b0e241dd..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_echo.py +++ /dev/null @@ -1,36 +0,0 @@ -import time -import unittest -from ptyprocess.ptyprocess import _is_solaris -from ptyprocess import PtyProcess - -class PtyEchoTestCase(unittest.TestCase): - - def _read_until_eof(self, proc): - """Read away all output on ``proc`` until EOF.""" - while True: - try: - proc.read() - except EOFError: - return - - @unittest.skipIf(_is_solaris, "waitnoecho cannot be called on this platform.") - def test_waitnoecho_forever(self): - """Ensure waitnoecho() with no timeout will return when echo=False.""" - cat = PtyProcess.spawn(['cat'], echo=False) - assert cat.waitnoecho() == True - assert cat.echo == False - assert cat.getecho() == False - cat.sendeof() - self._read_until_eof(cat) - assert cat.wait() == 0 - - @unittest.skipIf(_is_solaris, "waitnoecho cannot be called on this platform.") - def test_waitnoecho_timeout(self): - """Ensure waitnoecho() with timeout will return when using stty to unset echo.""" - cat = PtyProcess.spawn(['cat'], echo=True) - assert cat.waitnoecho(timeout=1) == False - assert cat.echo == True - assert cat.getecho() == True - cat.sendeof() - self._read_until_eof(cat) - assert cat.wait() == 0 diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_invalid_binary.py b/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_invalid_binary.py deleted file mode 100755 index cf280981b80..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_invalid_binary.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import time -import unittest -from ptyprocess import PtyProcess, PtyProcessUnicode -import errno -import os -import stat -import tempfile - -class InvalidBinaryChars(unittest.TestCase): - - def test_invalid_binary(self): - '''This tests that we correctly handle the case where we attempt to - spawn a child process but the exec call fails''' - - # Create a file that should fail the exec call - dirpath = tempfile.mkdtemp() - fullpath = os.path.join(dirpath, "test") - - with open(fullpath, 'wb') as f: - # Add some constant so it will never be executable - # - Not 0x54AD (Windows PE) - # - Not 0x7FEF (ELF) - # - Not 0410 or 0413 (a.out) - # - Not 0x2321 (script) - file_start = b'\x00\x00' - file_data = file_start + os.urandom(1022) - f.write(file_data) - - # Make it executable - st = os.stat(fullpath) - os.chmod(fullpath, st.st_mode | stat.S_IEXEC) - - # TODO Verify this does what is intended on Windows - try: - child = PtyProcess.spawn([fullpath]) - # If we get here then an OSError was not raised - child.close() - raise AssertionError("OSError was not raised") - except OSError as err: - if errno.ENOEXEC == err.errno: - # This is what should happen - pass - else: - # Re-raise the original error to fail the test - raise - finally: - os.unlink(fullpath) - os.rmdir(dirpath) - -if __name__ == '__main__': - unittest.main() - -suite = unittest.makeSuite(InvalidBinaryChars,'test') - diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_preexec_fn.py b/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_preexec_fn.py deleted file mode 100755 index ed2df27da72..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_preexec_fn.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python -''' -PEXPECT LICENSE - - This license is approved by the OSI and FSF as GPL-compatible. - http://opensource.org/licenses/isc-license.txt - - Copyright (c) 2012, Noah Spurrier <noah@noah.org> - PERMISSION TO USE, COPY, MODIFY, AND/OR DISTRIBUTE THIS SOFTWARE FOR ANY - PURPOSE WITH OR WITHOUT FEE IS HEREBY GRANTED, PROVIDED THAT THE ABOVE - COPYRIGHT NOTICE AND THIS PERMISSION NOTICE APPEAR IN ALL COPIES. - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -''' -import unittest -import shutil -from ptyprocess import PtyProcess -import os -import tempfile - -class PreexecFns(unittest.TestCase): - def test_preexec(self): - td = tempfile.mkdtemp() - filepath = os.path.join(td, 'foo') - def pef(): - with open(filepath, 'w') as f: - f.write('bar') - - try: - child = PtyProcess.spawn(['ls'], preexec_fn=pef) - child.close() - with open(filepath, 'r') as f: - assert f.read() == 'bar' - - finally: - shutil.rmtree(td) - - def test_preexec_error(self): - def func(): - raise ValueError("Test error condition") - - try: - child = PtyProcess.spawn(['ls'], preexec_fn=func) - # If we get here then an error was not raised - child.close() - raise AssertionError("ValueError was not raised") - except ValueError as err: - if str(err) != "Test error condition": - # Re-raise the original error to fail the test - raise - - diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_spawn.py b/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_spawn.py deleted file mode 100755 index 696e12621bf..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_spawn.py +++ /dev/null @@ -1,113 +0,0 @@ -import os -import time -import select -import unittest -from ptyprocess.ptyprocess import which -from ptyprocess import PtyProcess, PtyProcessUnicode - -class PtyTestCase(unittest.TestCase): - def setUp(self): - self.cmd = u'echo $ENV_KEY; exit 0\n' - self.env = os.environ.copy() - self.env_key = u'ENV_KEY' - self.env_value = u'env_value' - self.env[self.env_key] = self.env_value - - def _canread(self, fd, timeout=1): - return fd in select.select([fd], [], [], timeout)[0] - - def _spawn_sh(self, ptyp, cmd, outp, env_value): - # given, - p = ptyp.spawn(['sh'], env=self.env) - p.write(cmd) - - # exercise, - while True: - try: - outp += p.read() - except EOFError: - break - - # verify, input is echo to output - assert cmd.strip() in outp - - # result of echo $ENV_KEY in output - assert env_value in outp - - # exit successfully (exit 0) - assert p.wait() == 0 - - - def test_spawn_sh(self): - outp = b'' - self._spawn_sh(PtyProcess, self.cmd.encode('ascii'), - outp, self.env_value.encode('ascii')) - - def test_spawn_sh_unicode(self): - outp = u'' - self._spawn_sh(PtyProcessUnicode, self.cmd, - outp, self.env_value) - - def test_quick_spawn(self): - """Spawn a very short-lived process.""" - # so far only reproducible on Solaris 11, spawning a process - # that exits very quickly raised an exception at 'inst.setwinsize', - # because the pty file descriptor was quickly lost after exec(). - PtyProcess.spawn(['true']) - - def _interactive_repl_unicode(self, echo): - """Test Call and response with echo ON/OFF.""" - # given, - bc = PtyProcessUnicode.spawn(['bc'], echo=echo) - given_input = u'2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2+2\n' - expected_output = u'40' - - # gnu-bc will display a long FSF banner on startup, - # whereas bsd-bc (on FreeBSD, Solaris) display no - # banner at all. To ensure we've read up to our - # current prompt, read until the response of '2^16' is found. - time.sleep(1) - - bc.write(u'2^16\n') - outp = u'' - while self._canread(bc.fd): - outp += bc.read() - assert u'65536' in outp - - # exercise, - bc.write(given_input) - - while self._canread(bc.fd, timeout=2): - outp += bc.read() - - # with echo ON, we should see our input. - # - # note: we cannot assert the reverse: on Solaris, FreeBSD, - # and OSX, our input is echoed to output even with echo=False, - # something to do with the non-gnu version of bc(1), perhaps. - if echo: - assert given_input.strip() in outp - - # we should most certainly see the result output. - assert expected_output in outp - - # exercise sending EOF - bc.sendeof() - - # validate EOF on read - while True: - try: - bc.read() - except EOFError: - break - - # validate exit status, - assert bc.wait() == 0 - - @unittest.skipIf(which('bc') is None, "bc(1) not found on this server.") - def test_interactive_repl_unicode_noecho(self): - self._interactive_repl_unicode(echo=False) - - @unittest.skipIf(which('bc') is None, "bc(1) not found on this server.") - def test_interactive_repl_unicode_echo(self): - self._interactive_repl_unicode(echo=True) diff --git a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_wait.py b/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_wait.py deleted file mode 100644 index 6cc096a2dc3..00000000000 --- a/lldb/third_party/Python/module/ptyprocess-0.6.0/tests/test_wait.py +++ /dev/null @@ -1,32 +0,0 @@ -""" Test cases for PtyProcess.wait method. """ -import time -import unittest -from ptyprocess import PtyProcess - - -class TestWaitAfterTermination(unittest.TestCase): - """Various test cases for PtyProcess.wait()""" - - def test_wait_true_shortproc(self): - """Ensure correct (True) wait status for short-lived processes.""" - child = PtyProcess.spawn(['true']) - # Wait so we're reasonable sure /bin/true has terminated - time.sleep(0.2) - self.assertEqual(child.wait(), 0) - - def test_wait_false_shortproc(self): - """Ensure correct (False) wait status for short-lived processes.""" - child = PtyProcess.spawn(['false']) - # Wait so we're reasonable sure /bin/false has terminated - time.sleep(0.2) - self.assertNotEqual(child.wait(), 0) - - def test_wait_twice_longproc(self): - """Ensure correct wait status when called twice.""" - # previous versions of ptyprocess raises PtyProcessError when - # wait was called more than once with "Cannot wait for dead child - # process.". No longer true since v0.5. - child = PtyProcess.spawn(['sleep', '1']) - # this call to wait() will block for 1s - for count in range(2): - self.assertEqual(child.wait(), 0, count) |