96 string name =
file.GetName();
104 const string sFileName =
file.GetName();
105 vector<CTempString> vecFileNamePieces;
107 BOOST_REQUIRE(vecFileNamePieces.size() == 2);
110 BOOST_REQUIRE(!tsTestName.
empty());
112 BOOST_REQUIRE(!tsFileType.
empty());
115 (*m_pTestNameToInfoMap)[vecFileNamePieces[0]];
132 BOOST_FAIL(
"Unknown file type " << sFileName <<
".");
152 BOOST_FAIL(
"input file " <<
input <<
" does not exist.");
154 cerr <<
"Creating new test case from " <<
input <<
" ..." << endl;
165 pScope->AddTopLevelSeqEntry(*pDBEntry);
176 cerr <<
" Produced new ASN1 file " <<
output <<
"." << endl;
177 cerr <<
" ... Done." << endl;
183 const vector<string> kEmptyStringVec;
195 const string & sName = name_to_info_it->first;
203 cerr <<
"Testing " << testInfo.
mInFile.
GetName() <<
" against " <<
219 pScope->AddTopLevelSeqEntry(*pDBEntry);
233 bool successErrors =
true;
235 if (!successOutput) {
250 if (!successOutput || !successErrors) {
251 BOOST_ERROR(
"Error: " << sTestName <<
" failed due to post processing diffs.");
264 arg_descrs->AddDefaultKey(
"test-dir",
"TEST_FILE_DIRECTORY",
265 "Set the root directory under which all test files can be found.",
269 arg_descrs->AddDefaultKey(
"update-case",
"UPDATE_CASE",
270 "Produce .asn and .error files from given name for new or updated test case.",
274 arg_descrs->AddFlag(
"update-all",
275 "Update all test cases to current reader code (dangerous).",
278 arg_descrs->AddFlag(
"keep-diffs",
279 "Keep output files that are different from the expected.",
281 arg_descrs->AddDefaultKey(
"single-case",
283 "Run specified case only",
297 CDir test_cases_dir( args[
"test-dir"].AsDirectory() );
298 BOOST_REQUIRE_MESSAGE( test_cases_dir.
IsDir(),
299 "Cannot find dir: " << test_cases_dir.
GetPath() );
301 bool update_all = args[
"update-all"].AsBoolean();
307 string update_case = args[
"update-case"].AsString();
308 if (!update_case.empty()) {
313 string single_case = args[
"single-case"].AsString();
314 if (!single_case.empty()) {
322 BOOST_CHECK_NO_THROW(
323 sRunTest(single_case, testInfo, args[
"keep-diffs"]));
327 const vector<string> kEmptyStringVec;
337 const string & sName = name_to_info_it->first;
338 const STestInfo & testInfo = name_to_info_it->second;
339 cout <<
"Verifying: " << sName << endl;
349 const string & sName = name_to_info_it->first;
350 const STestInfo & testInfo = name_to_info_it->second;
351 cout <<
"Running test: " << sName << endl;
353 BOOST_CHECK_NO_THROW(
sRunTest(sName, testInfo, args[
"keep-diffs"]));
static CNcbiApplication * Instance(void)
Singleton method.
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
TTestNameToInfoMap * m_pTestNameToInfoMap
void operator()(const CDirEntry &dirEntry)
CTestNameToInfoMapLoader(TTestNameToInfoMap *pTestNameToInfoMap, const string &extInput, const string &extOutput, const string &extErrors)
static SQLCHAR output[256]
static int RunTests(void)
Code to iterate through all tests to run.
static char test_name[128]
virtual const CArgs & GetArgs(void) const
Get parsed command line arguments.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
@ eString
An arbitrary string.
@ eDirectory
Name of file directory.
void FindFilesInDir(const CDir &dir, const vector< string > &masks, const vector< string > &masks_subdir, TFindFunc &find_func, TFindFiles flags=fFF_Default)
Find files in the specified directory.
virtual bool Remove(TRemoveFlags flags=eRecursive) const
Remove a directory entry.
bool IsDir(EFollowLinks follow=eFollowLinks) const
Check whether a directory entry is a directory.
bool CompareTextContents(const string &file, ECompareText mode, size_t buf_size=0) const
Compare files contents in text form.
bool IsFile(EFollowLinks follow=eFollowLinks) const
Check whether a directory entry is a file.
static string GetTmpName(ETmpFileCreationMode mode=eTmpFileGetName)
Get temporary file name.
static string ConcatPath(const string &first, const string &second)
Concatenate two parts of the path for the current OS.
string GetName(void) const
Get the base entry name with extension (if any).
const string & GetPath(void) const
Get entry path.
virtual bool Copy(const string &new_path, TCopyFlags flags=fCF_Default, size_t buf_size=0) const
Copy the entry to a location specified by "new_path".
virtual bool Exists(void) const
Check existence of file.
@ fFF_Recursive
descend into sub-dirs
@ fFF_Default
default behavior
#define MSerial_AsnText
I/O stream manipulators –.
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
IO_PREFIX::ofstream CNcbiOfstream
Portable alias for ofstream.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
bool empty(void) const
Return true if the represented string is empty (i.e., the length is zero)
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
Defines the CNcbiApplication and CAppException classes for creating NCBI applications.
Defines classes: CDirEntry, CFile, CDir, CSymLink, CMemoryFile, CFileUtil, CFileLock,...
void g_ConvertDeltaToRawSeq(CBioseq &bioseq, CScope *pScope=nullptr)
Utility stuff for more convenient using of Boost.Test library.
BOOST_AUTO_TEST_CASE(RunTests)
const string extErrors("errors")
void sUpdateAll(CDir &test_cases_dir)
const string extOutput("output")
void sUpdateCase(CDir &test_cases_dir, const string &test_name)
const string dirTestFiles("seq_edit_test_cases")
const string extInput("input")
const string extKeep("new")
void sRunTest(const string &sTestName, const STestInfo &testInfo, bool keep)
NCBITEST_INIT_CMDLINE(arg_descrs)