Add workingCopyPathMode() to be able to skip actual copy
This commit is contained in:
parent
cb3b50c28c
commit
c13eee6fcc
|
@ -165,7 +165,7 @@ string TestApplication::testFilePath(const string &name) const
|
||||||
* \brief Returns the full path to a working copy of the test file with the specified \a name.
|
* \brief Returns the full path to a working copy of the test file with the specified \a name.
|
||||||
* \remarks Currently only available under UNIX.
|
* \remarks Currently only available under UNIX.
|
||||||
*/
|
*/
|
||||||
string TestApplication::workingCopyPath(const string &name) const
|
string TestApplication::workingCopyPathMode(const string &name, WorkingCopyMode mode) const
|
||||||
{
|
{
|
||||||
// create file streams
|
// create file streams
|
||||||
fstream origFile, workingCopy;
|
fstream origFile, workingCopy;
|
||||||
|
@ -200,19 +200,28 @@ string TestApplication::workingCopyPath(const string &name) const
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy file
|
// copy file
|
||||||
try {
|
if(mode != WorkingCopyMode::NoCopy) {
|
||||||
origFile.open(testFilePath(name), ios_base::in | ios_base::binary);
|
try {
|
||||||
const string path = m_workingDir + name;
|
origFile.open(testFilePath(name), ios_base::in | ios_base::binary);
|
||||||
workingCopy.open(path, ios_base::out | ios_base::binary | ios_base::trunc);
|
const string path = m_workingDir + name;
|
||||||
workingCopy << origFile.rdbuf();
|
workingCopy.open(path, ios_base::out | ios_base::binary | ios_base::trunc);
|
||||||
return path;
|
workingCopy << origFile.rdbuf();
|
||||||
} catch(...) {
|
return path;
|
||||||
catchIoFailure();
|
} catch(...) {
|
||||||
cerr << "Unable to create working copy for \"" << name << "\": an IO error occured." << endl;
|
catchIoFailure();
|
||||||
|
cerr << "Unable to create working copy for \"" << name << "\": an IO error occured." << endl;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return m_workingDir + name;
|
||||||
}
|
}
|
||||||
return string();
|
return string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string TestApplication::workingCopyPath(const string &name) const
|
||||||
|
{
|
||||||
|
return workingCopyPathMode(name, WorkingCopyMode::CreateCopy);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Executes the application to be tested with the specified \a args and stores the standard output and
|
* \brief Executes the application to be tested with the specified \a args and stores the standard output and
|
||||||
* errors in \a stdout and \a stderr.
|
* errors in \a stdout and \a stderr.
|
||||||
|
|
|
@ -8,6 +8,15 @@
|
||||||
|
|
||||||
namespace TestUtilities {
|
namespace TestUtilities {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief The WorkingCopyMode enum specifies additional options to influence behavior of TestApplication::workingCopyPathMode().
|
||||||
|
*/
|
||||||
|
enum class WorkingCopyMode
|
||||||
|
{
|
||||||
|
CreateCopy, /**< a working copy of the test file is created */
|
||||||
|
NoCopy /**< only the directory for the working copy is created but not the test file itself */
|
||||||
|
};
|
||||||
|
|
||||||
class CPP_UTILITIES_EXPORT TestApplication
|
class CPP_UTILITIES_EXPORT TestApplication
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -17,6 +26,7 @@ public:
|
||||||
operator bool() const;
|
operator bool() const;
|
||||||
std::string testFilePath(const std::string &name) const;
|
std::string testFilePath(const std::string &name) const;
|
||||||
#ifdef PLATFORM_UNIX
|
#ifdef PLATFORM_UNIX
|
||||||
|
std::string workingCopyPathMode(const std::string &name, WorkingCopyMode mode) const;
|
||||||
std::string workingCopyPath(const std::string &name) const;
|
std::string workingCopyPath(const std::string &name) const;
|
||||||
int execApp(const char *const *args, std::string &output, std::string &errors, bool suppressLogging = false, int timeout = -1) const;
|
int execApp(const char *const *args, std::string &output, std::string &errors, bool suppressLogging = false, int timeout = -1) const;
|
||||||
#endif
|
#endif
|
||||||
|
@ -95,6 +105,16 @@ inline CPP_UTILITIES_EXPORT std::string workingCopyPath(const std::string &name)
|
||||||
return TestApplication::instance()->workingCopyPath(name);
|
return TestApplication::instance()->workingCopyPath(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Convenience function which returns the full path to a working copy of the test file with the specified \a name.
|
||||||
|
* \remarks A TestApplication must be present.
|
||||||
|
* \sa TestApplication::workingCopyPathEx()
|
||||||
|
*/
|
||||||
|
inline CPP_UTILITIES_EXPORT std::string workingCopyPathMode(const std::string &name, WorkingCopyMode mode)
|
||||||
|
{
|
||||||
|
return TestApplication::instance()->workingCopyPathMode(name, mode);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Convenience function which executes the application to be tested with the specified \a args.
|
* \brief Convenience function which executes the application to be tested with the specified \a args.
|
||||||
* \remarks A TestApplication must be present.
|
* \remarks A TestApplication must be present.
|
||||||
|
|
Loading…
Reference in New Issue