Nope. I was just following an example of using createTemporaryFileOnDisk() from lib/Archive/ArchiveWriter.cpp which happened to use std::ofstream.
> -----Original Message----- > From: Manuel Klimek [mailto:[email protected]] > Sent: Friday, May 03, 2013 3:14 PM > To: Vane, Edwin > Cc: [email protected] > Subject: Re: [clang-tools-extra] r181029 - Generate input files from within > unit > test > > Thanks! > Any reason you used fstream instead of llvm's file streams? > > Cheers, > /Manuel > > > On Fri, May 3, 2013 at 6:30 PM, Edwin Vane <[email protected]> wrote: > > > Author: revane > Date: Fri May 3 11:30:55 2013 > New Revision: 181029 > > URL: http://llvm.org/viewvc/llvm-project?rev=181029&view=rev > Log: > Generate input files from within unit test > > It is preferable for a unit test to be responsible for creating its own > input > data instead of relying on checked-in data files. Now the > IncludeExcludeTest > for cpp11-migrate does this. > > - Removed old data files. > - Updated build system and lit files to remove references to old data > files. > > > Removed: > clang-tools-extra/trunk/unittests/cpp11-migrate/Data/ > clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg > Modified: > clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt > clang-tools-extra/trunk/unittests/cpp11- > migrate/IncludeExcludeTest.cpp > clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile > > Modified: clang-tools-extra/trunk/unittests/cpp11- > migrate/CMakeLists.txt > URL: http://llvm.org/viewvc/llvm-project/clang-tools- > extra/trunk/unittests/cpp11- > migrate/CMakeLists.txt?rev=181029&r1=181028&r2=181029&view=diff > ========================================================== > ==================== > --- clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt > (original) > +++ clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt Fri > May 3 11:30:55 2013 > @@ -16,6 +16,3 @@ target_link_libraries(Cpp11MigrateTests > clangBasic > clangASTMatchers > ) > - > -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/lit.local.cfg > - ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) > > Modified: clang-tools-extra/trunk/unittests/cpp11- > migrate/IncludeExcludeTest.cpp > URL: http://llvm.org/viewvc/llvm-project/clang-tools- > extra/trunk/unittests/cpp11- > migrate/IncludeExcludeTest.cpp?rev=181029&r1=181028&r2=181029&view=dif > f > ========================================================== > ==================== > --- clang-tools-extra/trunk/unittests/cpp11- > migrate/IncludeExcludeTest.cpp (original) > +++ clang-tools-extra/trunk/unittests/cpp11- > migrate/IncludeExcludeTest.cpp Fri May 3 11:30:55 2013 > @@ -1,6 +1,7 @@ > #include "Core/IncludeExcludeInfo.h" > #include "gtest/gtest.h" > #include "llvm/Support/Path.h" > +#include <fstream> > > TEST(IncludeExcludeTest, ParseString) { > IncludeExcludeInfo IEManager; > @@ -29,30 +30,49 @@ TEST(IncludeExcludeTest, ParseString) { > EXPECT_FALSE(IEManager.isFileIncluded("c/c2/c3/f.cpp")); > } > > -// The IncludeExcludeTest suite requires data files. The location of > these > -// files must be provided in the 'DATADIR' environment variable. > -class IncludeExcludeFileTest : public ::testing::Test { > -public: > - virtual void SetUp() { > - DataDir = getenv("DATADIR"); > - if (DataDir == 0) { > - FAIL() > - << "IncludeExcludeFileTest requires the DATADIR environment > variable " > - "to be set."; > +// Utility for creating and filling files with data for > IncludeExcludeFileTest > +// tests. > +struct InputFiles { > + > + // This function uses fatal assertions. The caller is responsible for > making > + // sure fatal assertions propagate. > + void CreateFiles(bool UnixMode) { > + IncludeDataPath = llvm::sys::Path::GetTemporaryDirectory(); > + ExcludeDataPath = IncludeDataPath; > + > + ASSERT_FALSE(IncludeDataPath.createTemporaryFileOnDisk()); > + std::ofstream IncludeDataFile(IncludeDataPath.c_str()); > + ASSERT_TRUE(IncludeDataFile.good()); > + for (unsigned i = 0; i < sizeof(IncludeData)/sizeof(char*); ++i) { > + IncludeDataFile << IncludeData[i] << (UnixMode ? "\n" : "\r\n"); > + } > + > + ASSERT_FALSE(ExcludeDataPath.createTemporaryFileOnDisk()); > + std::ofstream ExcludeDataFile(ExcludeDataPath.c_str()); > + ASSERT_TRUE(ExcludeDataFile.good()); > + for (unsigned i = 0; i < sizeof(ExcludeData)/sizeof(char*); ++i) { > + ExcludeDataFile << ExcludeData[i] << (UnixMode ? "\n" : "\r\n");; > } > } > > - const char *DataDir; > + static const char *IncludeData[3]; > + static const char *ExcludeData[4]; > + > + llvm::sys::Path IncludeDataPath; > + llvm::sys::Path ExcludeDataPath; > }; > > -TEST_F(IncludeExcludeFileTest, UNIXFile) { > - llvm::SmallString<128> IncludeData(DataDir); > - llvm::SmallString<128> ExcludeData(IncludeData); > - llvm::sys::path::append(IncludeData, "IncludeData.in"); > - llvm::sys::path::append(ExcludeData, "ExcludeData.in"); > +const char *InputFiles::IncludeData[3] = { "a", "b/b2", "c/c2" }; > +const char *InputFiles::ExcludeData[4] = { "a/af.cpp", "a/a2", > "b/b2/b2f.cpp", > + "c/c2" }; > + > +TEST(IncludeExcludeFileTest, UNIXFile) { > + InputFiles UnixFiles; > + ASSERT_NO_FATAL_FAILURE(UnixFiles.CreateFiles(/* UnixMode= > */true)); > > IncludeExcludeInfo IEManager; > - llvm::error_code Err = IEManager.readListFromFile(IncludeData, > ExcludeData); > + llvm::error_code Err = IEManager.readListFromFile( > + UnixFiles.IncludeDataPath.c_str(), > UnixFiles.ExcludeDataPath.c_str()); > > ASSERT_EQ(Err, llvm::error_code::success()); > > @@ -61,14 +81,13 @@ TEST_F(IncludeExcludeFileTest, UNIXFile) > EXPECT_FALSE(IEManager.isFileIncluded("a/af.cpp")); > } > > -TEST_F(IncludeExcludeFileTest, DOSFile) { > - llvm::SmallString<128> IncludeData(DataDir); > - llvm::SmallString<128> ExcludeData(IncludeData); > - llvm::sys::path::append(IncludeData, "IncludeDataCRLF.in"); > - llvm::sys::path::append(ExcludeData, "ExcludeDataCRLF.in"); > +TEST(IncludeExcludeFileTest, DOSFile) { > + InputFiles DOSFiles; > + ASSERT_NO_FATAL_FAILURE(DOSFiles.CreateFiles(/* UnixMode= > */false)); > > IncludeExcludeInfo IEManager; > - llvm::error_code Err = IEManager.readListFromFile(IncludeData, > ExcludeData); > + llvm::error_code Err = IEManager.readListFromFile( > + DOSFiles.IncludeDataPath.c_str(), > DOSFiles.ExcludeDataPath.c_str()); > > ASSERT_EQ(Err, llvm::error_code::success()); > > > Modified: clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile > URL: http://llvm.org/viewvc/llvm-project/clang-tools- > extra/trunk/unittests/cpp11- > migrate/Makefile?rev=181029&r1=181028&r2=181029&view=diff > ========================================================== > ==================== > --- clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile (original) > +++ clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile Fri May > 3 11:30:55 2013 > @@ -22,8 +22,3 @@ include $(CLANG_LEVEL)/Makefile > MAKEFILE_UNITTEST_NO_INCLUDE_COMMON := 1 > CPP.Flags += -I$(PROJ_SRC_DIR)/../../cpp11-migrate > include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest > - > -$(PROJ_OBJ_DIR)/lit.local.cfg: $(PROJ_SRC_DIR)/lit.local.cfg > - @cp $< $@ > - > -all:: $(PROJ_OBJ_DIR)/lit.local.cfg > > Removed: clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg > URL: http://llvm.org/viewvc/llvm-project/clang-tools- > extra/trunk/unittests/cpp11-migrate/lit.local.cfg?rev=181028&view=auto > ========================================================== > ==================== > --- clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg > (original) > +++ clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg > (removed) > @@ -1,4 +0,0 @@ > -# Some tests require access to data files which are stored in the > 'Data' > -# subdirectory. This environment variable indicates where to find those > files. > -config.environment['DATADIR'] = > os.path.normpath(os.path.join(config.extra_tools_src_dir, > - > 'cpp11-migrate', 'Data')) > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
