diff --git a/offline_compiler/offline_compiler.cpp b/offline_compiler/offline_compiler.cpp index 0a16e6cbbf..72abc9a443 100644 --- a/offline_compiler/offline_compiler.cpp +++ b/offline_compiler/offline_compiler.cpp @@ -505,9 +505,10 @@ int OfflineCompiler::parseCommandLine(size_t numArgs, const char *const *argv) { retVal = getHardwareInfo(deviceName.c_str()); if (retVal != CL_SUCCESS) { printf("Error: Cannot get HW Info for device %s.\n", deviceName.c_str()); + } else { + std::string extensionsList = getExtensionsList(*hwInfo); + internalOptions.append(convertEnabledExtensionsToCompilerInternalOptions(extensionsList.c_str())); } - std::string extensionsList = getExtensionsList(*hwInfo); - internalOptions.append(convertEnabledExtensionsToCompilerInternalOptions(extensionsList.c_str())); } } diff --git a/unit_tests/offline_compiler/offline_compiler_tests.cpp b/unit_tests/offline_compiler/offline_compiler_tests.cpp index 75ba5ed2bb..e0ffd04318 100644 --- a/unit_tests/offline_compiler/offline_compiler_tests.cpp +++ b/unit_tests/offline_compiler/offline_compiler_tests.cpp @@ -298,6 +298,22 @@ TEST_F(OfflineCompilerTests, NaughtyArgTest_NumArgs) { delete pOfflineCompiler; } +TEST_F(OfflineCompilerTests, GivenNonexistantDeviceWhenCompilingThenExitWithErrorMsg) { + auto argv = { + "cloc", + "-file", + "test_files/copybuffer.cl", + "-device", + "foobar"}; + + testing::internal::CaptureStdout(); + pOfflineCompiler = OfflineCompiler::create(argv.size(), argv.begin(), retVal); + std::string output = testing::internal::GetCapturedStdout(); + EXPECT_STREQ(output.c_str(), "Error: Cannot get HW Info for device foobar.\n"); + EXPECT_EQ(nullptr, pOfflineCompiler); + EXPECT_EQ(CL_INVALID_DEVICE, retVal); +} + TEST_F(OfflineCompilerTests, NaughtyKernelTest) { auto argv = { "cloc",