[clang-tools-extra] r181029 - Generate input files from within unit test
Edwin Vane
edwin.vane at intel.com
Fri May 3 09:30:56 PDT 2013
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=diff
==============================================================================
--- 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'))
More information about the cfe-commits
mailing list