Well, as a quick example of where I think there's a considerable amount of overlap between the high level model of how the test operates is the case of the lldbinline tests.
On Thu, Mar 12, 2015 at 5:28 PM <jing...@apple.com> wrote: > > > On Mar 12, 2015, at 5:06 PM, Zachary Turner <ztur...@google.com> wrote: > > > > Wasn't really trying to get into an extended discussion about this, but > FWIW I definitely realize that lldb's tests are more complicated than what > lit currently supports. But that's why I said "even if it meant extending > lit". It was mostly just a general comment about how it's nice if everyone > is focused on making one thing better instead of everyone having different > things. > > > > Depending on how different the different things are. Compiler tests tend > to have input, output and some machine that converts the input to the > output. That is one very particular model of testing. Debugger tests need > to do: get to stage 1, if that succeeded, get to stage 2, if that > succeeded, etc. Plus there's generally substantial setup code to get > somewhere interesting, so while you are there you generally try to test a > bunch of similar things. Plus, the tests often have points where there are > several success cases, but each one requires a different "next action", > stepping being the prime example of this. These are very different models > and I don't see that trying to smush the two together would be a fruitful > exercise. > > Jim > > > As for specifics, my understanding is that lit parallelizes better (so > running tests is faster), understands how to build programs (so doesn't > require makefiles), and has a richer language for specifying how and under > what circumstances different tests should be run. It's also familiar to > other LLVM developers (so encourages cross-collaboration), and allows one > to write self-contained tests with the program to test and the check in a > single file (less maintenance). > > > > In any case, I'm really not an expert on lit, so +bogner and +chandlerc > in case they want to chime in. I do think it's at least worth thinking > about whether lit *could* be extended to meet LLDB's needs -- if nothing > else as a thought exercise, and maybe learning more about how it works > would give us some ideas to make our own test suite better. > > > > > > On Thu, Mar 12, 2015 at 4:39 PM <jing...@apple.com> wrote: > > > > > On Mar 12, 2015, at 4:08 PM, Zachary Turner <ztur...@google.com> > wrote: > > > > > > Oh I'm all for reusing as much of the existing mechanism as possible. > Was just stating how the CMake worked as a discussion point. Another > possibility would be to just have the Xcode project build one executable > that pulls in sources recursively from the entire subtree. Is this as easy > in Xcode as just adding all sources from a subfolder to a single target? > > > > > > > > One day far off in the future it would be nice if all of LLDB's tests > were ported to lit (even if that meant extending lit to make it do what we > needed it to do), > > > > Why would this be nice? It looks like lit is a good test runner for > tests that have some input, do something with the input, produce an output > and check that output is matches some pattern. That is not at all what the > lldb tests look like. They often have to do complex dances - for instance > depending on how the line tables come out there are many "correct" ways to > step through code. If you are going to test this you've got to do "step, > if I got to a close bracket, step again, if I got past it don't. Etc... > > > > I see no benefit in extending a simple runner like lit to do the complex > dances the lldb testsuite sometimes has to do. I'm all for sharing, but it > is also okay to have two implementations of some functionality if the two > uses are sufficiently different, and this certainly seems like one of those > cases. > > > > > so I can definitely see some value in hooking lit up to the Xcode > build so it does everything the CMake build does. I'll have to look into > exactly what steps the CMake and/or autoconf build are taking, but I > suspect it's going to involve running CMake from a script, so not very > desirable. I'm still learning a lot of this stuff though, so there may be > a better way. Either way, I'll have to look into it a little bit. > > > > > > Jim > > > > > > > > > > In the meantime, if running unit tests from Xcode is not part of > anyone's usual workflow, can I remove it for now? > > > > > > On Thu, Mar 12, 2015 at 4:01 PM <jing...@apple.com> wrote: > > > I'm not sure if this is what you meant, but I don't see a lot of value > in making an Xcode project that has targets for each of the gtest binaries, > and then tries to run the tests. Seems to me it would be better if the > gtest project just invokes whatever mechanism the cmake build would do to > run the tests. That's just another set of things to keep in sync. > > > > > > It is sufficient to have a target that just does whatever steps > cmake/lit do to build the gtests & run them, if that is possible. I guess > if you can't do this without running cmake in the lldb top-level directory > that would be a problem. But it still seems better to me to wire that up, > than to have to add tests to both Xcode & cmake. > > > > > > Jim > > > > > > > > > > > > > > > > > > > On Mar 12, 2015, at 3:46 PM, Zachary Turner <ztur...@google.com> > wrote: > > > > > > > > So I'm guessing the scheme runs do-gtest.py. I'd like to delete > that file as well as all the Makefiles in the directory if possible. It > seems like these files should be built using the normal Xcode build system > the same way the rest of LLDB is built. > > > > > > > > The way the CMake does it is that each test folder generates a new > executable. So right now it will build HostTests.exe, > ProcessLinuxTests.exe, and UtilityTests.exe. And then CMake will invoke > lit (the LLVM test runner) to run each of the executables one by one and > print the output. > > > > > > > > I'm not sure if that's easy or feasible to do in the Xcode build. I > kind of don't want to leave this do-gtest.py and Makefiles in the build > though, because the more of this stuff we have the more maintenance it is, > and things tend to rot. > > > > > > > > > > > > On Thu, Mar 12, 2015 at 3:23 PM <jing...@apple.com> wrote: > > > > Xcode has "projects" and then "workspaces" and "schemes". > Workspaces aggregate projects. Schemes exist in both workspaces and > projects and are the way to say "do something with some of the stuff > referred to by this project/workspace." So the way to do this formally is > to have the gtest scheme build & run the tests from the gtest project. > > > > > > > > The lldb.xcworkspace file does reference the gtest xcode project, > and it has a scheme for the gtest. > > > > > > > > Not sure what the scheme does yet, I'll look in a few minutes if > nobody beats me to it, I'm in the middle of things right now. > > > > > > > > Jim > > > > > > > > > > > > > > > > > On Mar 12, 2015, at 2:41 PM, Zachary Turner <ztur...@google.com> > wrote: > > > > > > > > > > In lldb/gtest there is a gtest.xcodeproj folder with what I guess > is an Xcode project. If I understand the way Xcode works, the way to use > this is by opening this in another instance of Xcode separate from your > normal LLDB project, and then building it. Is this right? > > > > > > > > > > I have a patch that moves some files around, and if nobody is > using this Xcode project, I would like to delete it. Then, after I get the > tests up and running in the CMake build, we can add it to the "real" Xcode > project as a separate target similar to how you currently run the LLDB Test > suite. > > > > > > > > > > Any objections to deleting the Xcode project? > > > > > > > > > > >
_______________________________________________ lldb-dev mailing list lldb-dev@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev