summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/cpp
Commit message (Collapse)AuthorAgeFilesLines
* Added a testcase for defining and using lambdas in the expression parser.Sean Callanan2016-04-152-0/+21
| | | | | | <rdar://problem/25739133> llvm-svn: 266397
* Fix test cases for big-endian systemsUlrich Weigand2016-04-141-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A number of test cases were failing on big-endian systems simply due to byte order assumptions in the tests themselves, and no underlying bug in LLDB. These two test cases: tools/lldb-server/lldbgdbserverutils.py python_api/process/TestProcessAPI.py actually check for big-endian target byte order, but contain Python errors in the corresponding code paths. These test cases: functionalities/data-formatter/data-formatter-python-synth/TestDataFormatterPythonSynth.py functionalities/data-formatter/data-formatter-smart-array/TestDataFormatterSmartArray.py functionalities/data-formatter/synthcapping/TestSyntheticCapping.py lang/cpp/frame-var-anon-unions/TestFrameVariableAnonymousUnions.py python_api/sbdata/TestSBData.py (first change) could be fixed to check for big-endian target byte order and update the expected result strings accordingly. For the two synthetic tests, I've also updated the source to make sure the fake_a value is always nonzero on both big- and little-endian platforms. These test case: python_api/sbdata/TestSBData.py (second change) functionalities/memory/cache/TestMemoryCache.py simply accessed memory with the wrong size, which wasn't noticed on LE but fails on BE. Differential Revision: http://reviews.llvm.org/D18985 llvm-svn: 266315
* Skip a test in TestNamespaceLookup on linux to avoid a crashPavel Labath2016-04-121-0/+1
| | | | llvm-svn: 266054
* Switch from unittest2.expectedFailure to our own decorator on TestSTLPavel Labath2016-03-161-2/+1
| | | | | | | the main reason is that our decorator contains extra fluff to "expect" crashes (which seem to happen occasionaly on the android buildbot). llvm-svn: 263633
* Fix TestInlines.py on WindowsAdrian McCarthy2016-02-294-0/+114
| | | | | | | | | | | | | | The inlining semantics for C and C++ are different, which affects the test's expectation of the number of times the function should appear in the binary. In the case of this test, C semantics means there should be three instances of inner_inline, while C++ semantics means there should be only two. On Windows, clang uses C++ inline semantics even for C code, and there doesn't seem to be a combination of compiler flags to avoid this. So, for consistency, I've recast the test to use C++ everywhere. Since the test resided under lang/c, it seemed appropriate to move it to lang/cpp. This does not address the other XFAIL for this test on Linux/gcc. See https://llvm.org/bugs/show_bug.cgi?id=26710 Differential Revision: http://reviews.llvm.org/D17650 llvm-svn: 262255
* Remove expectedFailureFreeBSD decoratorEd Maste2016-02-192-2/+2
| | | | | | | | All invocations are updated to use the generic expectedFailureAll. Differential Revision: http://reviews.llvm.org/D17455 llvm-svn: 261355
* Remove XFAIL from test passing on FreeBSDEd Maste2016-02-191-1/+0
| | | | | | | | Both Linux and FreeBSD had a comment "This needs to be root-caused." It looks like the failure has been fixed on both, and the Linux XFAIL decorator was removed in r233716 (Mar 2015). llvm-svn: 261333
* Enable TestUnicodeLiteralsPavel Labath2016-02-191-4/+0
| | | | | | Test should work everywhere except windows now. llvm-svn: 261314
* Renamed TestRdar12991846 to the more descriptive TestUnicodeLiterals.Sean Callanan2016-02-123-1/+1
| | | | | | | Test cases should not be named after PR or Radar numbers. It's fine to annotate them with these numbers in comments, however. llvm-svn: 260699
* Remove FreeBSD failure decorator from TestCppIncompleteTypesEd Maste2016-02-101-1/+0
| | | | | | | | | | CFLAGS is now being set correctly to pass -flimit-debug-info or -fno-limit-debug-info on FreeBSD. I'm not sure which change is responsible for the fix, though. llvm.org/pr25626 llvm-svn: 260330
* Remove skipIf<compiler> decorators.Zachary Turner2016-02-091-2/+2
| | | | | | | These were supposed to have been removed in a previous patch, but I missed them. llvm-svn: 260291
* Delete all the xfail / skip decorators for specific compilers.Zachary Turner2016-02-098-10/+9
| | | | | | Ported everything over to using expectedFailureAll. llvm-svn: 260289
* A number of improvements to decorator conditionals.Zachary Turner2016-02-081-1/+1
| | | | | | | | | | | | | | | | | | | * Change the `not_in` function to be called `no_match`. This makes it clear that keyword arguments can be more than just lists. * Change the name of `_check_list_or_lambda` to `_match_decorator_property`. Again clarifying that decorator params are not always lists. * Always use a regex match when matching strings. This allows automatic support for regex matching on all decorator properties. Also support compiled regex values. * Fix a bug in the compiler check used by _decorateTest. The two arguments were reversed, the condition was always wrong. * Change one test that uses skipUnlessArch to use skipIf, to demonstrate that skipIf can now handle more scenarios. Differential Revision: http://reviews.llvm.org/D16938 llvm-svn: 260135
* Remove expectedFailureWindows decorator.Zachary Turner2016-02-0816-30/+22
| | | | | | | | | | | | | | | expectedFailureWindows is equivalent to using the general expectedFailureAll decorator with oslist="windows". Additionally, by moving towards these common decorators we can solve the issue of having to support decorators that can be called with or without arguments. Once all decorators are always called with arguments, and this is enforced by design (because you can't specify the condition you're decorating for without passing an argument) the implementation of the decorators can become much simpler Differential Revision: http://reviews.llvm.org/D16936 llvm-svn: 260134
* Take 2: Use an artifical namespace so that member vars do not hide local vars.Siva Chandra2016-02-053-0/+275
| | | | | | | | | | | | Summary: This relands r259810 with fix for failures on Mac. Reviewers: spyffe, tfiala Subscribers: tfiala, lldb-commits Differential Revision: http://reviews.llvm.org/D16900 llvm-svn: 259902
* Move the rest of the tests over to using the new decorator module.Zachary Turner2016-02-0423-23/+46
| | | | llvm-svn: 259838
* Revert "Use an artifical namespace so that member vars do not hide local vars."Siva Chandra2016-02-043-275/+0
| | | | | | | | | | | | | | Summary: This reverts commit 8af14b5f9af68c31ac80945e5b5d56f0a14b38e4. Reverting as it breaks a few tests on Mac. Reviewers: spyffe Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D16895 llvm-svn: 259823
* Use an artifical namespace so that member vars do not hide local vars.Siva Chandra2016-02-043-0/+275
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: While evaluating expressions when stopped in a class method, there was a problem of member variables hiding local variables. This was happening because, in the context of a method, clang already knew about member variables with their name and assumed that they were the only variables with those names in scope. Consequently, clang never checks with LLDB about the possibility of local variables with the same name and goes wrong. This change addresses the problem by using an artificial namespace "$__lldb_local_vars". All local variables in scope are declared in the "$__lldb_expr" method as follows: using $__lldb_local_vars::<local var 1>; using $__lldb_local_vars::<local var 2>; ... This hides the member variables with the same name and forces clang to enquire about the variables which it thinks are declared in $__lldb_local_vars. When LLDB notices that clang is enquiring about variables in $__lldb_local_vars, it looks up local vars and conveys their information if found. This way, member variables do not hide local variables, leading to correct evaluation of expressions. A point to keep in mind is that the above solution does not solve the problem for one specific case: namespace N { int a; } class A { public: void Method(); int a; }; void A::Method() { using N::a; ... // Since the above solution only touches locals, it does not // force clang to enquire about "a" coming from namespace N. } Reviewers: clayborg, spyffe Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D16746 llvm-svn: 259810
* Move some of the common decorators to decorators.py.Zachary Turner2016-02-043-3/+6
| | | | | | | | | | | | This doesn't attempt to move every decorator. The reason for this is that it requires touching every single test file to import decorators.py. I would like to do this in a followup patch, but in the interest of keeping the patches as bite-sized as possible, I've only attempted to move the underlying common decorators first. A few tests call these directly, so those tests are updated as part of this patch. llvm-svn: 259807
* Always write the session file in UTF-8.Zachary Turner2016-02-011-1/+0
| | | | | | | | | | | | | | | | | | This patch attempts to solve the Python 2 / Python 3 incompatibilities by introducing a new `encoded_file` abstraction that we use instead of `io.open()`. The problem with the builtin implementation of `io.open` is that `read` and `write` accept and return `unicode` objects, which are not always convenient to work with in Python 2. We solve this by making `encoded_file.open()` return the same object returned by `io.open()` but with hooked `read()` and `write()` methods. These hooked methods will accept binary or text data, and conditionally convert what it gets to a `unicode` object using the correct encoding. When calling `read()` it also does any conversion necessary to convert the output back into the native `string` type of the running python version. Differential Revision: http://reviews.llvm.org/D16736 llvm-svn: 259379
* Revert "Resubmit r258759 with proper unicode handling."Zachary Turner2016-01-271-0/+1
| | | | | | This reverts commit 2c79d60214e146b13b233392a859b4f79340e90e. llvm-svn: 258978
* Resubmit r258759 with proper unicode handling.Zachary Turner2016-01-271-1/+0
| | | | | | | | | Instead of opening the file in unicode mode, we need only encode data which potentially has non-ASCII characters as UTF8 before writing. This should work across both Python versions, and is also far simpler than anything else discussed. llvm-svn: 258969
* XFail TestCPPAuto on Windows until we can find the root problem.Adrian McCarthy2016-01-271-0/+1
| | | | | | llvm.org/pr26339 llvm-svn: 258943
* Reverting r258759 as it is breaking the OSX buildEnrico Granata2016-01-261-0/+1
| | | | llvm-svn: 258791
* Write the session log file in UTF-8.Zachary Turner2016-01-261-1/+0
| | | | | | | | | | | Previously we were writing in the default encoding, which depends on the operating system and is not guaranteed to be unicode aware. On Python 3, this would lead to a situation where writing unicode text to the log file generates an exception. The fix here is to write session logs using the proper encoding, which incidentally fixes another test, so xfail is removed from that. llvm-svn: 258759
* XFail TestNamespaceLookup tests on Windows.Adrian McCarthy2016-01-221-1/+5
| | | | | | There's already a pr: https://llvm.org/bugs/show_bug.cgi?id=25819 llvm-svn: 258577
* NFC. Corrects name of test class and a comment.Adrian McCarthy2016-01-211-2/+2
| | | | llvm-svn: 258433
* Remove assumptions that thread 0 is always the main thread.Zachary Turner2016-01-215-18/+12
| | | | | | | | | | | | | | | | | Starting with Windows 10, the Windows loader is itself multi-threaded, meaning that the loader spins up a few threads to do process initialization before it executes main. Windows delivers these notifications asynchronously and they can come out of order, so we can't be sure that the first thread we get a notification about is actually the zero'th thread. This patch fixes this by requesting the thread stopped at the breakpoint that was specified, rather than getting thread 0 and verifying that it is stopped at a breakpoint. Differential Revision: http://reviews.llvm.org/D16247 llvm-svn: 258432
* XFAIL TestCppNsImport on FreeBSDEd Maste2015-12-221-0/+1
| | | | | | | | | It has an existing XFAIL annotation for GCC >= 4.9 but it also fails on FreeBSD 10.x with Clang 3.4.1. llvm.org/pr25925 llvm-svn: 256270
* Add expectedFailureFreeBSD to tests failing in the same way as on LinuxEd Maste2015-12-221-0/+3
| | | | | | llvm.org/pr25819 llvm-svn: 256250
* [TestCPPAuto] On linux, we need -fno-limit-debug-info.Siva Chandra2015-12-192-1/+4
| | | | | | | | | | | | Summary: Also xfailed for GCC as there is an problem with debug info generation. Reviewers: granata.enrico Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D15657 llvm-svn: 256067
* Add support for seeing through clang::AutoType in ClangASTContextEnrico Granata2015-12-183-0/+45
| | | | | | | | This allows LLDB to deal correctly with expression result variables declared via the C++11 'auto' keyword rdar://problem/23960490 llvm-svn: 256051
* Revert "Temporarily skip TestWithLimitDebugInfo on Darwin and OS X"Todd Fiala2015-12-141-2/+0
| | | | | | This reverts commit 30ed0826a1bb800454088ea1ae16c113a69b92b1. llvm-svn: 255557
* Temporarily skip TestWithLimitDebugInfo on Darwin and OS XTodd Fiala2015-12-141-0/+2
| | | | | | This test is erroring out on a sequence call to a function. llvm-svn: 255549
* Make debug info specification use categories system.Zachary Turner2015-12-141-3/+3
| | | | | | | Reviewed By: Tamas Berghammer, Pavel Labath Differential Revision: http://reviews.llvm.org/D15428 llvm-svn: 255525
* Extend XFAIL on TestNamespaceLookup on linuxPavel Labath2015-12-141-1/+1
| | | | | | one of the tests seems to (occasionally) fail with clang as well. llvm-svn: 255492
* XFAIL TestNamespaceLookup for linuxPavel Labath2015-12-141-0/+4
| | | | llvm-svn: 255490
* Test case for "Fix scope-based lookup when more than one function is found."Dawn Perchik2015-12-121-0/+216
| | | | | | | Missed commit in r255439. Differential Revision: http://reviews.llvm.org/D15312 llvm-svn: 255440
* Fix scope-based lookup when more than one function is found.Dawn Perchik2015-12-126-2/+169
| | | | | | | | | | | | | | | | | | | | | | | | When multiple functions are found by name, lldb removes duplicate entries of functions with the same type, so the first function in the symbol context list is chosen, even if it isn't in scope. This patch uses the declaration context of the execution context to select the function which is in scope. This fixes cases like the following: int func(); namespace ns { int func(); void here() { // Run to BP here and eval 'p func()'; // lldb used to find ::func(), now finds ns::func(). } } Reviewed by: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D15312 llvm-svn: 255439
* Trying to submit 254476 one more time. This implement -gmodule debugging ↵Greg Clayton2015-12-081-2/+2
| | | | | | | | | | | | | | support. It was previously reverted due to issues that showed up only on linux. I was able to reproduce these issues and fix the underlying cause. So this is the same patch as 254476 with the following two fixes: - Fix not trying to complete classes that don't have external sources - Fix ClangASTSource::CompleteType() to check the decl context of types that it finds by basename to ensure we don't complete a type "S" with a type like "std::S". Before this fix ClangASTSource::CompleteType() would accept _any_ type that had a matching basename and copy it into the other type. <rdar://problem/22992457> llvm-svn: 254980
* Revert "Added support for -gmodule debugging when debug info is left in the ↵Tamas Berghammer2015-12-021-2/+2
| | | | | | | | | .o files on Darwin." The commit caused a test failure on the linux buildbot in TestDataFormatterSynthVal. llvm-svn: 254502
* Added support for -gmodule debugging when debug info is left in the .o files ↵Greg Clayton2015-12-021-2/+2
| | | | | | | | | | | | | | | | | | | | on Darwin. This is done by finding the types that are forward declarations that come from a module, and loading that module's debug info in a separate lldb_private::Module, and copying the type over into the current module using a ClangASTImporter object. ClangASTImporter objects are already used to copy types from on clang::ASTContext to another for expressions so the type copying code has been around for a while. A new FindTypes variant was added to SymbolVendor and SymbolFile: size_t SymbolVendor::FindTypes (const std::vector<CompilerContext> &context, bool append, TypeMap& types); size_t SymbolVendor::FindTypes (const std::vector<CompilerContext> &context, bool append, TypeMap& types); The CompilerContext is a way to represent the exact context of a type and pass it through an agnostic API boundary so that we can find that exact context elsewhere in another file. This was required here because we can have a module that has submodules, both of which have a "foo" type. I am not able to add tests for this yet as we currently don't build our C/C++/ObjC binaries with the clang binary that we build. There are some driver issues where it can't find the header files for the C and C++ standard library which makes compiling these tests hard. We can't also guarantee that if we are building with clang that it supporst the exact format of -gmodule debugging that we are trying to test. We have had other versions of clang that had a different implementation of -gmodule debugging that we are no longer supporting, so we can't enable tests if we are building with clang without compiling something and looking at the structure of the DWARF that was generated to ensure that it is the format we can actually use. llvm-svn: 254476
* Temporarily add expectedFailureFreeBSD to tests that fail to detect Clang on ↵Ed Maste2015-11-241-0/+1
| | | | | | | | | | FreeBSD On FreeBSD we may get Clang via CC=cc or CC=/usr/bin/cc. llvm.org/pr25626 llvm-svn: 254006
* Fix up LLDB for a change in the way clang represents anonymous unions such ↵Enrico Granata2015-11-193-0/+55
| | | | | | that the 'frame variable' command can still find the members of such union as if they were top-level variables in the current scope llvm-svn: 253613
* Fix some issues with swig & string conversion.Zachary Turner2015-11-181-0/+3
| | | | | | | | | | | | | | | | | | | | This patch fixes two issues: 1) Popen needs to be used with universal_newlines=True by default. This elicits automatic decoding from bytes -> string in Py3, and has no negative effects in other Py versions. 2) The swig typemaps for converting between string and (char*, int) did not work correctly when the length of the string was 0, indicating an error. In this case we would try to construct a string from uninitialized data. 3) Ironically, the bug mentioned in #2 led to a test passing on Windows that was actually broken, because the test was written such that the assertion was never even getting checked, so it passed by default. So we additionally fix this test to also fail if the method errors. By fixing this test it's now broken on Windows, so we also xfail it. llvm-svn: 253487
* Fixed a testcase problem where disassembly would fail for nameless functions.Sean Callanan2015-11-131-1/+2
| | | | llvm-svn: 253101
* Fix multiple symbol lookup in the same namespaceEugene Leviant2015-11-132-8/+44
| | | | llvm-svn: 253028
* Remove `use_lldb_suite` from the package, and don't import it anymore.Zachary Turner2015-11-0318-18/+18
| | | | | | | | | | | | | | | | This module was originally intended to be imported by top-level scripts to be able to find the LLDB packages and third party libraries. Packages themselves shouldn't need to import it, because by the time it gets into the package, the top-level script should have already done this. Indeed, it was just adding the same values to sys.path multiple times, so this patch is essentially no functional change. To make sure it doesn't get re-introduced, we also delete the `use_lldb_suite` module from `lldbsuite/test`, although the original copy still remains in `lldb/test` llvm-svn: 251963
* Tighten up sys.path, and use absolute imports everywhere.Zachary Turner2015-11-0332-67/+69
| | | | | | | | | | | | | | | | | | | | For convenience, we had added the folder that dotest.py was in to sys.path, so that we could easily write things like `import lldbutil` from anywhere and any test. This introduces a subtle problem when using Python's package system, because when unittest2 imports a particular test suite, the test suite is detached from the package. Thus, writing "import lldbutil" from dotest imports it as part of the package, and writing the same line from a test does a fresh import since the importing module was not part of the same package. The real way to fix this is to use absolute imports everywhere. Instead of writing "import lldbutil", we need to write "import lldbsuite.test.util". This patch fixes up that and all other similar cases, and additionally removes the script directory from sys.path to ensure that this can't happen again. llvm-svn: 251886
* Move lldb/test to lldb/packages/Python/lldbsuite/test.Zachary Turner2015-10-28106-0/+4295
This is the conclusion of an effort to get LLDB's Python code structured into a bona-fide Python package. This has a number of benefits, but most notably the ability to more easily share Python code between different but related pieces of LLDB's Python infrastructure (for example, `scripts` can now share code with `test`). llvm-svn: 251532
OpenPOWER on IntegriCloud