<div dir="ltr">Thanks!<div>Any reason you used fstream instead of llvm's file streams?</div><div><br></div><div style>Cheers,</div><div style>/Manuel</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Fri, May 3, 2013 at 6:30 PM, Edwin Vane <span dir="ltr"><<a href="mailto:edwin.vane@intel.com" target="_blank">edwin.vane@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: revane<br>
Date: Fri May  3 11:30:55 2013<br>
New Revision: 181029<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=181029&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=181029&view=rev</a><br>
Log:<br>
Generate input files from within unit test<br>
<br>
It is preferable for a unit test to be responsible for creating its own input<br>
data instead of relying on checked-in data files. Now the IncludeExcludeTest<br>
for cpp11-migrate does this.<br>
<br>
- Removed old data files.<br>
- Updated build system and lit files to remove references to old data files.<br>
<br>
<br>
Removed:<br>
    clang-tools-extra/trunk/unittests/cpp11-migrate/Data/<br>
    clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg<br>
Modified:<br>
    clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt<br>
    clang-tools-extra/trunk/unittests/cpp11-migrate/IncludeExcludeTest.cpp<br>
    clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile<br>
<br>
Modified: clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt?rev=181029&r1=181028&r2=181029&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt?rev=181029&r1=181028&r2=181029&view=diff</a><br>

==============================================================================<br>
--- clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt (original)<br>
+++ clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt Fri May  3 11:30:55 2013<br>
@@ -16,6 +16,3 @@ target_link_libraries(Cpp11MigrateTests<br>
   clangBasic<br>
   clangASTMatchers<br>
   )<br>
-<br>
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/lit.local.cfg<br>
-  ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)<br>
<br>
Modified: clang-tools-extra/trunk/unittests/cpp11-migrate/IncludeExcludeTest.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/IncludeExcludeTest.cpp?rev=181029&r1=181028&r2=181029&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/IncludeExcludeTest.cpp?rev=181029&r1=181028&r2=181029&view=diff</a><br>

==============================================================================<br>
--- clang-tools-extra/trunk/unittests/cpp11-migrate/IncludeExcludeTest.cpp (original)<br>
+++ clang-tools-extra/trunk/unittests/cpp11-migrate/IncludeExcludeTest.cpp Fri May  3 11:30:55 2013<br>
@@ -1,6 +1,7 @@<br>
 #include "Core/IncludeExcludeInfo.h"<br>
 #include "gtest/gtest.h"<br>
 #include "llvm/Support/Path.h"<br>
+#include <fstream><br>
<br>
 TEST(IncludeExcludeTest, ParseString) {<br>
   IncludeExcludeInfo IEManager;<br>
@@ -29,30 +30,49 @@ TEST(IncludeExcludeTest, ParseString) {<br>
   EXPECT_FALSE(IEManager.isFileIncluded("c/c2/c3/f.cpp"));<br>
 }<br>
<br>
-// The IncludeExcludeTest suite requires data files. The location of these<br>
-// files must be provided in the 'DATADIR' environment variable.<br>
-class IncludeExcludeFileTest : public ::testing::Test {<br>
-public:<br>
-  virtual void SetUp() {<br>
-    DataDir = getenv("DATADIR");<br>
-    if (DataDir == 0) {<br>
-      FAIL()<br>
-          << "IncludeExcludeFileTest requires the DATADIR environment variable "<br>
-             "to be set.";<br>
+// Utility for creating and filling files with data for IncludeExcludeFileTest<br>
+// tests.<br>
+struct InputFiles {<br>
+<br>
+  // This function uses fatal assertions. The caller is responsible for making<br>
+  // sure fatal assertions propagate.<br>
+  void CreateFiles(bool UnixMode) {<br>
+    IncludeDataPath = llvm::sys::Path::GetTemporaryDirectory();<br>
+    ExcludeDataPath = IncludeDataPath;<br>
+<br>
+    ASSERT_FALSE(IncludeDataPath.createTemporaryFileOnDisk());<br>
+    std::ofstream IncludeDataFile(IncludeDataPath.c_str());<br>
+    ASSERT_TRUE(IncludeDataFile.good());<br>
+    for (unsigned i = 0; i < sizeof(IncludeData)/sizeof(char*); ++i) {<br>
+      IncludeDataFile << IncludeData[i] << (UnixMode ? "\n" : "\r\n");<br>
+    }<br>
+<br>
+    ASSERT_FALSE(ExcludeDataPath.createTemporaryFileOnDisk());<br>
+    std::ofstream ExcludeDataFile(ExcludeDataPath.c_str());<br>
+    ASSERT_TRUE(ExcludeDataFile.good());<br>
+    for (unsigned i = 0; i < sizeof(ExcludeData)/sizeof(char*); ++i) {<br>
+      ExcludeDataFile << ExcludeData[i] << (UnixMode ? "\n" : "\r\n");;<br>
     }<br>
   }<br>
<br>
-  const char *DataDir;<br>
+  static const char *IncludeData[3];<br>
+  static const char *ExcludeData[4];<br>
+<br>
+  llvm::sys::Path IncludeDataPath;<br>
+  llvm::sys::Path ExcludeDataPath;<br>
 };<br>
<br>
-TEST_F(IncludeExcludeFileTest, UNIXFile) {<br>
-  llvm::SmallString<128> IncludeData(DataDir);<br>
-  llvm::SmallString<128> ExcludeData(IncludeData);<br>
-  llvm::sys::path::append(IncludeData, "IncludeData.in");<br>
-  llvm::sys::path::append(ExcludeData, "ExcludeData.in");<br>
+const char *InputFiles::IncludeData[3] = { "a", "b/b2", "c/c2" };<br>
+const char *InputFiles::ExcludeData[4] = { "a/af.cpp", "a/a2", "b/b2/b2f.cpp",<br>
+                                           "c/c2" };<br>
+<br>
+TEST(IncludeExcludeFileTest, UNIXFile) {<br>
+  InputFiles UnixFiles;<br>
+  ASSERT_NO_FATAL_FAILURE(UnixFiles.CreateFiles(/* UnixMode= */true));<br>
<br>
   IncludeExcludeInfo IEManager;<br>
-  llvm::error_code Err = IEManager.readListFromFile(IncludeData, ExcludeData);<br>
+  llvm::error_code Err = IEManager.readListFromFile(<br>
+      UnixFiles.IncludeDataPath.c_str(), UnixFiles.ExcludeDataPath.c_str());<br>
<br>
   ASSERT_EQ(Err, llvm::error_code::success());<br>
<br>
@@ -61,14 +81,13 @@ TEST_F(IncludeExcludeFileTest, UNIXFile)<br>
   EXPECT_FALSE(IEManager.isFileIncluded("a/af.cpp"));<br>
 }<br>
<br>
-TEST_F(IncludeExcludeFileTest, DOSFile) {<br>
-  llvm::SmallString<128> IncludeData(DataDir);<br>
-  llvm::SmallString<128> ExcludeData(IncludeData);<br>
-  llvm::sys::path::append(IncludeData, "IncludeDataCRLF.in");<br>
-  llvm::sys::path::append(ExcludeData, "ExcludeDataCRLF.in");<br>
+TEST(IncludeExcludeFileTest, DOSFile) {<br>
+  InputFiles DOSFiles;<br>
+  ASSERT_NO_FATAL_FAILURE(DOSFiles.CreateFiles(/* UnixMode= */false));<br>
<br>
   IncludeExcludeInfo IEManager;<br>
-  llvm::error_code Err = IEManager.readListFromFile(IncludeData, ExcludeData);<br>
+  llvm::error_code Err = IEManager.readListFromFile(<br>
+      DOSFiles.IncludeDataPath.c_str(), DOSFiles.ExcludeDataPath.c_str());<br>
<br>
   ASSERT_EQ(Err, llvm::error_code::success());<br>
<br>
<br>
Modified: clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile?rev=181029&r1=181028&r2=181029&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile?rev=181029&r1=181028&r2=181029&view=diff</a><br>

==============================================================================<br>
--- clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile (original)<br>
+++ clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile Fri May  3 11:30:55 2013<br>
@@ -22,8 +22,3 @@ include $(CLANG_LEVEL)/Makefile<br>
 MAKEFILE_UNITTEST_NO_INCLUDE_COMMON := 1<br>
 CPP.Flags += -I$(PROJ_SRC_DIR)/../../cpp11-migrate<br>
 include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest<br>
-<br>
-$(PROJ_OBJ_DIR)/lit.local.cfg: $(PROJ_SRC_DIR)/lit.local.cfg<br>
-       @cp $< $@<br>
-<br>
-all:: $(PROJ_OBJ_DIR)/lit.local.cfg<br>
<br>
Removed: clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg?rev=181028&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg?rev=181028&view=auto</a><br>

==============================================================================<br>
--- clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg (original)<br>
+++ clang-tools-extra/trunk/unittests/cpp11-migrate/lit.local.cfg (removed)<br>
@@ -1,4 +0,0 @@<br>
-# Some tests require access to data files which are stored in the 'Data'<br>
-# subdirectory. This environment variable indicates where to find those files.<br>
-config.environment['DATADIR'] = os.path.normpath(os.path.join(config.extra_tools_src_dir,<br>
-                                                              'cpp11-migrate', 'Data'))<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>