[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