Waaaaitasecond, I’m seeing the gtest subproject…
it’s a bit embarrassing that I haven’t checked out top of tree in so long!
I’m going to take a look around.  Still interested in collaborating on this.

Sean

> On Oct 2, 2014, at 6:11 PM, Zachary Turner <ztur...@google.com> wrote:
> 
> I gave it a brief look, but I didn't get it working.  Clang and LLD both 
> already do this, so I figured it would be as simple as copying their CMake 
> for the gtest stuff and fixing it up with LLDB paths.  Unfortunately, I was 
> getting tons of linker errors, and I'm not really sure why, as there didn't 
> appear to be much magic there.  I didn't investigate it further after that, 
> but it would definitely be a good thing to tackle.
> 
> On Thu, Oct 2, 2014 at 2:01 PM, Sean Callanan <scalla...@apple.com 
> <mailto:scalla...@apple.com>> wrote:
> At risk of being burnt at the stake for practicing the the necromantic arts:
> Jim’s point that internal APIs are somewhat fragile is well taken, and I 
> don’t think there’s much value in using internal tests as “more convenient” 
> substitutes for external tests.
> 
> That said, I think internal unit tests add several benefits that improve code:
> 
> Modular design.  If clients of an internal object have to do a lot of extra 
> work to make the object work properly, this may indicate a design issue.
> State encapsulation.  If an object changes behaviors depending on outside 
> state, then that makes it much harder to use.
> Code readability.  Test cases can demonstrate how an object is intended to be 
> used, and act as compelling witnesses that that use case works.
> 
> I would be interested in using the expression parser as a guinea pig to 
> introduce test-driven methods.
> Todd/Zach, did you ever get a gtest-based unit test system working?
> 
> Sean
> 
>> On Jul 18, 2014, at 6:14 PM, Zachary Turner <ztur...@google.com 
>> <mailto:ztur...@google.com>> wrote:
>> 
>> FWIW I'm kind of in favor of bringing in gtest with limited use.  When I 
>> first started digging into LLDB, probably the first 3-4 bugs I fixed were 
>> all in IRMemoryMap, and they would all have been caught if the class were 
>> unit tested properly.  
>> 
>> 
>> On Fri, Jul 18, 2014 at 4:03 PM, Greg Clayton <gclay...@apple.com 
>> <mailto:gclay...@apple.com>> wrote:
>> We could expose a new static function in SBDebugger:
>> 
>> class SBDebugger {
>> 
>> static void
>> UnitTest (const char *args);
>> 
>> };
>> 
>> Then internally it can parse any arguments and run tests as needed? Each 
>> class that wants to register unit tests with the debugger during 
>> SBDebugger::Initialize() which must be called prior to doing anything with 
>> the LLDB API:
>> 
>> 
>> SBDebugger::Initialize()
>> {
>>     Debugger::Intialize();
>> }
>> 
>> Debugger::Initialize()
>> {
>>         ....
>>         NamedPipe:: Initialize();
>> }
>> 
>> 
>> Then in the static NamedPipe::Initiazize() you could register your unit 
>> tests:
>> 
>> void
>> NamedPipe::Initialiaze()
>> {
>>     Debugger::RegisterUnitTest(NamedPipe::InitTest1, 
>> "NamedPipe::InitTest1"));
>> }
>> 
>> 
>> Then you could just run:
>> 
>> SBDebugger::Initialize();
>> SBDebugger::UnitTest(NULL); // Run all tests
>> 
>> Or run individual ones:
>> 
>> SBDebugger::Initialize();
>> SBDebugger::UnitTest("--test NamedPipe::InitTest1"); // Run just 
>> "NamedPipe::InitTest1"
>> 
>> Of course then the LLDB test suite could run these unit tests first to make 
>> sure everything is good.
>> 
>> 
>> 
>> > On Jul 16, 2014, at 3:59 PM, Zachary Turner <ztur...@google.com 
>> > <mailto:ztur...@google.com>> wrote:
>> >
>> > If it makes you feel any better LLVM is leery of it too, and it's only 
>> > used, as you said, in specialized circumstances.  It's especially useful 
>> > for testing abstract data types, where you just want to test the interface 
>> > to a self-contained, reusable class.
>> >
>> >
>> > On Wed, Jul 16, 2014 at 2:25 PM, <jing...@apple.com 
>> > <mailto:jing...@apple.com>> wrote:
>> > I'm a little leery about this.  We don't test at the lldb_private layer 
>> > because those tests are likely to be fragile and easily broken.  For 
>> > utility classes like NamedPipe I guess I don't so much mind, but I'm not 
>> > sure its a great idea to do this more generally.
>> >
>> > Jim
>> >
>> > > On Jul 16, 2014, at 9:40 AM, Todd Fiala <tfi...@google.com 
>> > > <mailto:tfi...@google.com>> wrote:
>> > >
>> > > Hey guys,
>> > >
>> > > Sometimes I have smaller bits of code I'd like to test in LLDB as I'm 
>> > > developing them (i.e. TDD-style) that are C++ and won't be exposed 
>> > > directly via Python.  I'm not sure I've seen any facilities in the LLDB 
>> > > tests for adding such tests.  Essentially I'd want to do something like 
>> > > a gtest or cppunit test.
>> > >
>> > > Do we have any mechanism for doing that currently?  If we do, what is 
>> > > it?  If we don't, how about adding some mechanism to do it after we 
>> > > figure out how we'd like to approach it?  Or, if you have thoughts on a 
>> > > good, simple way to do it from Python that doesn't require extra Python 
>> > > bindings just to do it, that'd be fine by me as well.
>> > >
>> > > If we want to take a concrete example, here is one: I'm adding a 
>> > > NamedPipe class under the host dir.  I'd like to make some simple tests 
>> > > for it, and test it under Linux, Windows and MacOSX.  In the case of 
>> > > Windows, it would be the only real way for me to test that it's behaving 
>> > > exactly as I want at this point.  This isn't the only time I've wanted 
>> > > C++-level tests at a fairly fine granularity, but it's a good example of 
>> > > it.
>> > >
>> > > Any thoughts?
>> > > --
>> > > Todd Fiala |   Software Engineer |     tfi...@google.com 
>> > > <mailto:tfi...@google.com> |     650-943-3180 <tel:650-943-3180>
>> > >
>> > > _______________________________________________
>> > > lldb-dev mailing list
>> > > lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu>
>> > > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev 
>> > > <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev>
>> >
>> > _______________________________________________
>> > lldb-dev mailing list
>> > lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu>
>> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev 
>> > <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev>
>> >
>> > _______________________________________________
>> > lldb-dev mailing list
>> > lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu>
>> > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev 
>> > <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev>
>> 
>> 
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev@cs.uiuc.edu <mailto:lldb-dev@cs.uiuc.edu>
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev 
>> <http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev>
> 
> 

_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to