aadsm marked an inline comment as done. aadsm added a comment. @labath thank you for your kind words!
================ Comment at: lldb/unittests/Symbol/TestLineEntry.cpp:96-122 +llvm::Expected<ModuleSP> LineEntryTest::GetModule() { + if (m_module_sp) + return m_module_sp; + + std::string yaml = GetInputFilePath("inlined-functions.yaml"); + llvm::SmallString<128> obj; + ---------------- labath wrote: > aadsm wrote: > > jingham wrote: > > > It looks like this bit of business has been copied around in a bunch of > > > other tests in the unittest framework. Could we put this in a common > > > place (like make a LLDBUnitTest : testing::Test class that does this? > > How about adding a new function to TestUtilities.cpp named `ReadYAMLObject`? > A utility function sounds nice. (a test class would be fine too, but I'd name > it a bit less generic, as not all of our unit tests are in business of > running yaml2obj and creating modules). > > The part I'm not so sure about is the location. Originally the idea was that > we would have a special subfolder for test helpers related to each module > under test, but then at some point that got changed into `TestingSupport` > which sounds more generic (this evolution here is visible in the fact that > the cmake target name in that folder is called `lldbUtilityHelpers`). If we > put this function there then we'd have to pull in the Core module (and > everything that goes with it). Though that isn't that bad on it's own, it is > a bit unfortunate, as right now the `Utility` unit test executable is our > best defense against unexpected dependencies creeping into the main module. > After this, that executable would link in the whole world again, and we'd > lose this defense. > > Another possibility might be to just put the yaml2obj (which is the main > source of mess here) part in that file, and leave the construction of the > Module object to the users. Yeah, the way I did it locally was to create a function that only handles the yaml2obj part. Some tests use the file for other things other than creating a ModuleSpec. I also put the responsibility of creating and cleaning up the object file in the caller. I was not sure how to handle the clean up of the temporary file for all different cases. Here's how it looks like from the caller side. ``` llvm::SmallString<128> obj; if (auto ec = llvm::sys::fs::createTemporaryFile("source-%%%%%%", "obj", obj)) return llvm::errorCodeToError(ec); llvm::FileRemover obj_remover(obj); if (auto error = ReadYAMLObjectFile("inlined-functions.yaml", obj)) return llvm::Error(std::move(error)); ``` What do you think? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D61292/new/ https://reviews.llvm.org/D61292 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits