X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fconfig_test.cc;h=48dec27d76543e9b13566ae1f614f3f9c75d62c8;hb=e1555a8837da05f135a3705112469206fc17ec80;hp=7299d98d0b7c97057410772a0c981e0cb945bf88;hpb=5d6e902c3ed8937c2c88dcb6985f4edfa211b0ff;p=dcpomatic.git diff --git a/test/config_test.cc b/test/config_test.cc index 7299d98d0..48dec27d7 100644 --- a/test/config_test.cc +++ b/test/config_test.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2018 Carl Hetherington + Copyright (C) 2018-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -18,20 +18,25 @@ */ + #include "lib/config.h" #include "test.h" #include #include + using std::ofstream; + static void rewrite_bad_config () { boost::system::error_code ec; - boost::filesystem::remove ("build/test/bad_config/config.xml", ec); + boost::filesystem::remove ("build/test/bad_config/2.16/config.xml", ec); - ofstream f ("build/test/bad_config/config.xml"); + Config::override_path = "build/test/bad_config"; + boost::filesystem::create_directories ("build/test/bad_config/2.16"); + ofstream f ("build/test/bad_config/2.16/config.xml"); f << "\n" << "\n" << "\n" @@ -42,56 +47,93 @@ rewrite_bad_config () BOOST_AUTO_TEST_CASE (config_backup_test) { + ConfigRestorer cr; + Config::override_path = "build/test/bad_config"; Config::drop(); - boost::system::error_code ec; - boost::filesystem::remove ("build/test/bad_config/config.xml.1", ec); - boost::filesystem::remove ("build/test/bad_config/config.xml.2", ec); - boost::filesystem::remove ("build/test/bad_config/config.xml.3", ec); - boost::filesystem::remove ("build/test/bad_config/config.xml.4", ec); - boost::filesystem::remove ("build/test/bad_config/config.xml.5", ec); - boost::filesystem::remove ("build/test/bad_config/config.xml.5", ec); + boost::filesystem::remove_all ("build/test/bad_config"); rewrite_bad_config(); Config::instance(); - 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")); + BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1")); + 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")); Config::drop(); rewrite_bad_config(); Config::instance(); - 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")); + BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1")); + 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")); Config::drop(); rewrite_bad_config(); Config::instance(); - 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")); + BOOST_CHECK ( boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1")); + 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")); Config::drop(); rewrite_bad_config(); Config::instance(); - 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")); + BOOST_CHECK (boost::filesystem::exists("build/test/bad_config/2.16/config.xml.1")); + 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_AUTO_TEST_CASE (config_write_utf8_test) +{ + ConfigRestorer cr; - /* This test has called Config::set_defaults(), so take us back - to the config that we want for our tests. - */ - setup_test_config (); + 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"); + Config::instance(); + try { + /* This will fail to write cinemas.xml since the link is to a non-existant directory */ + Config::instance()->write(); + } catch (...) {} + + check_xml (dir / "config.xml", "test/data/2.14.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.16" / "config.xml", "test/data/2.16.config.windows.xml", {}); +#else + check_xml (dir / "2.16" / "config.xml", "test/data/2.16.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")); +} +