summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrun/tests13
-rw-r--r--run/tests.bat7
-rw-r--r--src/lib/cross_linux.cc6
-rw-r--r--src/lib/cross_osx.cc7
-rw-r--r--src/lib/cross_windows.cc6
-rw-r--r--src/lib/util.cc43
-rw-r--r--src/lib/util.h1
-rw-r--r--test/test.cc1
8 files changed, 44 insertions, 40 deletions
diff --git a/run/tests b/run/tests
index 209c65d1d..520d5dbaf 100755
--- a/run/tests
+++ b/run/tests
@@ -58,6 +58,9 @@ done
if [ "$(uname)" == "Linux" ]; then
rm -f build/test/dcpomatic2_openssl
mkdir -p build/test
+ cp -r ../libdcp/tags build/test
+ cp -r ../libdcp/xsd build/test
+ cp ../libdcp/ratings build/test
# This must be our patched openssl or tests will fail
if [ ! -f build/test/dcpomatic2_openssl ]; then
ln -s ../../../openssl/apps/openssl build/test/dcpomatic2_openssl
@@ -75,13 +78,9 @@ if [ "$(uname)" == "Linux" ]; then
fi
if [ "$(uname)" == "Darwin" ]; then
- resources=build/Resources
- rm -rf $resources
- mkdir -p $resources
- cp fonts/*.ttf $resources
- cp -r ../libdcp/tags $resources
- cp -r ../libdcp/xsd $resources
- cp ../libdcp/ratings $resources
+ cp -r ../libdcp/tags build/test
+ cp -r ../libdcp/xsd build/test
+ cp ../libdcp/ratings build/test
rm -f build/test/openssl
ln -s ../../../openssl/apps/openssl build/test/openssl
# We need to find ffcmp in here
diff --git a/run/tests.bat b/run/tests.bat
index f419027bc..3eb422d7d 100644
--- a/run/tests.bat
+++ b/run/tests.bat
@@ -1,8 +1,7 @@
set PATH=%PATH%;c:\users\ci\bin_v2.18.x;c:\users\ci\workspace\dcpomatic\bin;c:\users\ci\workspace\dcpomatic\lib
set DCPOMATIC_TEST_PRIVATE=c:\users\ci\dcpomatic-test-private
-xcopy ..\libdcp\tags build\tags\
-copy ..\libdcp\ratings build\
+xcopy ..\libdcp\tags build\test\tags\
+copy ..\libdcp\ratings build\test\
copy ..\openssl\apps\openssl.exe build\test\
-xcopy fonts build\fonts\
-move build\fonts\fonts.conf.windows build\fonts\fonts.conf
+copy fonts\fonts.conf.windows fonts\fonts.conf
build\test\unit-tests.exe --log_level=test_suite %1 %2
diff --git a/src/lib/cross_linux.cc b/src/lib/cross_linux.cc
index be3233b32..ccd78a3b1 100644
--- a/src/lib/cross_linux.cc
+++ b/src/lib/cross_linux.cc
@@ -26,6 +26,7 @@
#include "dcpomatic_log.h"
#include "exceptions.h"
#include "log.h"
+#include "util.h"
#include <dcp/filesystem.h>
#include <dcp/raw_convert.h>
#include <dcp/warnings.h>
@@ -90,6 +91,7 @@ resources_path ()
return installed;
}
+ /* Fallback for running from the source tree */
return directory_containing_executable().parent_path().parent_path().parent_path();
}
@@ -97,6 +99,10 @@ resources_path ()
boost::filesystem::path
libdcp_resources_path ()
{
+ if (running_tests) {
+ return directory_containing_executable();
+ }
+
if (auto appdir = getenv("APPDIR")) {
return boost::filesystem::path(appdir) / "usr" / "share" / "libdcp";
}
diff --git a/src/lib/cross_osx.cc b/src/lib/cross_osx.cc
index 350287e75..7d03ce1b3 100644
--- a/src/lib/cross_osx.cc
+++ b/src/lib/cross_osx.cc
@@ -25,6 +25,7 @@
#include "dcpomatic_log.h"
#include "exceptions.h"
#include "log.h"
+#include "util.h"
#include "variant.h"
#include <dcp/filesystem.h>
#include <glib.h>
@@ -99,7 +100,11 @@ resources_path()
boost::filesystem::path
libdcp_resources_path()
{
- return resources_path();
+ if (running_tests) {
+ return directory_containing_executable();
+ } else {
+ return resources_path();
+ }
}
diff --git a/src/lib/cross_windows.cc b/src/lib/cross_windows.cc
index ad71a3849..3fdaad61a 100644
--- a/src/lib/cross_windows.cc
+++ b/src/lib/cross_windows.cc
@@ -229,7 +229,11 @@ resources_path()
boost::filesystem::path
libdcp_resources_path()
{
- return resources_path();
+ if (running_tests) {
+ return directory_containing_executable();
+ } else {
+ return resources_path();
+ }
}
diff --git a/src/lib/util.cc b/src/lib/util.cc
index 81ae4c494..5ac75134d 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -136,6 +136,7 @@ using namespace dcpomatic;
*/
string program_name;
bool is_batch_converter = false;
+bool running_tests = false;
static boost::thread::id ui_thread;
static boost::filesystem::path backtrace_file;
@@ -458,18 +459,22 @@ LIBDCP_ENABLE_WARNINGS
#ifdef DCPOMATIC_WINDOWS
putenv("PANGOCAIRO_BACKEND=fontconfig");
- if (dcp::filesystem::exists(resources_path() / "fonts.conf")) {
- /* The actual application after installation */
- putenv(String::compose("FONTCONFIG_PATH=%1", resources_path().string()).c_str());
+ if (running_tests) {
+ putenv("FONTCONFIG_PATH=fonts");
} else {
- /* The place where fonts.conf is during tests */
- putenv("FONTCONFIG_PATH=build\\fonts");
+ putenv(String::compose("FONTCONFIG_PATH=%1", resources_path().string()).c_str());
}
#endif
#ifdef DCPOMATIC_OSX
setenv("PANGOCAIRO_BACKEND", "fontconfig", 1);
- setenv("FONTCONFIG_PATH", resources_path().string().c_str(), 1);
+ boost::filesystem::path fontconfig;
+ if (running_tests) {
+ fontconfig = directory_containing_executable().parent_path().parent_path() / "fonts";
+ } else {
+ fontconfig = resources_path();
+ }
+ setenv("FONTCONFIG_PATH", fontconfig.string().c_str(), 1);
#endif
Pango::init();
@@ -1042,29 +1047,13 @@ decrypt_kdm_with_helpful_error(dcp::EncryptedKDM kdm)
boost::filesystem::path
default_font_file()
{
- boost::filesystem::path liberation_normal;
- try {
- liberation_normal = resources_path() / "LiberationSans-Regular.ttf";
- if (!dcp::filesystem::exists(liberation_normal)) {
- /* Hack for unit tests */
- liberation_normal = resources_path() / "fonts" / "LiberationSans-Regular.ttf";
- }
- } catch (boost::filesystem::filesystem_error& e) {
-
- }
-
- if (!dcp::filesystem::exists(liberation_normal)) {
- liberation_normal = "/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf";
- }
- if (!dcp::filesystem::exists(liberation_normal)) {
- liberation_normal = "/usr/share/fonts/liberation-sans/LiberationSans-Regular.ttf";
- }
- if (!dcp::filesystem::exists(liberation_normal)) {
- /* Fedora 41 puts it here */
- liberation_normal = "/usr/share/fonts/liberation-sans-fonts/LiberationSans-Regular.ttf";
+ if (running_tests) {
+ auto const liberation = directory_containing_executable().parent_path().parent_path() / "fonts" / "LiberationSans-Regular.ttf";
+ DCPOMATIC_ASSERT(dcp::filesystem::exists(liberation));
+ return liberation;
}
- return liberation_normal;
+ return resources_path() / "LiberationSans-Regular.ttf";
}
diff --git a/src/lib/util.h b/src/lib/util.h
index 525deeb75..80ba4a1f6 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -55,6 +55,7 @@ namespace dcp {
extern std::string program_name;
extern bool is_batch_converter;
+extern bool running_tests;
class AudioBuffers;
class TextDecoder;
diff --git a/test/test.cc b/test/test.cc
index ba9b4d66f..f518cdccc 100644
--- a/test/test.cc
+++ b/test/test.cc
@@ -156,6 +156,7 @@ struct TestConfig
{
TestConfig ()
{
+ running_tests = true;
State::override_path = "build/test/state";
boost::filesystem::remove_all (*State::override_path);