<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in convenience.in</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>c7a56af3072c2fa89f0968d7f00b22f7bff0812b - [lldb][bindings] Implement __repr__ instead of __str__</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/lldb/test/Shell/Driver/Inputs/convenience.in#c7a56af3072c2fa89f0968d7f00b22f7bff0812b</link>
        <description>[lldb][bindings] Implement __repr__ instead of __str__When using the `script` Python repl, SB objects are printed in a way that givesthe user no information. The simplest example is:```(lldb) script lldb.debugger&lt;lldb.SBDebugger; proxy of &lt;Swig Object of type &apos;lldb::SBDebugger *&apos; at 0x1097a5de0&gt; &gt;```This output comes from the Python repl printing the `repr()` of an object.None of the SB classes implement `__repr__`, and all print like the above.However, many (most?, all?) SB classes implement `__str__`. Because theyimplement `__str__`, a more detailed output can be had by `print`ing theobject, for example:```(lldb) script print(lldb.debugger)Debugger (instance: &quot;debugger_1&quot;, id: 1)```For convenience, this change switches all SB classes that implement to`__str__` to instead implement `__repr__`. **The result is that `str()` and`repr()` will produce the same output**. This is because `str` calls `__repr__`for classes that have  no `__str__` method.The benefit being that when writing a `script` invocation, you don&apos;t need toremember to wrap in `print()`. If that isn&apos;t enough motivation, consider thecase where your Python expression results in a list of SB objects, in that caseyou&apos;d have to `map` or use a list comprehension like `[str(x) for x in &lt;expr&gt;]`in order to see the details of the objects in the list.For reference, the docs for `repr` say:&gt; repr(object)&gt;   Return a string containing a printable representation of an object. For&gt;   many types, this function makes an attempt to return a string that would&gt;   yield an object with the same value when passed to eval(); otherwise, the&gt;   representation is a string enclosed in angle brackets that contains the&gt;   name of the type of the object together with additional information often&gt;   including the name and address of the object. A class can control what this&gt;   function returns for its instances by defining a __repr__() method.and the docs for `__repr__` say:&gt; object.__repr__(self)&gt;   Called by the repr() built-in function to compute the &#8220;official&#8221; string&gt;   representation of an object. If at all possible, this should look like a&gt;   valid Python expression that could be used to recreate an object with the&gt;   same value (given an appropriate environment). If this is not possible, a&gt;   string of the form &lt;...some useful description...&gt; should be returned. The&gt;   return value must be a string object. If a class defines __repr__() but not&gt;   __str__(), then __repr__() is also used when an &#8220;informal&#8221; string&gt;   representation of instances of that class is required.&gt;&gt;   This is typically used for debugging, so it is important that the&gt;   representation is information-rich and unambiguous.Even if it were convenient to construct Python expressions for SB classes sothat they could be `eval`&apos;d, however for typical lldb usage, I can&apos;t think of amotivating reason to do so. As it stands, the only action the docs say to do,that this change doesn&apos;t do, is wrap the `repr` string in `&lt;&gt;` angle brackets.An alternative implementation is to change lldb&apos;s python repl to apply `str()`to the top level result. While this would work well in the case of a single SBobject, it doesn&apos;t work for a list of SB objects, since `str([x])` uses `repr`to convert each list element to a string.Differential Revision: https://reviews.llvm.org/D127458

            List of files:
            /llvm-project/lldb/test/Shell/Driver/Inputs/convenience.in</description>
        <pubDate>Thu, 09 Jun 2022 15:37:02 +0000</pubDate>
        <dc:creator>Dave Lee &lt;davelee.com@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>87aa9c9e4d41ed881453e2fab85b3d25f648bb55 - Re-land &quot;[test] Split LLDB tests into API, Shell &amp; Unit&quot;</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/lldb/test/Shell/Driver/Inputs/convenience.in#87aa9c9e4d41ed881453e2fab85b3d25f648bb55</link>
        <description>Re-land &quot;[test] Split LLDB tests into API, Shell &amp; Unit&quot;The original patch got reverted because it broke `check-lldb` on a cleanbuild. This fixes that.llvm-svn: 374201

            List of files:
            /llvm-project/lldb/test/Shell/Driver/Inputs/convenience.in</description>
        <pubDate>Wed, 09 Oct 2019 19:22:02 +0000</pubDate>
        <dc:creator>Jonas Devlieghere &lt;jonas@devlieghere.com&gt;</dc:creator>
    </item>
<item>
        <title>22314179f0660c172514b397060fd8f34b586e82 - [test] Split LLDB tests into API, Shell &amp; Unit</title>
        <link>http://src.rcs.uwaterloo.ca:8080/source/history/llvm-project/lldb/test/Shell/Driver/Inputs/convenience.in#22314179f0660c172514b397060fd8f34b586e82</link>
        <description>[test] Split LLDB tests into API, Shell &amp; UnitLLDB has three major testing strategies: unit tests, tests that exercisethe SB API though dotest.py and what we currently call lit tests. Thelater is rather confusing as we&apos;re now using lit as the driver for allthree types of tests. As most of this grew organically, the directorystructure in the LLDB repository doesn&apos;t really make this clear.The &apos;lit&apos; tests are part of the root and among these tests there&apos;s aUnit and Suite folder for the unit and dotest-tests. This layout makesit impossible to run just the lit tests.This patch changes the directory layout to match the 3 testingstrategies, each with their own directory and their own configurationfile. This means there are now 3 directories under lit with 3corresponding targets: - API (check-lldb-api): Test exercising the SB API. - Shell (check-lldb-shell): Test exercising command line utilities. - Unit (check-lldb-unit): Unit tests.Finally, there&apos;s still the `check-lldb` target that runs all three testsuites.Finally, this also renames the lit folder to `test` to match the LLVMrepository layout.Differential revision: https://reviews.llvm.org/D68606llvm-svn: 374184

            List of files:
            /llvm-project/lldb/test/Shell/Driver/Inputs/convenience.in</description>
        <pubDate>Wed, 09 Oct 2019 16:38:47 +0000</pubDate>
        <dc:creator>Jonas Devlieghere &lt;jonas@devlieghere.com&gt;</dc:creator>
    </item>
</channel>
</rss>
