[glom] Import tests: break mainloop on file read errors



commit 1dd8510db80570bce5d50642afd1edd510e472b0
Author: Michael Hasselmann <michaelh openismus com>
Date:   Wed Jan 27 19:23:04 2010 +0100

    Import tests: break mainloop on file read errors

 tests/import/test_parsing.cc |    3 ++-
 tests/import/utils.cc        |   11 +++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/tests/import/test_parsing.cc b/tests/import/test_parsing.cc
index 208d23b..6ee3922 100644
--- a/tests/import/test_parsing.cc
+++ b/tests/import/test_parsing.cc
@@ -201,7 +201,8 @@ int main(int argc, char* argv[])
 
   // test_import_csv_file
   {
-    std::string filename = Glib::get_current_dir() + "/tests/import/data/albums.csv";
+    // filename_to_uri expects absolute filenames
+    const std::string filename = Glib::build_filename(Glib::get_current_dir(), "tests/import/data/albums.csv");
     const bool finished_parsing = ImportTests::run_parser_on_file(&connect_signals, Glib::filename_to_uri(filename));
     const bool passed = (finished_parsing &&
                          8450 == get_tokens_instance().size());
diff --git a/tests/import/utils.cc b/tests/import/utils.cc
index 15b342e..421511e 100644
--- a/tests/import/utils.cc
+++ b/tests/import/utils.cc
@@ -60,7 +60,6 @@ static void on_parser_encoding_error(MainLoopRp mainloop)
   mainloop->quit();
 }
 
-
 static void on_parser_finished(MainLoopRp mainloop)
 {
   finished_parsing = true;
@@ -68,6 +67,13 @@ static void on_parser_finished(MainLoopRp mainloop)
   mainloop->quit();
 }
 
+static void on_file_read_error(const std::string& /*unused*/, MainLoopRp mainloop)
+{
+  finished_parsing = true;
+  //Quit the mainloop that we ran because the parser uses an idle handler.
+  mainloop->quit();
+}
+
 bool run_parser_from_buffer(const FuncConnectParserSignals& connect_parser_signals, const std::string& input)
 {
   return run_parser_from_buffer(connect_parser_signals, input.data(), input.size());
@@ -100,7 +106,7 @@ bool run_parser_from_buffer(const FuncConnectParserSignals& connect_parser_signa
   mainloop->run();
 
   Glib::RefPtr<Gio::File> file = Gio::File::create_for_uri(file_uri);
-  
+
   #ifdef GLIBMM_EXCEPTIONS_ENABLED
   //TODO: Catch exception.
   const bool removed = file->remove();
@@ -124,6 +130,7 @@ bool run_parser_on_file(const FuncConnectParserSignals& connect_parser_signals,
 
   parser.signal_encoding_error().connect(sigc::bind(&on_parser_encoding_error, mainloop));
   parser.signal_finished_parsing().connect(sigc::bind(&on_parser_finished, mainloop));
+  parser.signal_file_read_error().connect(sigc::bind(&on_file_read_error, mainloop));
 
   // Install a watchdog for the mainloop. No test should need longer than 300
   // seconds. Also, we need to avoid being stuck in the mainloop.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]