"solvate", "-cs"
};
setInputFile("-cp", "spc-and-methanol.gro");
-
- // TODO: Consider adding a convenience method for this.
- std::string topFileName = gmx::test::TestFileManager::getInputFilePath("spc-and-methanol.top");
- std::string modifiableTopFileName = fileManager().getTemporaryFilePath(".top");
- gmx_file_copy(topFileName.c_str(), modifiableTopFileName.c_str(), true);
- commandLine().addOption("-p", modifiableTopFileName);
+ setModifiableInputFile("-p", "spc-and-methanol.top");
runTest(CommandLine(cmdline));
}
};
setInputFile("-cs", "mixed_solvent.gro");
setInputFile("-cp", "simple.gro");
-
- // TODO: Consider adding a convenience method for this.
- // Copies topology file to where it would be found as an output file, so the copied
- // .top file is used as both input and output
- std::string topFileName = gmx::test::TestFileManager::getInputFilePath("simple.top");
- std::string modifiableTopFileName = fileManager().getTemporaryFilePath("simple.top");
- gmx_file_copy(topFileName.c_str(), modifiableTopFileName.c_str(), true);
- setOutputFile("-p", "simple.top", ExactTextMatch());
+ setInputAndOutputFile("-p", "simple.top", ExactTextMatch());
runTest(CommandLine(cmdline));
}
#include "gromacs/commandline/cmdlineoptionsmodule.h"
#include "gromacs/commandline/cmdlineprogramcontext.h"
#include "gromacs/utility/arrayref.h"
+#include "gromacs/utility/futil.h"
#include "gromacs/utility/gmxassert.h"
#include "gromacs/utility/strconvert.h"
#include "gromacs/utility/stringstream.h"
setInputFile(option, filename.c_str());
}
+void CommandLineTestBase::setModifiableInputFile(
+ const char *option, const std::string &filename)
+{
+ setModifiableInputFile(option, filename.c_str());
+}
+
+void CommandLineTestBase::setModifiableInputFile(
+ const char *option, const char *filename)
+{
+ std::string originalFileName = gmx::test::TestFileManager::getInputFilePath(filename);
+ std::string modifiableFileName = fileManager().getTemporaryFilePath(filename);
+ gmx_file_copy(originalFileName.c_str(), modifiableFileName.c_str(), true);
+ impl_->cmdline_.addOption(option, modifiableFileName);
+}
+
void CommandLineTestBase::setInputFileContents(
const char *option, const char *extension, const std::string &contents)
{
impl_->helper_.setOutputFile(&impl_->cmdline_, option, filename, matcher);
}
+void CommandLineTestBase::setInputAndOutputFile(
+ const char *option, const char *filename,
+ const ITextBlockMatcherSettings &matcher)
+{
+ std::string originalFileName = gmx::test::TestFileManager::getInputFilePath(filename);
+ std::string modifiableFileName = fileManager().getTemporaryFilePath(filename);
+ gmx_file_copy(originalFileName.c_str(), modifiableFileName.c_str(), true);
+ impl_->helper_.setOutputFile(&impl_->cmdline_, option, filename, matcher);
+}
+
+void CommandLineTestBase::setInputAndOutputFile(
+ const char *option, const char *filename,
+ const IFileMatcherSettings &matcher)
+{
+ std::string originalFileName = gmx::test::TestFileManager::getInputFilePath(filename);
+ std::string modifiableFileName = fileManager().getTemporaryFilePath(filename);
+ gmx_file_copy(originalFileName.c_str(), modifiableFileName.c_str(), true);
+ impl_->helper_.setOutputFile(&impl_->cmdline_, option, filename, matcher);
+}
+
CommandLine &CommandLineTestBase::commandLine()
{
return impl_->cmdline_;
void setInputFile(const char *option, const char *filename);
//! \copydoc setInputFile(const char *, const char *);
void setInputFile(const char *option, const std::string &filename);
+ /*! \brief
+ * Sets an input file that may be modified. The file is copied to a
+ * temporary file, which is used as the test input
+ *
+ * \param[in] option Option to set.
+ * \param[in] filename Name of the input file.
+ *
+ */
+ void setModifiableInputFile(const char *option, const char *filename);
+ //! \copydoc setModifiableInputFile(const char *, const char *);
+ void setModifiableInputFile(const char *option, const std::string &filename);
/*! \brief
* Generates and sets an input file.
*
*/
void setOutputFile(const char *option, const char *filename,
const IFileMatcherSettings &matcher);
+ /*! \brief
+ * Sets a file parameter that is used for input and modified as output. The input file
+ * is copied to a temporary file that is used as input and can be modified.
+ */
+ void setInputAndOutputFile(const char *option, const char *filename,
+ const ITextBlockMatcherSettings &matcher);
+ //! \copydoc setInputAndOutputFile(const char *, const char *, const ITextBlockMatcherSettings&);
+ void setInputAndOutputFile(const char *option, const char *filename,
+ const IFileMatcherSettings &matcher);
/*! \brief
* Returns the internal CommandLine object used to construct the