Move tempfile to cpp-utils
This commit is contained in:
parent
0b2984888d
commit
38327de0c8
@ -5,7 +5,7 @@ ADD_BII_TARGETS()
|
|||||||
|
|
||||||
ACTIVATE_CPP14()
|
ACTIVATE_CPP14()
|
||||||
|
|
||||||
ADD_BOOST(filesystem)
|
ADD_BOOST(filesystem system)
|
||||||
|
|
||||||
# You can safely delete lines from here...
|
# You can safely delete lines from here...
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
cryptopp/cryptopp: 9
|
cryptopp/cryptopp: 9
|
||||||
google/gtest: 11
|
google/gtest: 11
|
||||||
messmer/cmake: 3
|
messmer/cmake: 3
|
||||||
messmer/tempfile: 4
|
|
||||||
|
|
||||||
[parent]
|
[parent]
|
||||||
messmer/cpp-utils: 2
|
messmer/cpp-utils: 2
|
||||||
|
20
tempfile/TempDir.cpp
Normal file
20
tempfile/TempDir.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include "TempDir.h"
|
||||||
|
|
||||||
|
namespace bf = boost::filesystem;
|
||||||
|
|
||||||
|
namespace cpputils {
|
||||||
|
|
||||||
|
TempDir::TempDir()
|
||||||
|
: _path(bf::unique_path(bf::temp_directory_path() / "%%%%-%%%%-%%%%-%%%%")) {
|
||||||
|
bf::create_directory(_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
TempDir::~TempDir() {
|
||||||
|
bf::remove_all(_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
const bf::path &TempDir::path() const {
|
||||||
|
return _path;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
24
tempfile/TempDir.h
Normal file
24
tempfile/TempDir.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifndef MESSMER_TEMPFILE_TEMPDIR_H_
|
||||||
|
#define MESSMER_TEMPFILE_TEMPDIR_H_
|
||||||
|
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
|
#include "../macros.h"
|
||||||
|
|
||||||
|
namespace cpputils {
|
||||||
|
|
||||||
|
class TempDir {
|
||||||
|
public:
|
||||||
|
TempDir();
|
||||||
|
virtual ~TempDir();
|
||||||
|
const boost::filesystem::path &path() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const boost::filesystem::path _path;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(TempDir);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
31
tempfile/TempFile.cpp
Normal file
31
tempfile/TempFile.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#include "TempFile.h"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
namespace bf = boost::filesystem;
|
||||||
|
using std::ofstream;
|
||||||
|
|
||||||
|
namespace cpputils {
|
||||||
|
|
||||||
|
TempFile::TempFile(const bf::path &path, bool create)
|
||||||
|
: _path(path) {
|
||||||
|
if (create) {
|
||||||
|
ofstream file(_path.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TempFile::TempFile(bool create)
|
||||||
|
: TempFile(bf::unique_path(bf::temp_directory_path() / "%%%%-%%%%-%%%%-%%%%"), create) {
|
||||||
|
}
|
||||||
|
|
||||||
|
TempFile::~TempFile() {
|
||||||
|
if (bf::exists(_path)) {
|
||||||
|
bf::remove(_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const bf::path &TempFile::path() const {
|
||||||
|
return _path;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
25
tempfile/TempFile.h
Normal file
25
tempfile/TempFile.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifndef MESSMER_TEMPFILE_TEMPFILE_H_
|
||||||
|
#define MESSMER_TEMPFILE_TEMPFILE_H_
|
||||||
|
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
|
#include "../macros.h"
|
||||||
|
|
||||||
|
namespace cpputils {
|
||||||
|
|
||||||
|
class TempFile {
|
||||||
|
public:
|
||||||
|
TempFile(const boost::filesystem::path &path, bool create = true);
|
||||||
|
TempFile(bool create = true);
|
||||||
|
virtual ~TempFile();
|
||||||
|
const boost::filesystem::path &path() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const boost::filesystem::path _path;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(TempFile);
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -2,7 +2,7 @@
|
|||||||
#include "../../data/Data.h"
|
#include "../../data/Data.h"
|
||||||
#include "google/gtest/gtest.h"
|
#include "google/gtest/gtest.h"
|
||||||
|
|
||||||
#include "messmer/tempfile/src/TempFile.h"
|
#include "../../tempfile/TempFile.h"
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ using ::testing::Test;
|
|||||||
using ::testing::WithParamInterface;
|
using ::testing::WithParamInterface;
|
||||||
using ::testing::Values;
|
using ::testing::Values;
|
||||||
|
|
||||||
using tempfile::TempFile;
|
using cpputils::TempFile;
|
||||||
|
|
||||||
using std::ifstream;
|
using std::ifstream;
|
||||||
using std::ofstream;
|
using std::ofstream;
|
||||||
|
58
test/tempfile/TempDirTest.cpp
Normal file
58
test/tempfile/TempDirTest.cpp
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
#include "google/gtest/gtest.h"
|
||||||
|
|
||||||
|
#include "../../tempfile/TempDir.h"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
using ::testing::Test;
|
||||||
|
using std::ofstream;
|
||||||
|
|
||||||
|
using namespace cpputils;
|
||||||
|
|
||||||
|
namespace bf = boost::filesystem;
|
||||||
|
|
||||||
|
class TempDirTest: public Test {
|
||||||
|
public:
|
||||||
|
void EXPECT_ENTRY_COUNT(int expected, const bf::path &path) {
|
||||||
|
int actual = CountEntries(path);
|
||||||
|
EXPECT_EQ(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CountEntries(const bf::path &path) {
|
||||||
|
int count = 0;
|
||||||
|
for (bf::directory_iterator iter(path); iter != bf::directory_iterator(); ++iter) {
|
||||||
|
++count;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateFile(const bf::path &path) {
|
||||||
|
ofstream file(path.c_str());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(TempDirTest, DirIsCreated) {
|
||||||
|
TempDir dir;
|
||||||
|
EXPECT_TRUE(bf::exists(dir.path()));
|
||||||
|
EXPECT_TRUE(bf::is_directory(dir.path()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempDirTest, DirIsCreatedEmpty) {
|
||||||
|
TempDir dir;
|
||||||
|
EXPECT_ENTRY_COUNT(0, dir.path());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempDirTest, DirIsWriteable) {
|
||||||
|
TempDir dir;
|
||||||
|
CreateFile(dir.path() / "myfile");
|
||||||
|
EXPECT_ENTRY_COUNT(1, dir.path());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempDirTest, DirIsDeletedAfterUse) {
|
||||||
|
bf::path dirpath;
|
||||||
|
{
|
||||||
|
TempDir dir;
|
||||||
|
dirpath = dir.path();
|
||||||
|
}
|
||||||
|
EXPECT_FALSE(bf::exists(dirpath));
|
||||||
|
}
|
117
test/tempfile/TempFileTest.cpp
Normal file
117
test/tempfile/TempFileTest.cpp
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
#include "google/gtest/gtest.h"
|
||||||
|
|
||||||
|
#include "../../tempfile/TempFile.h"
|
||||||
|
#include "../../tempfile/TempDir.h"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
using ::testing::Test;
|
||||||
|
using std::ifstream;
|
||||||
|
using std::ofstream;
|
||||||
|
|
||||||
|
using namespace cpputils;
|
||||||
|
|
||||||
|
namespace bf = boost::filesystem;
|
||||||
|
|
||||||
|
class TempFileTest: public Test {
|
||||||
|
public:
|
||||||
|
TempFileTest(): tempdir(), filepath_sample(tempdir.path() / "myfile") {}
|
||||||
|
|
||||||
|
TempDir tempdir;
|
||||||
|
bf::path filepath_sample;
|
||||||
|
|
||||||
|
void CreateFile(const bf::path &path) {
|
||||||
|
ofstream file(path.c_str());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, FileIsCreated) {
|
||||||
|
TempFile file;
|
||||||
|
EXPECT_TRUE(bf::exists(file.path()));
|
||||||
|
EXPECT_TRUE(bf::is_regular_file(file.path()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, FileIsReadable) {
|
||||||
|
TempFile file;
|
||||||
|
ifstream opened(file.path().c_str());
|
||||||
|
EXPECT_TRUE(opened.good());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, FileIsCreatedEmpty) {
|
||||||
|
TempFile file;
|
||||||
|
ifstream opened(file.path().c_str());
|
||||||
|
opened.get();
|
||||||
|
EXPECT_TRUE(opened.eof());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, FileIsWriteable) {
|
||||||
|
TempFile file;
|
||||||
|
ofstream opened(file.path().c_str());
|
||||||
|
EXPECT_TRUE(opened.good());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, FileIsDeletedAfterUse) {
|
||||||
|
bf::path filepath;
|
||||||
|
{
|
||||||
|
TempFile file;
|
||||||
|
filepath = file.path();
|
||||||
|
}
|
||||||
|
EXPECT_FALSE(bf::exists(filepath));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, DontCreateFileSpecified_FileIsNotCreated) {
|
||||||
|
TempFile file(false);
|
||||||
|
EXPECT_FALSE(bf::exists(file.path()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, DontCreateFileSpecified_FileIsCreatable) {
|
||||||
|
TempFile file(false);
|
||||||
|
CreateFile(file.path());
|
||||||
|
EXPECT_TRUE(bf::exists(file.path()));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, DontCreateFileSpecified_FileIsDeletedAfterUse) {
|
||||||
|
bf::path filepath;
|
||||||
|
{
|
||||||
|
TempFile file(false);
|
||||||
|
CreateFile(file.path());
|
||||||
|
filepath = file.path();
|
||||||
|
}
|
||||||
|
EXPECT_FALSE(bf::exists(filepath));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, PathGiven_FileIsCreatedAtGivenPath) {
|
||||||
|
TempFile file(filepath_sample);
|
||||||
|
EXPECT_EQ(filepath_sample, file.path());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, PathGiven_FileIsCreatedAndAccessible) {
|
||||||
|
TempFile file(filepath_sample);
|
||||||
|
EXPECT_TRUE(bf::exists(filepath_sample));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, PathGiven_FileIsDeletedAfterUse) {
|
||||||
|
{
|
||||||
|
TempFile file(filepath_sample);
|
||||||
|
}
|
||||||
|
EXPECT_FALSE(bf::exists(filepath_sample));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, PathGiven_DontCreateFileSpecified_FileIsNotCreated) {
|
||||||
|
TempFile file(filepath_sample, false);
|
||||||
|
EXPECT_FALSE(bf::exists(filepath_sample));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, PathGiven_DontCreateFileSpecified_FileIsCreatable) {
|
||||||
|
TempFile file(filepath_sample, false);
|
||||||
|
CreateFile(filepath_sample);
|
||||||
|
EXPECT_TRUE(bf::exists(filepath_sample));
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_F(TempFileTest, PathGiven_DontCreateFileSpecified_FileIsDeletedAfterUse) {
|
||||||
|
{
|
||||||
|
TempFile file(filepath_sample, false);
|
||||||
|
CreateFile(filepath_sample);
|
||||||
|
}
|
||||||
|
EXPECT_FALSE(bf::exists(filepath_sample));
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user