+
+ boost::filesystem::remove_all (base);
+
+ boost::filesystem::create_directories (version);
+ std::ofstream f (path(version / "config.xml").string().c_str());
+ f << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ << "<Config>\n"
+ << "<Link>" << path(version / "actual.xml").string() << "</Link>\n"
+ << "</Config>\n";
+ f.close ();
+
+ Config::drop ();
+ /* Cause actual.xml to be backed up */
+ rewrite_bad_config ("actual.xml", "first write");
+ Config::instance ();
+
+ /* Make sure actual.xml was backed up to the right place */
+ BOOST_CHECK (boost::filesystem::exists(version / "actual.xml.1"));
+}
+
+
+BOOST_AUTO_TEST_CASE (config_write_utf8_test)
+{
+ ConfigRestorer cr;
+
+ 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");
+}
+
+
+BOOST_AUTO_TEST_CASE (config_upgrade_test)
+{
+ ConfigRestorer cr;
+
+ 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);
+
+ boost::filesystem::copy_file ("test/data/2.14.config.xml", dir / "config.xml");
+ boost::filesystem::copy_file ("test/data/2.14.cinemas.xml", dir / "cinemas.xml");