summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/config_test.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/config_test.cc b/test/config_test.cc
index 1c35f0a78..6c7a3323d 100644
--- a/test/config_test.cc
+++ b/test/config_test.cc
@@ -532,3 +532,44 @@ BOOST_AUTO_TEST_CASE(load_config_from_zip_with_only_xml_ignore)
auto cinemas = cinema_list.cinemas();
BOOST_CHECK(!cinemas.empty());
}
+
+
+BOOST_AUTO_TEST_CASE(use_sqlite_if_present)
+{
+ ConfigRestorer cr;
+
+ /* Set up a config with an XML cinemas file */
+ boost::filesystem::path dir = "build/test/read_cinemas_xml_and_write_sqlite";
+ boost::filesystem::remove_all(dir);
+ boost::filesystem::create_directories(dir);
+ boost::filesystem::create_directories(dir / "2.18");
+
+ boost::filesystem::copy_file("test/data/cinemas.xml", dir / "cinemas.xml");
+ boost::filesystem::copy_file("test/data/2.18.config.xml", dir / "2.18" / "config.xml");
+ {
+ Editor editor(dir / "2.18" / "config.xml");
+ editor.replace(
+ "/home/realldoesnt/exist/this/path/is/nonsense.xml",
+ boost::filesystem::canonical(dir / "cinemas.xml").string()
+ );
+ }
+
+ Config::override_path = dir;
+ Config::drop();
+
+ /* This should make a sqlite3 file containing the recipients from cinemas.xml.
+ * But it won't write config.xml, so config.xml will still point to cinemas.xml.
+ * This also happens in real life - but I'm not sure how (perhaps just when DoM is
+ * loaded but doesn't save the config, and then another tool is loaded).
+ */
+ Config::instance();
+
+ BOOST_CHECK(boost::filesystem::exists(dir / "cinemas.sqlite3"));
+
+ Config::drop();
+
+ BOOST_CHECK(Config::instance()->cinemas_file() == boost::filesystem::canonical(dir / "cinemas.sqlite3"));
+}
+
+
+