ShaderMetricsSystem spawns a lot of warnings (#5661)

* ShaderMetricsSystem spawns a lot of warnings
when run Atom_RPI.Tests

Added @user@ path alias definition.

* When running unit tests, using AZ::Utils::GetProjectPath() will resolve
to something like:
"/data/workspace/o3de/build/linux/External/Atom-9a4d112b/RPI/Code/Cache"
The ShaderMetricSystem.cpp writes to the @user@ folder and the following
runtime error occurs:
"You may not alter data inside the asset cache.  Please check the call
stack and consider writing into the source asset folder instead."
"Attempted write location:
/data/workspace/o3de/build/linux/External/Atom-9a4d112b/RPI/Code/Cache/user/shadermetrics.json"
To avoid the error We use AZ::Test::GetEngineRootPath();

Signed-off-by: galibzon <66021303+galibzon@users.noreply.github.com>
monroegm-disable-blank-issue-2
galibzon 4 years ago committed by GitHub
parent 68a2561dc1
commit 155fe77f5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -69,6 +69,19 @@ namespace UnitTest
assetPath /= "Cache";
AZ::IO::FileIOBase::GetInstance()->SetAlias("@products@", assetPath.c_str());
// Remark, AZ::Utils::GetProjectPath() is not used when defining "user" folder,
// instead We use AZ::Test::GetEngineRootPath();.
// Reason:
// When running unit tests, using AZ::Utils::GetProjectPath() will resolve to something like:
// "/data/workspace/o3de/build/linux/External/Atom-9a4d112b/RPI/Code/Cache"
// The ShaderMetricSystem.cpp writes to the @user@ folder and the following runtime error occurs:
// "You may not alter data inside the asset cache. Please check the call stack and consider writing into the source asset folder instead."
// "Attempted write location: /data/workspace/o3de/build/linux/External/Atom-9a4d112b/RPI/Code/Cache/user/shadermetrics.json"
// To avoid the error We use AZ::Test::GetEngineRootPath();
AZ::IO::Path userPath = AZ::Test::GetEngineRootPath();
userPath /= "user";
AZ::IO::FileIOBase::GetInstance()->SetAlias("@user@", userPath.c_str());
m_jsonRegistrationContext = AZStd::make_unique<AZ::JsonRegistrationContext>();
m_jsonSystemComponent = AZStd::make_unique<AZ::JsonSystemComponent>();
m_jsonSystemComponent->Reflect(m_jsonRegistrationContext.get());

Loading…
Cancel
Save