[glom] Import tests: break mainloop on file read errors
- From: Michael Hasselmann <mikhas src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [glom] Import tests: break mainloop on file read errors
- Date: Wed, 27 Jan 2010 18:30:39 +0000 (UTC)
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]