diff options
Diffstat (limited to 'tools/slang-test')
| -rw-r--r-- | tools/slang-test/test-reporter.cpp | 11 | ||||
| -rw-r--r-- | tools/slang-test/test-reporter.h | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/tools/slang-test/test-reporter.cpp b/tools/slang-test/test-reporter.cpp index ee8421e81..b2d0d1a54 100644 --- a/tools/slang-test/test-reporter.cpp +++ b/tools/slang-test/test-reporter.cpp @@ -140,18 +140,25 @@ void TestReporter::addResult(TestResult result) { assert(m_inTest); + std::lock_guard<std::recursive_mutex> lock(m_mutex); + m_currentInfo.testResult = combine(m_currentInfo.testResult, result); m_numCurrentResults++; } void TestReporter::addExecutionTime(double time) { + std::lock_guard<std::recursive_mutex> lock(m_mutex); + m_currentInfo.executionTime = time; } void TestReporter::addResultWithLocation(TestResult result, const char* testText, const char* file, int line) { assert(m_inTest); + + std::lock_guard<std::recursive_mutex> lock(m_mutex); + m_numCurrentResults++; m_currentInfo.testResult = combine(m_currentInfo.testResult, result); @@ -505,8 +512,8 @@ void TestReporter::addTest(const String& testName, TestResult testResult) void TestReporter::message(TestMessageType type, const String& message) { - static std::mutex mutex; - std::lock_guard<std::mutex> lock(mutex); + std::lock_guard<std::recursive_mutex> lock(m_mutex); + if (type == TestMessageType::Info) { if (m_isVerbose && canWriteStdError()) diff --git a/tools/slang-test/test-reporter.h b/tools/slang-test/test-reporter.h index b87c5368f..a90cd6653 100644 --- a/tools/slang-test/test-reporter.h +++ b/tools/slang-test/test-reporter.h @@ -9,6 +9,8 @@ #include "../../source/core/slang-dictionary.h" #include "tools/unit-test/slang-unit-test.h" +#include <mutex> + enum class TestOutputMode { Default = 0, ///< Default mode is to write test results to the console @@ -138,6 +140,8 @@ protected: bool m_inTest; + std::recursive_mutex m_mutex; + static TestReporter* s_reporter; }; |
