[Lldb-commits] [lldb] r285542 - [Test Suite] Pull generateSource into lldbtest

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Tue Nov 8 07:37:56 PST 2016


On Sun, Oct 30, 2016 at 9:57 PM Chris Bieneman via lldb-commits <
lldb-commits at lists.llvm.org> wrote:

>
> Modified: lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py
> URL:
> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py?rev=285542&r1=285541&r2=285542&view=diff
>
> ==============================================================================
> --- lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py (original)
> +++ lldb/trunk/packages/Python/lldbsuite/test/lldbtest.py Sun Oct 30
> 23:48:19 2016
> @@ -1848,6 +1848,33 @@ class TestBase(Base):
>                  folder = os.path.dirname(folder)
>                  continue
>
> +    def generateSource(self, source):
> +        template = source + '.template'
> +        temp = os.path.join(os.getcwd(), template)
> +        with open(temp, 'r') as f:
> +            content = f.read()
> +
> +        public_api_dir = os.path.join(
> +            os.environ["LLDB_SRC"], "include", "lldb", "API")
> +
> +        # Look under the include/lldb/API directory and add #include
> statements
> +        # for all the SB API headers.
> +        public_headers = os.listdir(public_api_dir)
> +        # For different platforms, the include statement can vary.
> +        if self.hasDarwinFramework():
> +            include_stmt = "'#include <%s>' % os.path.join('LLDB',
> header)"
> +        else:
> +            include_stmt = "'#include <%s>' %
> os.path.join(public_api_dir, header)"
> +        list = [eval(include_stmt) for header in public_headers if (
> +            header.startswith("SB") and header.endswith(".h"))]
> +        includes = '\n'.join(list)
> +        new_content = content.replace('%include_SB_APIs%', includes)
> +        src = os.path.join(os.getcwd(), source)
> +        with open(src, 'w') as f:
> +            f.write(new_content)
> +
> +        self.addTearDownHook(lambda: os.remove(src))
> +
>

The non hasDarwinFramework codepath is broken here, and I don't believe it
to be a Windows specific issue.  I'm getting the following error in
multiple tests.

Traceback (most recent call last):
  File
"C:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\functionalities\plugins\commands\TestPluginCommands.py",
line 23, in setUp
    self.generateSource('plugin.cpp')
  File "C:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\lldbtest.py",
line 1868, in generateSource
    list = [eval(include_stmt) for header in public_headers if (
  File "C:\src\llvm\tools\lldb\packages\Python\lldbsuite\test\lldbtest.py",
line 1869, in <listcomp>
    header.startswith("SB") and header.endswith(".h"))]
  File "<string>", line 1, in <module>
*NameError: name 'public_api_dir' is not defined*
Config=i686-C:\src\llvmbuild\ninja_release\bin\clang.exe

I'm hypothesizing that the problem is that from inside of a list
comprehension, your set of locals is not the same as outside of the list
comprehension, and so the eval statement does not see the variable
`public_api_dir`.  Is there any way you could provide a fix for this?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20161108/ace26876/attachment.html>


More information about the lldb-commits mailing list