From: Diane Trout Date: Tue, 20 Feb 2007 23:26:37 +0000 (+0000) Subject: more error messages for loading an annotation. X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=516c775c2bc35f526a223e3f6968cbd1f8fa3402 more error messages for loading an annotation. ticket:239 Return specific error messages if a path doesn't exist or is a directory instead of a more generic there was a problem loading. --- diff --git a/alg/sequence.cpp b/alg/sequence.cpp index 147fdce..452f5f9 100644 --- a/alg/sequence.cpp +++ b/alg/sequence.cpp @@ -22,6 +22,7 @@ // ---------- sequence.cc ----------- // ---------------------------------------- #include +#include namespace fs = boost::filesystem; #include @@ -313,10 +314,18 @@ void Sequence::set_filtered_sequence(const std::string &in_seq, void Sequence::load_annot(fs::path file_path, int start_index, int end_index) { + if (not fs::exists(file_path)) { + throw mussa_load_error("Annotation File " + file_path.string() + " was not found"); + } + if (fs::is_directory(file_path)) { + throw mussa_load_error(file_path.string() + + " is a directory, please provide a file for annotations." + ); + } fs::fstream data_stream(file_path, std::ios::in); if (!data_stream) { - throw mussa_load_error("Sequence File: " + file_path.string() + " not found"); + throw mussa_load_error("Error loading annotation file " + file_path.string()); } // so i should probably be passing the parse function some iterators diff --git a/alg/test/test_mussa.cpp b/alg/test/test_mussa.cpp index 4d96627..1606847 100644 --- a/alg/test/test_mussa.cpp +++ b/alg/test/test_mussa.cpp @@ -161,6 +161,14 @@ BOOST_AUTO_TEST_CASE( mussa_mupa_is_file_not_directory ) BOOST_CHECK_THROW(m1.load_mupa_file( curdir ), mussa_load_error ); } +// catch error if annotation isn't a file +BOOST_AUTO_TEST_CASE( mussa_annotation_is_not_file ) +{ + Mussa m1; + fs::path full_path(fs::path(EXAMPLE_DIR, fs::native) / "directory.mupa"); + BOOST_CHECK_THROW( m1.load_mupa_file( full_path ), mussa_load_error ); +} + BOOST_AUTO_TEST_CASE( mussa_load_analysis ) { fs::path example_dir(EXAMPLE_DIR, fs::native);