Files
compute-runtime/shared/test/common/mocks/mock_igc_path.cpp
Chodor, Jaroslaw 22fe217567 refactor: cleanup around IGC library name mocking logic
This patchset improves mocking of IGC library name and adds
safety mechanism to ensure that global IGC library name gets
restored before test finishes.

Related-To: NEO-12747

Signed-off-by: Chodor, Jaroslaw <jaroslaw.chodor@intel.com>
2024-11-15 18:32:59 +01:00

42 lines
814 B
C++

/*
* Copyright (C) 2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/utilities/stackvec.h"
#include "shared/test/common/mocks/mock_compilers.h"
#include <memory>
namespace Os {
extern const char *igcDllName;
} // namespace Os
namespace NEO {
StackVec<const char *, 32> prevIgcDllName;
bool popIgcDllName() {
if (prevIgcDllName.empty()) {
return false;
}
Os::igcDllName = *prevIgcDllName.rbegin();
prevIgcDllName.pop_back();
return true;
}
PopIgcDllNameGuard::~PopIgcDllNameGuard() {
popIgcDllName();
}
[[nodiscard]] std::unique_ptr<PopIgcDllNameGuard> pushIgcDllName(const char *name) {
prevIgcDllName.push_back(Os::igcDllName);
Os::igcDllName = name;
return std::make_unique<PopIgcDllNameGuard>();
}
} // namespace NEO