void sRunTest(const string &sTestName, const STestInfo & testInfo, bool keep) { cerr << "Testing " << testInfo.mInFile.GetName() << " against " << testInfo.mOutFile.GetName() << " and " << testInfo.mErrorFile.GetName() << endl; string logName = CDirEntry::GetTmpName(); CErrorLogger logger(logName); CGvfReader reader(0); CNcbiIfstream ifstr(testInfo.mInFile.GetPath().c_str()); typedef CGff2Reader::TAnnotList ANNOTS; ANNOTS annots; try { reader.ReadSeqAnnots(annots, ifstr, &logger); } catch (...) { BOOST_ERROR("Error: " << sTestName << " failed during conversion."); ifstr.close(); return; } string resultName = CDirEntry::GetTmpName(); CNcbiOfstream ofstr(resultName.c_str()); for (ANNOTS::iterator cit = annots.begin(); cit != annots.end(); ++cit){ ofstr << MSerial_AsnText << **cit; ofstr.flush(); } ifstr.close(); ofstr.close(); bool success = testInfo.mOutFile.CompareTextContents(resultName, CFile::eIgnoreWs); if (!success) { CDirEntry deResult = CDirEntry(resultName); if (keep) { deResult.Copy(testInfo.mOutFile.GetPath() + "." + extKeep); } deResult.Remove(); CDirEntry(logName).Remove(); BOOST_ERROR("Error: " << sTestName << " failed due to post processing diffs."); } CDirEntry(resultName).Remove(); success = testInfo.mErrorFile.CompareTextContents(logName, CFile::eIgnoreWs); CDirEntry deErrors = CDirEntry(logName); if (!success && keep) { deErrors.Copy(testInfo.mErrorFile.GetPath() + "." + extKeep); } deErrors.Remove(); if (!success) { BOOST_ERROR("Error: " << sTestName << " failed due to error handling diffs."); } };
// ---------------------------------------------------------------------------- void CMultiReaderApp::xProcessVcf( const CArgs& args, CNcbiIstream& istr, CNcbiOstream& ostr) // ---------------------------------------------------------------------------- { typedef vector<CRef<CSeq_annot> > ANNOTS; ANNOTS annots; CVcfReader reader( m_iFlags ); reader.ReadSeqAnnots(annots, istr, m_pErrors); for (ANNOTS::iterator cit = annots.begin(); cit != annots.end(); ++cit){ xWriteObject(**cit, ostr); } }
// ---------------------------------------------------------------------------- void CMultiReaderApp::xProcessGff3( const CArgs& args, CNcbiIstream& istr, CNcbiOstream& ostr) // ---------------------------------------------------------------------------- { typedef vector<CRef<CSeq_annot> > ANNOTS; ANNOTS annots; if (args["format"].AsString() == "gff2") { // process as plain GFF2 return xProcessGff2(args, istr, ostr); } CGff3Reader reader(m_iFlags, m_AnnotName, m_AnnotTitle); reader.ReadSeqAnnots(annots, istr, m_pErrors); for (ANNOTS::iterator cit = annots.begin(); cit != annots.end(); ++cit){ xWriteObject(**cit, ostr); } }
void sUpdateCase(CDir& test_cases_dir, const string& test_name) { string input = CDir::ConcatPath( test_cases_dir.GetPath(), test_name + "." + extInput); string output = CDir::ConcatPath( test_cases_dir.GetPath(), test_name + "." + extOutput); string errors = CDir::ConcatPath( test_cases_dir.GetPath(), test_name + "." + extErrors); if (!CFile(input).Exists()) { BOOST_FAIL("input file " << input << " does not exist."); } cerr << "Creating new test case from " << input << " ..." << endl; CErrorLogger logger(errors); CGvfReader reader(0); CNcbiIfstream ifstr(input.c_str()); typedef CGff2Reader::TAnnotList ANNOTS; ANNOTS annots; try { reader.ReadSeqAnnots(annots, ifstr, &logger); } catch (...) { ifstr.close(); BOOST_FAIL("Error: " << input << " failed during conversion."); } ifstr.close(); cerr << " Produced new error listing " << output << "." << endl; CNcbiOfstream ofstr(output.c_str()); for (ANNOTS::iterator cit = annots.begin(); cit != annots.end(); ++cit){ ofstr << MSerial_AsnText << **cit; ofstr.flush(); } ofstr.close(); cerr << " Produced new ASN1 file " << output << "." << endl; cerr << " ... Done." << endl; }