BOOST_AUTO_TEST_CASE (config_backup_test)
{
- ConfigRestorer cr;
-
- Config::override_path = "build/test/bad_config";
- Config::drop();
+ ConfigRestorer cr("build/test/bad_config");
boost::filesystem::remove_all ("build/test/bad_config");
/* Write an invalid config file to config.xml */
{
using namespace boost::filesystem;
- ConfigRestorer cr;
-
auto base = path("build/test/bad_config");
auto version = base / "2.18";
- Config::override_path = base;
- Config::drop();
+ ConfigRestorer cr(base);
boost::filesystem::remove_all (base);
BOOST_AUTO_TEST_CASE (config_write_utf8_test)
{
- ConfigRestorer cr;
+ ConfigRestorer cr("build/test");
boost::filesystem::remove_all ("build/test/config.xml");
boost::filesystem::copy_file ("test/data/utf8_config.xml", "build/test/config.xml");
- Config::override_path = "build/test";
- Config::drop ();
Config::instance()->write();
check_text_file ("test/data/utf8_config.xml", "build/test/config.xml");
/* 2.14 -> 2.18 */
BOOST_AUTO_TEST_CASE (config_upgrade_test1)
{
- ConfigRestorer cr;
+ boost::filesystem::path dir = "build/test/config_upgrade_test1";
+ ConfigRestorer cr(dir);
- boost::filesystem::path dir = "build/test/config_upgrade_test";
- Config::override_path = dir;
- Config::drop ();
boost::filesystem::remove_all (dir);
boost::filesystem::create_directories (dir);
/* 2.16 -> 2.18 */
BOOST_AUTO_TEST_CASE (config_upgrade_test2)
{
- ConfigRestorer cr;
-
- boost::filesystem::path dir = "build/test/config_upgrade_test";
- Config::override_path = dir;
- Config::drop ();
+ boost::filesystem::path dir = "build/test/config_upgrade_test2";
+ ConfigRestorer cr(dir);
boost::filesystem::remove_all (dir);
boost::filesystem::create_directories (dir);
BOOST_AUTO_TEST_CASE (config_keep_cinemas_if_making_new_config)
{
- ConfigRestorer cr;
-
boost::filesystem::path dir = "build/test/config_keep_cinemas_if_making_new_config";
- Config::override_path = dir;
- Config::drop ();
+ ConfigRestorer cr(dir);
boost::filesystem::remove_all (dir);
boost::filesystem::create_directories (dir);
BOOST_AUTO_TEST_CASE(keep_config_if_cinemas_fail_to_load)
{
- ConfigRestorer cr;
-
/* Make a new config */
boost::filesystem::path dir = "build/test/keep_config_if_cinemas_fail_to_load";
- Config::override_path = dir;
- Config::drop();
+ ConfigRestorer cr(dir);
boost::filesystem::remove_all(dir);
boost::filesystem::create_directories(dir);
Config::instance()->write();
BOOST_AUTO_TEST_CASE(read_cinemas_xml_and_write_sqlite)
{
- 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);
{
Editor editor(dir / "2.18" / "config.xml");
editor.replace(
- "/home/realldoesnt/exist/this/path/is/nonsense.xml",
+ "/home/realldoesnt/exist/this/path/is/nonsense.sqlite3",
boost::filesystem::canonical(dir / "cinemas.xml").string()
);
}
- Config::override_path = dir;
- Config::drop();
+ ConfigRestorer cr(dir);
/* This should make a sqlite3 file containing the recipients from cinemas.xml */
Config::instance();
BOOST_AUTO_TEST_CASE(read_dkdm_recipients_xml_and_write_sqlite)
{
- ConfigRestorer cr;
-
/* Set up a config with an XML cinemas file */
boost::filesystem::path dir = "build/test/read_dkdm_recipients_xml_and_write_sqlite";
boost::filesystem::remove_all(dir);
);
}
- Config::override_path = dir;
- Config::drop();
+ ConfigRestorer cr(dir);
/* This should make a sqlite3 file containing the recipients from dkdm_recipients.xml */
Config::instance();
BOOST_AUTO_TEST_CASE(save_config_as_zip_test)
{
- ConfigRestorer cr;
+ boost::filesystem::path const dir = "build/test/save_config_as_zip_test";
+ ConfigRestorer cr(dir);
+ boost::system::error_code ec;
+ boost::filesystem::remove_all(dir, ec);
+ boost::filesystem::create_directories(dir);
+ boost::filesystem::copy_file("test/data/2.18.config.xml", dir / "config.xml");
+
+ Config::instance()->set_cinemas_file(dir / "cinemas.sqlite3");
+ Config::instance()->set_dkdm_recipients_file(dir / "dkdm_recipients.sqlite3");
CinemaList cinemas;
cinemas.add_cinema({"My Great Cinema", {}, "", dcp::UTCOffset()});
recipients.add_dkdm_recipient({"Carl's Classics", "Oldies but goodies", {}, {}});
boost::filesystem::path const zip = "build/test/save.zip";
- boost::system::error_code ec;
boost::filesystem::remove(zip, ec);
save_all_config_as_zip(zip);
Unzipper unzipper(zip);
"config.xml",
boost::algorithm::replace_all_copy(
dcp::file_to_string("test/data/2.18.config.xml"),
- "/home/realldoesnt/exist/this/path/is/nonsense.xml",
+ "/home/realldoesnt/exist/this/path/is/nonsense.sqlite3",
"build/test/hide/it/here/cinemas.sqlite3"
)
);
{
ConfigRestorer cr;
+ CinemaList cinema_list("build/test/hide/it/here/cinemas.sqlite3");
+ cinema_list.add_cinema(Cinema("Foo", {}, "Bar", dcp::UTCOffset()));
+
boost::filesystem::path const zip = "build/test/load.zip";
boost::system::error_code ec;
boost::filesystem::remove(zip, ec);
Config::instance()->load_from_zip(zip, Config::CinemasAction::IGNORE);
- CinemaList cinema_list("build/test/hide/it/here/cinemas.sqlite3");
auto cinemas = cinema_list.cinemas();
BOOST_CHECK(!cinemas.empty());
}
+
+
+BOOST_AUTO_TEST_CASE(use_sqlite_if_present)
+{
+ /* 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.sqlite3",
+ boost::filesystem::canonical(dir / "cinemas.xml").string()
+ );
+ }
+
+ ConfigRestorer cr(dir);
+
+ /* 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"));
+}
+
+
+