From: Tim Mayberry Date: Mon, 19 Sep 2016 00:10:23 +0000 (+1000) Subject: Add test to create new Sessions with localized names and reopen them X-Git-Tag: 5.4~244 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=75ade6b2df3926b965f5af6ec6d7ed8659167b73;p=ardour.git Add test to create new Sessions with localized names and reopen them This test is successful on Linux but fails on Windows currently because of the incorrect realpath implementation for windows in pbd/path_expand.cc --- diff --git a/libs/ardour/test/session_test.cc b/libs/ardour/test/session_test.cc index b9372aa5a5..d64fe77f7f 100644 --- a/libs/ardour/test/session_test.cc +++ b/libs/ardour/test/session_test.cc @@ -85,3 +85,74 @@ SessionTest::new_session_from_template () delete template_session; stop_and_destroy_backend (); } + +void +SessionTest::open_session_utf8_path () +{ + std::vector utf8_strings; + + get_utf8_test_strings (utf8_strings); + + CPPUNIT_ASSERT (!utf8_strings.empty()); + + const string test_dir = new_test_output_dir ("open_session_utf8_path"); + + for (std::vector::const_iterator i = utf8_strings.begin (); i != utf8_strings.end (); + ++i) { + + const string session_name (*i); + std::string new_session_dir = Glib::build_filename (test_dir, session_name); + bool new_session_failed = false; + + CPPUNIT_ASSERT (!Glib::file_test (new_session_dir, Glib::FILE_TEST_EXISTS)); + + create_and_start_dummy_backend (); + + ARDOUR::Session* session = 0; + + try { + session = new Session (*AudioEngine::instance(), new_session_dir, session_name); + + CPPUNIT_ASSERT (session); + + session->save_state (""); + + } catch(...) { + new_session_failed = true; + + std::cerr << "Failed to create new session using name : " << *i << std::endl; + } + + delete session; + session = 0; + stop_and_destroy_backend (); + + CPPUNIT_ASSERT (!new_session_failed); + + if (new_session_failed) break; + + create_and_start_dummy_backend (); + + bool open_session_failed = false; + + try { + // reopen same session to check that it opens without error + session = new Session (*AudioEngine::instance (), new_session_dir, session_name); + + CPPUNIT_ASSERT (session); + } catch (...) { + open_session_failed = true; + + std::cerr << "Failed to open session using name : " << *i << std::endl; + } + + delete session; + session = 0; + stop_and_destroy_backend (); + + CPPUNIT_ASSERT (!open_session_failed); + + if (open_session_failed) break; + } + +} diff --git a/libs/ardour/test/session_test.h b/libs/ardour/test/session_test.h index 9aba3d9847..37228bac15 100644 --- a/libs/ardour/test/session_test.h +++ b/libs/ardour/test/session_test.h @@ -7,10 +7,12 @@ class SessionTest : public CppUnit::TestFixture CPPUNIT_TEST_SUITE (SessionTest); CPPUNIT_TEST (new_session); CPPUNIT_TEST (new_session_from_template); + CPPUNIT_TEST (open_session_utf8_path); CPPUNIT_TEST_SUITE_END (); public: void new_session (); void new_session_from_template (); + void open_session_utf8_path (); };