Try to fix text-file-checking test on Windows.
[dcpomatic.git] / test / config_test.cc
index 14cceb6a0df30100849a9565e733fbec032902fd..d22e635c826a93713b0fb067158f11217a992370 100644 (file)
@@ -29,10 +29,11 @@ static void
 rewrite_bad_config ()
 {
        boost::system::error_code ec;
-       boost::filesystem::remove ("build/test/config.xml", ec);
+       boost::filesystem::remove ("build/test/bad_config/config.xml", ec);
 
-       Config::override_path = "build/test";
-       ofstream f ("build/test/config.xml");
+       Config::override_path = "build/test/bad_config";
+       boost::filesystem::create_directories ("build/test/bad_config");
+       ofstream f ("build/test/bad_config/config.xml");
        f << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
          << "<Config>\n"
          << "<Foo></Foo>\n"
@@ -43,54 +44,68 @@ rewrite_bad_config ()
 
 BOOST_AUTO_TEST_CASE (config_backup_test)
 {
+       Config::override_path = "build/test/bad_config";
+
        Config::drop();
 
-       boost::system::error_code ec;
-       boost::filesystem::remove ("build/test/config.xml.1", ec);
-       boost::filesystem::remove ("build/test/config.xml.2", ec);
-       boost::filesystem::remove ("build/test/config.xml.3", ec);
-       boost::filesystem::remove ("build/test/config.xml.4", ec);
-       boost::filesystem::remove ("build/test/config.xml.5", ec);
-       boost::filesystem::remove ("build/test/config.xml.5", ec);
+       boost::filesystem::remove_all ("build/test/bad_config");
 
        rewrite_bad_config();
 
        Config::instance();
 
-       BOOST_CHECK ( boost::filesystem::exists ("build/test/config.xml.1"));
-       BOOST_CHECK (!boost::filesystem::exists ("build/test/config.xml.2"));
-       BOOST_CHECK (!boost::filesystem::exists ("build/test/config.xml.3"));
-       BOOST_CHECK (!boost::filesystem::exists ("build/test/config.xml.4"));
+       BOOST_CHECK ( boost::filesystem::exists ("build/test/bad_config/config.xml.1"));
+       BOOST_CHECK (!boost::filesystem::exists ("build/test/bad_config/config.xml.2"));
+       BOOST_CHECK (!boost::filesystem::exists ("build/test/bad_config/config.xml.3"));
+       BOOST_CHECK (!boost::filesystem::exists ("build/test/bad_config/config.xml.4"));
 
        Config::drop();
        rewrite_bad_config();
        Config::instance();
 
-       BOOST_CHECK ( boost::filesystem::exists ("build/test/config.xml.1"));
-       BOOST_CHECK ( boost::filesystem::exists ("build/test/config.xml.2"));
-       BOOST_CHECK (!boost::filesystem::exists ("build/test/config.xml.3"));
-       BOOST_CHECK (!boost::filesystem::exists ("build/test/config.xml.4"));
+       BOOST_CHECK ( boost::filesystem::exists ("build/test/bad_config/config.xml.1"));
+       BOOST_CHECK ( boost::filesystem::exists ("build/test/bad_config/config.xml.2"));
+       BOOST_CHECK (!boost::filesystem::exists ("build/test/bad_config/config.xml.3"));
+       BOOST_CHECK (!boost::filesystem::exists ("build/test/bad_config/config.xml.4"));
 
        Config::drop();
        rewrite_bad_config();
        Config::instance();
 
-       BOOST_CHECK ( boost::filesystem::exists ("build/test/config.xml.1"));
-       BOOST_CHECK ( boost::filesystem::exists ("build/test/config.xml.2"));
-       BOOST_CHECK ( boost::filesystem::exists ("build/test/config.xml.3"));
-       BOOST_CHECK (!boost::filesystem::exists ("build/test/config.xml.4"));
+       BOOST_CHECK ( boost::filesystem::exists ("build/test/bad_config/config.xml.1"));
+       BOOST_CHECK ( boost::filesystem::exists ("build/test/bad_config/config.xml.2"));
+       BOOST_CHECK ( boost::filesystem::exists ("build/test/bad_config/config.xml.3"));
+       BOOST_CHECK (!boost::filesystem::exists ("build/test/bad_config/config.xml.4"));
 
        Config::drop();
        rewrite_bad_config();
        Config::instance();
 
-       BOOST_CHECK (boost::filesystem::exists ("build/test/config.xml.1"));
-       BOOST_CHECK (boost::filesystem::exists ("build/test/config.xml.2"));
-       BOOST_CHECK (boost::filesystem::exists ("build/test/config.xml.3"));
-       BOOST_CHECK (boost::filesystem::exists ("build/test/config.xml.4"));
+       BOOST_CHECK (boost::filesystem::exists ("build/test/bad_config/config.xml.1"));
+       BOOST_CHECK (boost::filesystem::exists ("build/test/bad_config/config.xml.2"));
+       BOOST_CHECK (boost::filesystem::exists ("build/test/bad_config/config.xml.3"));
+       BOOST_CHECK (boost::filesystem::exists ("build/test/bad_config/config.xml.4"));
 
        /* This test has called Config::set_defaults(), so take us back
           to the config that we want for our tests.
        */
        setup_test_config ();
 }
+
+
+BOOST_AUTO_TEST_CASE (config_write_utf8_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_file ("test/data/utf8_config.xml", "build/test/config.xml", false);
+
+       /* This test has called Config::set_defaults(), so take us back
+          to the config that we want for our tests.
+       */
+       setup_test_config ();
+}
+