From 4d359b5eef0a035453d844dbc9bd2502ad365063 Mon Sep 17 00:00:00 2001 From: Daria Hinz Date: Fri, 20 Jan 2023 10:24:28 +0100 Subject: [PATCH] fix: Support multiple option settings in ocloc If ocloc is given -options several times, the variable is overwritten. This change allows the user to add additional options multiple times. Signed-off-by: Daria Hinz --- .../offline_compiler_tests.cpp | 22 +++++++++++++++++++ .../source/offline_compiler.cpp | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp index 23326c15d6..c4bbddad69 100644 --- a/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp +++ b/opencl/test/unit_test/offline_compiler/offline_compiler_tests.cpp @@ -2888,6 +2888,28 @@ TEST(OfflineCompilerTest, givenInternalOptionsWhenCmdLineParsedThenOptionsAreApp EXPECT_TRUE(hasSubstr(internalOptions, std::string("myInternalOptions"))); } +TEST(OfflineCompilerTest, givenOptionsWhenCmdLineParsedThenOptionsAreAppendedToOptionsString) { + std::vector argv = { + "ocloc", + "-options", + "options1", + "-options", + "options2"}; + + auto mockOfflineCompiler = std::unique_ptr(new MockOfflineCompiler()); + ASSERT_NE(nullptr, mockOfflineCompiler); + + testing::internal::CaptureStdout(); + mockOfflineCompiler->parseCommandLine(argv.size(), argv); + std::string output = testing::internal::GetCapturedStdout(); + + EXPECT_NE(0u, output.size()); + + std::string options = mockOfflineCompiler->options; + EXPECT_TRUE(hasSubstr(options, std::string("options1"))); + EXPECT_TRUE(hasSubstr(options, std::string("options2"))); +} + TEST(OfflineCompilerTest, givenInputOptionsAndInternalOptionsFilesWhenOfflineCompilerIsInitializedThenCorrectOptionsAreSetAndRemainAfterBuild) { auto mockOfflineCompiler = std::unique_ptr(new MockOfflineCompiler()); ASSERT_NE(nullptr, mockOfflineCompiler); diff --git a/shared/offline_compiler/source/offline_compiler.cpp b/shared/offline_compiler/source/offline_compiler.cpp index 1a0bdbcc1f..a1e5e51e03 100644 --- a/shared/offline_compiler/source/offline_compiler.cpp +++ b/shared/offline_compiler/source/offline_compiler.cpp @@ -698,7 +698,7 @@ int OfflineCompiler::parseCommandLine(size_t numArgs, const std::vector