1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
#pragma once
#include <string>
#include <fstream>
#include "os/file.h"
#include "../algorithm/FileUtils.h"
namespace test
{
// File object removing itself when going out of scope
class TemporaryFile
{
private:
std::string _path;
public:
// Set up the auto-destruct sequence for the file in the given path
// Doesn't create the file yet, this is done in setContents() at the latest
TemporaryFile(const std::string& path) :
_path(path)
{}
// Construct and immediately create the file with the given contents
TemporaryFile(const std::string& path, const std::string& contents) :
TemporaryFile(path)
{
setContents(contents);
}
void setContents(const std::string& contents)
{
algorithm::replaceFileContents(_path, contents);
}
~TemporaryFile()
{
if (fs::exists(_path))
{
fs::remove(_path);
}
}
};
}
|