Kaynağa Gözat

Update unit tests

Signed-off-by: amzn-mike <[email protected]>
amzn-mike 2 yıl önce
ebeveyn
işleme
c7e3e2cacf

+ 1 - 0
Code/Framework/AzToolsFramework/AzToolsFramework/Metadata/MetadataManager.h

@@ -77,6 +77,7 @@ namespace AzToolsFramework
     public:
         AZ_COMPONENT(MetadataManager, "{CB738803-3B6C-4B62-9DC2-1980D340F288}", IMetadataRequests);
 
+        static constexpr const char* MetadataFileExtensionNoDot = "meta";
         static constexpr const char* MetadataFileExtension = ".meta";
         static constexpr const char* MetadataVersionKey = "/FileVersion";
         static constexpr const char* MetadataObjectVersionField = "__version";

+ 1 - 0
Code/Tools/AssetProcessor/native/tests/ApplicationManagerTests.h

@@ -46,6 +46,7 @@ namespace UnitTests
         AZStd::unique_ptr<MockAssetProcessorManager> m_mockAPM;
 
         MockVirtualFileIO m_virtualFileIO;
+        AzToolsFramework::UuidUtilComponent m_uuidUtil;
         AzToolsFramework::MetadataManager m_metadataManager;
 
         // These are just aliases, no need to manage/delete them

+ 2 - 0
Code/Tools/AssetProcessor/native/tests/AssetCatalog/AssetCatalogUnitTests.cpp

@@ -81,6 +81,7 @@ namespace AssetProcessor
             AssertAbsorber m_absorber;
             AZStd::string m_databaseLocation;
             QCoreApplication coreApp;
+            AzToolsFramework::UuidUtilComponent m_uuidUtil;
             AzToolsFramework::MetadataManager m_metadataManager;
             AssetProcessor::UuidManager m_uuidManager;
             int argc = 0;
@@ -898,6 +899,7 @@ namespace AssetProcessor
             AZStd::string m_assetTestString    = "Its the Asset A";
             AZStd::string m_productTestString  = "Its a product A";
             UnitTests::MockVirtualFileIO m_virtualFileIO;
+            AzToolsFramework::UuidUtilComponent m_uuidUtil;
             AzToolsFramework::MetadataManager m_metadataManager;
             AssetProcessor::UuidManager m_uuidManager;
         };

+ 1 - 0
Code/Tools/AssetProcessor/native/tests/MissingDependencyScannerTests.cpp

@@ -166,6 +166,7 @@ namespace AssetProcessor
             AZStd::shared_ptr<AssetDatabaseConnection> m_dbConn;
             MissingDependencyScanner_Test m_scanner;
             UnitTests::MockPathConversion m_pathConversion;
+            AzToolsFramework::UuidUtilComponent m_uuidUtil;
             AzToolsFramework::MetadataManager m_metadataManager;
             AssetProcessor::UuidManager m_uuidManager;
             UnitTestUtils::ScopedDir m_scopedDir; // Sets up FileIO instance

+ 28 - 21
Code/Tools/AssetProcessor/native/tests/UnitTestUtilities.cpp

@@ -179,46 +179,53 @@ namespace UnitTests
     }
 
     bool TraceBusErrorChecker::OnPreAssert(
-        [[maybe_unused]] const char* fileName,
-        [[maybe_unused]] int line,
-        [[maybe_unused]] const char* func,
-        [[maybe_unused]] const char* message)
+        const char* fileName,
+        int line,
+        const char* func,
+        const char* message)
     {
-        EXPECT_TRUE(m_expectingFailure) << "Unexpected assert occurred";
-
-        m_suppressedMessages.push_back(AZStd::string::format("%s(%d): %s - %s\n", fileName, line, func, message));
+        RecordError(fileName, line, func, message);
 
         return m_expectingFailure;
     }
 
     bool TraceBusErrorChecker::OnPreError(
         [[maybe_unused]] const char* window,
-        [[maybe_unused]] const char* fileName,
-        [[maybe_unused]] int line,
-        [[maybe_unused]] const char* func,
-        [[maybe_unused]] const char* message)
+        const char* fileName,
+        int line,
+        const char* func,
+        const char* message)
     {
-        EXPECT_TRUE(m_expectingFailure) << "Unexpected error occurred";
-
-        m_suppressedMessages.push_back(AZStd::string::format("%s(%d): %s - %s\n", fileName, line, func, message));
+        RecordError(fileName, line, func, message);
 
         return m_expectingFailure;
     }
 
     bool TraceBusErrorChecker::OnPreWarning(
         [[maybe_unused]] const char* window,
-        [[maybe_unused]] const char* fileName,
-        [[maybe_unused]] int line,
-        [[maybe_unused]] const char* func,
-        [[maybe_unused]] const char* message)
+        const char* fileName,
+        int line,
+        const char* func,
+        const char* message)
     {
-        EXPECT_TRUE(m_expectingFailure) << "Unexpected warning occurred";
-
-        m_suppressedMessages.push_back(AZStd::string::format("%s(%d): %s - %s\n", fileName, line, func, message));
+        RecordError(fileName, line, func, message);
 
         return m_expectingFailure;
     }
 
+    void TraceBusErrorChecker::RecordError(const char* fileName, int line, const char* func, const char* message)
+    {
+        AZStd::string errorMessage = AZStd::string::format("%s(%d): %s - %s\n", fileName, line, func, message);
+
+        if (!m_expectingFailure)
+        {
+            AZ::Debug::Trace::Instance().Output("", errorMessage.c_str());
+            GTEST_NONFATAL_FAILURE_("Unexpected failure occurred");
+        }
+
+        m_suppressedMessages.push_back(errorMessage);
+    }
+
     void MockFileStateCache::RegisterForDeleteEvent(AZ::Event<AssetProcessor::FileStateInfo>::Handler& handler)
     {
         handler.Connect(m_deleteEvent);

+ 2 - 0
Code/Tools/AssetProcessor/native/tests/UnitTestUtilities.h

@@ -33,6 +33,8 @@ namespace UnitTests
         bool OnPreError(const char* window, const char* fileName, int line, const char* func, const char* message) override;
         bool OnPreWarning(const char* window, const char* fileName, int line, const char* func, const char* message) override;
 
+        void RecordError(const char* fileName, int line, const char* func, const char* message);
+
         bool m_expectingFailure = false;
         AZStd::vector<AZStd::string> m_suppressedMessages;
     };

+ 1 - 0
Code/Tools/AssetProcessor/native/tests/UuidManagerTests.cpp

@@ -63,6 +63,7 @@ namespace UnitTests
         AZStd::unique_ptr<AZ::JsonRegistrationContext> m_jsonRegistrationContext;
 
         MockFileStateCache m_fileStateCache;
+        AzToolsFramework::UuidUtilComponent m_uuidUtil;
         AzToolsFramework::MetadataManager m_metadataManager;
         AssetProcessor::UuidManager m_uuidManager;
         MockPathConversion m_pathConversion;

+ 23 - 0
Code/Tools/AssetProcessor/native/tests/assetmanager/AssetManagerTestingBase.cpp

@@ -18,6 +18,7 @@
 #include <native/utilities/AssetUtilEBusHelper.h>
 #include <unittests/UnitTestUtils.h>
 #include <AzCore/Utils/Utils.h>
+#include <AzCore/Serialization/Json/JsonSystemComponent.h>
 
 namespace UnitTests
 {
@@ -98,7 +99,19 @@ namespace UnitTests
         m_builderInfoHandler.BusConnect();
 
         // Set up the Job Context, required for the PathDependencyManager to do its work
+        // Set up serialize and json context
         m_serializeContext = AZStd::make_unique<AZ::SerializeContext>();
+        m_jsonRegistrationContext = AZStd::make_unique<AZ::JsonRegistrationContext>();
+        m_componentApplication = AZStd::make_unique<testing::NiceMock<MockComponentApplication>>();
+
+        using namespace testing;
+
+        ON_CALL(*m_componentApplication.get(), GetSerializeContext()).WillByDefault(Return(m_serializeContext.get()));
+        ON_CALL(*m_componentApplication.get(), GetJsonRegistrationContext()).WillByDefault(Return(m_jsonRegistrationContext.get()));
+        ON_CALL(*m_componentApplication.get(), AddEntity(_)).WillByDefault(Return(true));
+
+        AZ::JsonSystemComponent::Reflect(m_jsonRegistrationContext.get());
+
         m_descriptor = AZ::JobManagerComponent::CreateDescriptor();
         m_descriptor->Reflect(m_serializeContext.get());
 
@@ -107,6 +120,9 @@ namespace UnitTests
         m_jobManagerEntity->Init();
         m_jobManagerEntity->Activate();
 
+        AzToolsFramework::MetadataManager::Reflect(m_serializeContext.get());
+        AzToolsFramework::UuidUtilComponent::Reflect(m_serializeContext.get());
+
         // Set up a mock disk space responder, required for RCController to process a job
         m_diskSpaceResponder = AZStd::make_unique<::testing::NiceMock<MockDiskSpaceResponder>>();
 
@@ -157,6 +173,13 @@ namespace UnitTests
 
         AZ::SettingsRegistry::Unregister(m_settingsRegistry.get());
 
+        m_jsonRegistrationContext->EnableRemoveReflection();
+        AZ::JsonSystemComponent::Reflect(m_jsonRegistrationContext.get());
+        m_jsonRegistrationContext->DisableRemoveReflection();
+
+        m_jsonRegistrationContext.reset();
+        m_serializeContext.reset();
+
         if (m_localFileIo)
         {
             delete m_localFileIo;

+ 6 - 0
Code/Tools/AssetProcessor/native/tests/assetmanager/AssetManagerTestingBase.h

@@ -22,6 +22,7 @@
 #include <QCoreApplication>
 #include <AzToolsFramework/Metadata/MetadataManager.h>
 #include <utilities/UuidManager.h>
+#include <AzCore/Serialization/Json/RegistrationContext.h>
 
 namespace AZ::IO
 {
@@ -113,6 +114,8 @@ namespace UnitTests
         int m_argc = 0;
         char** m_argv{};
 
+        TraceBusErrorChecker m_errorChecker;
+
         AssetProcessor::FileStatePassthrough m_fileStateCache;
 
         AZStd::unique_ptr<QCoreApplication> m_qApp;
@@ -125,10 +128,13 @@ namespace UnitTests
         AzToolsFramework::AssetDatabase::ScanFolderDatabaseEntry m_scanfolder;
         MockMultiBuilderInfoHandler m_builderInfoHandler;
         AZ::IO::LocalFileIO* m_localFileIo;
+        AzToolsFramework::UuidUtilComponent m_uuidUtil;
         AzToolsFramework::MetadataManager m_metadataManager;
         AssetProcessor::UuidManager m_uuidManager;
 
         AZStd::unique_ptr<AZ::SerializeContext> m_serializeContext;
+        AZStd::unique_ptr<AZ::JsonRegistrationContext> m_jsonRegistrationContext;
+        AZStd::unique_ptr<testing::NiceMock<MockComponentApplication>> m_componentApplication;
         AZ::Entity* m_jobManagerEntity{};
         AZ::ComponentDescriptor* m_descriptor{};
 

+ 1 - 0
Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.h

@@ -175,6 +175,7 @@ protected:
     AssetProcessor::MockAssetDatabaseRequestsHandler m_databaseLocationListener;
     AZStd::unique_ptr<AssetProcessor::PlatformConfiguration> m_config;
     ::UnitTests::MockVirtualFileIO m_virtualFileIO;
+    AzToolsFramework::UuidUtilComponent m_uuidUtil;
     AzToolsFramework::MetadataManager m_metadataManager;
     AssetProcessor::UuidManager m_uuidManager;
     QString m_gameName;

+ 2 - 38
Code/Tools/AssetProcessor/native/tests/assetmanager/IntermediateAssetTests.cpp

@@ -17,63 +17,27 @@ namespace UnitTests
     void IntermediateAssetTests::SetUp()
     {
         AssetManagerTestingBase::SetUp();
-
-        AZ::Debug::TraceMessageBus::Handler::BusConnect();
     }
 
     void IntermediateAssetTests::TearDown()
     {
-        AZ::Debug::TraceMessageBus::Handler::BusDisconnect();
-
         AssetManagerTestingBase::TearDown();
     }
 
-    // Since AP will redirect any failures to a job log file, we won't see them output by default
-    // This will cause any error/assert to be printed out and mark the test as failed
-    bool IntermediateAssetTests::OnPreAssert(const char* fileName, int line, const char* /*func*/, const char* message)
-    {
-        if (m_expectedErrors > 0)
-        {
-            --m_expectedErrors;
-            return false;
-        }
-
-        UnitTest::ColoredPrintf(UnitTest::COLOR_RED, "Assert: %s\n", message);
-
-        ADD_FAILURE_AT(fileName, line);
-
-        return false;
-    }
-
-    bool IntermediateAssetTests::OnPreError(const char* /*window*/, const char* fileName, int line, const char* /*func*/, const char* message)
-    {
-        if (m_expectedErrors > 0)
-        {
-            --m_expectedErrors;
-            return false;
-        }
-
-        UnitTest::ColoredPrintf(UnitTest::COLOR_RED, "Error: %s\n", message);
-
-        ADD_FAILURE_AT(fileName, line);
-
-        return false;
-    }
-
     void IntermediateAssetTests::IncorrectBuilderConfigurationTest(bool commonPlatform, AssetBuilderSDK::ProductOutputFlags flags)
     {
         using namespace AssetBuilderSDK;
 
         CreateBuilder("stage1", "*.stage1", "stage2", commonPlatform, flags);
 
-        m_expectedErrors = 1;
-
         QMetaObject::invokeMethod(
             m_assetProcessorManager.get(), "AssessAddedFile", Qt::QueuedConnection, Q_ARG(QString, m_testFilePath.c_str()));
         QCoreApplication::processEvents();
 
         RunFile(1);
+        m_errorChecker.Begin();
         ProcessJob(*m_rc, m_jobDetailsList[0]);
+        m_errorChecker.End(1);
 
         ASSERT_TRUE(m_fileFailed);
     }

+ 0 - 6
Code/Tools/AssetProcessor/native/tests/assetmanager/IntermediateAssetTests.h

@@ -14,19 +14,13 @@ namespace UnitTests
 {
     class IntermediateAssetTests
         : public AssetManagerTestingBase
-        , protected AZ::Debug::TraceMessageBus::Handler
     {
     public:
         void SetUp() override;
         void TearDown() override;
 
     protected:
-        bool OnPreAssert(const char*, int, const char*, const char* message) override;
-        bool OnPreError(const char*, const char*, int, const char*, const char* message) override;
-
         void DeleteIntermediateTest(const char* fileToDelete);
         void IncorrectBuilderConfigurationTest(bool commonPlatform, AssetBuilderSDK::ProductOutputFlags flags);
-
-        int m_expectedErrors = 0;
     };
 } // namespace UnitTests

+ 4 - 3
Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp

@@ -552,12 +552,13 @@ TEST_F(PlatformConfigurationUnitTests, Test_MetaFileTypes_AssetImporterExtension
     m_errorAbsorber->Clear();
     ASSERT_FALSE(config.InitializeFromConfigFiles(configRoot->c_str(), testExeFolder->c_str(), projectPath.c_str(), false, false));
     ASSERT_GT(m_errorAbsorber->m_numErrorsAbsorbed, 0);
-    ASSERT_TRUE(config.MetaDataFileTypesCount() == 2);
+    ASSERT_TRUE(config.MetaDataFileTypesCount() == 3);
 
     QStringList entriesToTest{ "aaa", "bbb" };
     for (int idx = 0; idx < entriesToTest.size(); idx++)
     {
-        ASSERT_EQ(config.GetMetaDataFileTypeAt(idx).first, QString("%1.assetinfo").arg(entriesToTest[idx]));
-        ASSERT_EQ(config.GetMetaDataFileTypeAt(idx).second, QString("%1").arg(entriesToTest[idx]));
+        // + 1 skip .meta files
+        ASSERT_EQ(config.GetMetaDataFileTypeAt(idx + 1).first, QString("%1.assetinfo").arg(entriesToTest[idx]));
+        ASSERT_EQ(config.GetMetaDataFileTypeAt(idx + 1).second, QString("%1").arg(entriesToTest[idx]));
     }
 }

+ 1 - 0
Code/Tools/AssetProcessor/native/tests/resourcecompiler/RCJobTest.cpp

@@ -76,6 +76,7 @@ namespace UnitTests
             QDir tempDirPath;
             AZStd::string m_absolutePathToTempInputFolder;
             AZStd::string m_absolutePathToTempOutputFolder;
+            AzToolsFramework::UuidUtilComponent m_uuidUtil;
             NiceMock<MockDiskSpaceResponder> m_diskSpaceResponder;
             IgnoreNotifyTracker m_notifyTracker;
         };

+ 1 - 0
Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.h

@@ -43,6 +43,7 @@ namespace AssetProcessor
         AZStd::unique_ptr<UnitTestUtils::ScopedDir> m_changeDir;
         FileWatcher m_fileWatcher;
         ::UnitTests::MockVirtualFileIO m_virtualFileIO;
+        AzToolsFramework::UuidUtilComponent m_uuidUtil;
         AzToolsFramework::MetadataManager m_metadataManager;
         AssetProcessor::UuidManager m_uuidManager;
 

+ 2 - 1
Code/Tools/AssetProcessor/native/utilities/PlatformConfiguration.cpp

@@ -20,6 +20,7 @@
 #include <AzToolsFramework/Asset/AssetUtils.h>
 
 #include <AzCore/Serialization/SerializeContext.h>
+#include <AzToolsFramework/Metadata/MetadataManager.h>
 
 
 namespace AssetProcessor
@@ -1306,7 +1307,7 @@ namespace AssetProcessor
             visitor.m_metaDataTypes.push_back({ AZStd::string::format("%s.assetinfo", entry.c_str()), entry });
         }
 
-        AddMetaDataType("meta", "");
+        AddMetaDataType(AzToolsFramework::MetadataManager::MetadataFileExtensionNoDot, "");
 
         for (const auto& metaDataType : visitor.m_metaDataTypes)
         {