COMPMID-417 Allow the tests to run even when assets are not present

Change-Id: Ief165b1d583a70cbe35aae93f05ddfe962196323
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/89503
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
diff --git a/tests/framework/Framework.cpp b/tests/framework/Framework.cpp
index 9a67cca..318f9b1 100644
--- a/tests/framework/Framework.cpp
+++ b/tests/framework/Framework.cpp
@@ -216,6 +216,16 @@
     return _stop_on_error;
 }
 
+void Framework::set_error_on_missing_assets(bool error_on_missing_assets)
+{
+    _error_on_missing_assets = error_on_missing_assets;
+}
+
+bool Framework::error_on_missing_assets() const
+{
+    return _error_on_missing_assets;
+}
+
 void Framework::run_test(const TestInfo &info, TestCaseFactory &test_factory)
 {
     if(test_factory.status() == TestCaseFactory::Status::DISABLED)
@@ -269,6 +279,33 @@
                 result.status = TestResult::Status::SUCCESS;
             }
         }
+        catch(const FileNotFound &error)
+        {
+            if(_error_on_missing_assets)
+            {
+                if(_log_level >= LogLevel::ERRORS && _printer != nullptr)
+                {
+                    TestError test_error(error.what(), LogLevel::ERRORS);
+                    _printer->print_error(test_error, is_expected_failure);
+                }
+
+                result.status = TestResult::Status::FAILED;
+
+                if(_throw_errors)
+                {
+                    throw;
+                }
+            }
+            else
+            {
+                if(_log_level >= LogLevel::DEBUG && _printer != nullptr)
+                {
+                    _printer->print_info(error.what());
+                }
+
+                result.status = TestResult::Status::NOT_RUN;
+            }
+        }
         catch(const TestError &error)
         {
             if(_log_level >= error.level() && _printer != nullptr)