diff --git a/src/OpenColorIO/Config.cpp b/src/OpenColorIO/Config.cpp index 1b5a8c70db..89f59eda5d 100644 --- a/src/OpenColorIO/Config.cpp +++ b/src/OpenColorIO/Config.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -1155,7 +1156,7 @@ ConstConfigRcPtr Config::CreateFromFile(const char * filename) { if (!filename || !*filename) { - throw ExceptionMissingFile ("The config filepath is missing."); + throw ExceptionMissingFile("The config filepath is missing."); } // Check for URI Pattern: ocio:// @@ -1167,6 +1168,13 @@ ConstConfigRcPtr Config::CreateFromFile(const char * filename) return CreateFromBuiltinConfig(uri.c_str()); } + if (!std::filesystem::exists(filename)) + { + std::ostringstream oss; + oss << "'" << filename << "' file does not exist."; + throw ExceptionMissingFile(oss.str().c_str()); + } + std::ifstream ifstream = Platform::CreateInputFileStream( filename, std::ios_base::in | std::ios_base::binary diff --git a/tests/cpu/builtinconfigs/BuiltinConfig_tests.cpp b/tests/cpu/builtinconfigs/BuiltinConfig_tests.cpp index c58c3edd24..74a6298efa 100644 --- a/tests/cpu/builtinconfigs/BuiltinConfig_tests.cpp +++ b/tests/cpu/builtinconfigs/BuiltinConfig_tests.cpp @@ -446,8 +446,8 @@ OCIO_ADD_TEST(BuiltinConfigs, create_builtin_config) // Test that CreateFromFile does not work without ocio:// prefix for built-in config. OCIO_CHECK_THROW_WHAT( OCIO::Config::CreateFromFile("cg-config-v1.0.0_aces-v1.3_ocio-v2.1"), - OCIO::Exception, - "Error could not read 'cg-config-v1.0.0_aces-v1.3_ocio-v2.1' OCIO profile." + OCIO::ExceptionMissingFile, + "'cg-config-v1.0.0_aces-v1.3_ocio-v2.1' file does not exist." ); { diff --git a/tests/python/ConfigTest.py b/tests/python/ConfigTest.py index 9debc3da2e..4834f06ac8 100644 --- a/tests/python/ConfigTest.py +++ b/tests/python/ConfigTest.py @@ -1011,7 +1011,7 @@ def testFromEnvAndFromFile(uri, numberOfExpectedColorspaces, expectedConfigName) nbOfColorspacesForStudioConfig = 55 # Test that CreateFromFile does not work without ocio:// prefix for built-in config. - with self.assertRaises(OCIO.Exception) as cm: + with self.assertRaises(OCIO.ExceptionMissingFile) as cm: OCIO.Config.CreateFromFile(cgConfigName) # Test CG config.