/*
- Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2018-2021 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
+
#include "lib/config.h"
#include "test.h"
#include <boost/test/unit_test.hpp>
#include <fstream>
+
using std::ofstream;
+
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/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"
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_text_file ("test/data/utf8_config.xml", "build/test/config.xml");
+
+ /* This test has called Config::set_defaults(), so take us back
+ to the config that we want for our tests.
+ */
+ setup_test_config ();
+}
+