[clang-tools-extra] r181029 - Generate input files from within unit test

Manuel Klimek klimek at google.com
Fri May 3 12:13:54 PDT 2013


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 <edwin.vane at intel.com> 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=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'))
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130503/6e609045/attachment.html>


More information about the cfe-commits mailing list