Use 2.18.x subdirectory for configuration.
authorCarl Hetherington <cth@carlh.net>
Mon, 26 Sep 2022 18:20:16 +0000 (20:20 +0200)
committerCarl Hetherington <cth@carlh.net>
Sun, 2 Oct 2022 21:20:11 +0000 (23:20 +0200)
src/lib/state.cc
test/config_test.cc
test/data

index e22f9e0b98bd71d37f4e6947d1563b1b6afd01c2..3079660323465db2c3b83a44985053e885a053fe 100644 (file)
@@ -35,7 +35,7 @@ boost::optional<boost::filesystem::path> State::override_path;
 /* List of config versions to look for in descending order of preference;
  * i.e. look at the first one, and if that doesn't exist, try the second, etc.
  */
-static std::vector<std::string> config_versions = { "2.16" };
+static std::vector<std::string> config_versions = { "2.18", "2.16" };
 
 
 static
index e905500852428e9e8a56afb202342101457b3a22..062c1849ac331b9ae97e45c0c6bbd0f96ba04b04 100644 (file)
@@ -38,7 +38,7 @@ rewrite_bad_config (string filename, string extra_line)
 {
        using namespace boost::filesystem;
 
-       auto base = path("build/test/bad_config/2.16");
+       auto base = path("build/test/bad_config/2.18");
        auto file = base / filename;
 
        boost::system::error_code ec;
@@ -73,47 +73,49 @@ BOOST_AUTO_TEST_CASE (config_backup_test)
         */
        Config::instance();
 
-       BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.1") == first_write_xml);
-       BOOST_CHECK (!boost::filesystem::exists("build/test/bad_config/2.16/config.xml.2"));
-       BOOST_CHECK (!boost::filesystem::exists("build/test/bad_config/2.16/config.xml.3"));
-       BOOST_CHECK (!boost::filesystem::exists("build/test/bad_config/2.16/config.xml.4"));
+       boost::filesystem::path const prefix = "build/test/bad_config/2.18";
+
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.1"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.1") == first_write_xml);
+       BOOST_CHECK(!boost::filesystem::exists(prefix / "config.xml.2"));
+       BOOST_CHECK(!boost::filesystem::exists(prefix / "config.xml.3"));
+       BOOST_CHECK(!boost::filesystem::exists(prefix / "config.xml.4"));
 
        Config::drop();
        auto const second_write_xml = rewrite_bad_config("config.xml", "second write");
        Config::instance();
 
-       BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.1") == first_write_xml);
-       BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.2"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.2") == second_write_xml);
-       BOOST_CHECK (!boost::filesystem::exists("build/test/bad_config/2.16/config.xml.3"));
-       BOOST_CHECK (!boost::filesystem::exists("build/test/bad_config/2.16/config.xml.4"));
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.1"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.1") == first_write_xml);
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.2"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.2") == second_write_xml);
+       BOOST_CHECK(!boost::filesystem::exists(prefix / "config.xml.3"));
+       BOOST_CHECK(!boost::filesystem::exists(prefix / "config.xml.4"));
 
        Config::drop();
        auto const third_write_xml = rewrite_bad_config("config.xml", "third write");
        Config::instance();
 
-       BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.1") == first_write_xml);
-       BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.2"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.2") == second_write_xml);
-       BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.3"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.3") == third_write_xml);
-       BOOST_CHECK (!boost::filesystem::exists("build/test/bad_config/2.16/config.xml.4"));
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.1"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.1") == first_write_xml);
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.2"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.2") == second_write_xml);
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.3"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.3") == third_write_xml);
+       BOOST_CHECK(!boost::filesystem::exists(prefix / "config.xml.4"));
 
        Config::drop();
        auto const fourth_write_xml = rewrite_bad_config("config.xml", "fourth write");
        Config::instance();
 
-       BOOST_CHECK (boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.1") == first_write_xml);
-       BOOST_CHECK (boost::filesystem::exists("build/test/bad_config/2.16/config.xml.2"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.2") == second_write_xml);
-       BOOST_CHECK (boost::filesystem::exists("build/test/bad_config/2.16/config.xml.3"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.3") == third_write_xml);
-       BOOST_CHECK (boost::filesystem::exists("build/test/bad_config/2.16/config.xml.4"));
-       BOOST_CHECK (dcp::file_to_string("build/test/bad_config/2.16/config.xml.4") == fourth_write_xml);
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.1"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.1") == first_write_xml);
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.2"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.2") == second_write_xml);
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.3"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.3") == third_write_xml);
+       BOOST_CHECK(boost::filesystem::exists(prefix / "config.xml.4"));
+       BOOST_CHECK(dcp::file_to_string(prefix / "config.xml.4") == fourth_write_xml);
 }
 
 
@@ -124,7 +126,7 @@ BOOST_AUTO_TEST_CASE (config_backup_with_link_test)
        ConfigRestorer cr;
 
        auto base = path("build/test/bad_config");
-       auto version = base / "2.16";
+       auto version = base / "2.18";
 
        Config::override_path = base;
        Config::drop();
@@ -163,7 +165,8 @@ BOOST_AUTO_TEST_CASE (config_write_utf8_test)
 }
 
 
-BOOST_AUTO_TEST_CASE (config_upgrade_test)
+/* 2.14 -> 2.18 */
+BOOST_AUTO_TEST_CASE (config_upgrade_test1)
 {
        ConfigRestorer cr;
 
@@ -185,12 +188,44 @@ BOOST_AUTO_TEST_CASE (config_upgrade_test)
        check_xml (dir / "cinemas.xml", "test/data/2.14.cinemas.xml", {});
 #ifdef DCPOMATIC_WINDOWS
        /* This file has the windows path for dkdm_recipients.xml (with backslashes) */
-       check_xml (dir / "2.16" / "config.xml", "test/data/2.16.config.windows.xml", {});
+       check_xml(dir / "2.18" / "config.xml", "test/data/2.18.config.windows.xml", {});
+#else
+       check_xml(dir / "2.18" / "config.xml", "test/data/2.18.config.xml", {});
+#endif
+       /* cinemas.xml is not copied into 2.18 as its format has not changed */
+       BOOST_REQUIRE (!boost::filesystem::exists(dir / "2.18" / "cinemas.xml"));
+}
+
+
+/* 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::remove_all (dir);
+       boost::filesystem::create_directories (dir);
+
+       boost::filesystem::copy_file("test/data/2.16.config.xml", dir / "config.xml");
+       boost::filesystem::copy_file("test/data/2.14.cinemas.xml", dir / "cinemas.xml");
+       Config::instance();
+       try {
+               /* This will fail to write cinemas.xml since the link is to a non-existent directory */
+               Config::instance()->write();
+       } catch (...) {}
+
+       check_xml(dir / "config.xml", "test/data/2.16.config.xml", {});
+       check_xml(dir / "cinemas.xml", "test/data/2.14.cinemas.xml", {});
+#ifdef DCPOMATIC_WINDOWS
+       /* This file has the windows path for dkdm_recipients.xml (with backslashes) */
+       check_xml(dir / "2.18" / "config.xml", "test/data/2.18.config.windows.xml", {});
 #else
-       check_xml (dir / "2.16" / "config.xml", "test/data/2.16.config.xml", {});
+       check_xml(dir / "2.18" / "config.xml", "test/data/2.18.config.xml", {});
 #endif
-       /* cinemas.xml is not copied into 2.16 as its format has not changed */
-       BOOST_REQUIRE (!boost::filesystem::exists(dir / "2.16" / "cinemas.xml"));
+       /* cinemas.xml is not copied into 2.18 as its format has not changed */
+       BOOST_REQUIRE (!boost::filesystem::exists(dir / "2.18" / "cinemas.xml"));
 }
 
 
@@ -212,7 +247,7 @@ BOOST_AUTO_TEST_CASE (config_keep_cinemas_if_making_new_config)
        boost::filesystem::copy_file (dir / "cinemas.xml", dir / "backup_for_test.xml");
 
        Config::drop ();
-       boost::filesystem::remove (dir / "2.16" / "config.xml");
+       boost::filesystem::remove (dir / "2.18" / "config.xml");
        Config::instance();
 
        check_text_file(dir / "backup_for_test.xml", dir / "cinemas.xml");
@@ -234,7 +269,7 @@ BOOST_AUTO_TEST_CASE(keep_config_if_cinemas_fail_to_load)
        auto const cinemas = dir / "cinemas.xml";
 
        /* Back things up */
-       boost::filesystem::copy_file(dir / "2.16" / "config.xml", dir / "config_backup_for_test.xml");
+       boost::filesystem::copy_file(dir / "2.18" / "config.xml", dir / "config_backup_for_test.xml");
        boost::filesystem::copy_file(cinemas, dir / "cinemas_backup_for_test.xml");
 
        /* Corrupt the cinemas */
@@ -245,7 +280,7 @@ BOOST_AUTO_TEST_CASE(keep_config_if_cinemas_fail_to_load)
        Config::instance();
 
        /* We should have a new cinemas.xml and the old config.xml */
-       check_text_file(dir / "2.16" / "config.xml", dir / "config_backup_for_test.xml");
+       check_text_file(dir / "2.18" / "config.xml", dir / "config_backup_for_test.xml");
        check_text_file(cinemas, dir / "cinemas_backup_for_test.xml");
 }
 
index f2aeabb8ac65f4a4e16199fcf2f07b6573521869..de17df3f7bd06e08abd557d8f92a144d66303d7c 160000 (submodule)
--- a/test/data
+++ b/test/data
@@ -1 +1 @@
-Subproject commit f2aeabb8ac65f4a4e16199fcf2f07b6573521869
+Subproject commit de17df3f7bd06e08abd557d8f92a144d66303d7c