From 5627b4cdc5e6609d62051ea5ab653dc5eb59b9f4 Mon Sep 17 00:00:00 2001 From: Volodymyr Kryachko Date: Mon, 18 Nov 2024 11:03:39 +0200 Subject: [PATCH] Add a crashy program for SetString test. b/358663298 Change-Id: If8931dac92837bc7295006e7c3e57fe8f91dc627 --- starboard/extension/BUILD.gn | 10 +++++ starboard/extension/setstring_test.cc | 63 +++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 starboard/extension/setstring_test.cc diff --git a/starboard/extension/BUILD.gn b/starboard/extension/BUILD.gn index 810ffdb88772..422a8ded1daf 100644 --- a/starboard/extension/BUILD.gn +++ b/starboard/extension/BUILD.gn @@ -29,3 +29,13 @@ target(gtest_target_type, "extension_test") { deps += cobalt_platform_dependencies } } + +target(gtest_target_type, "setstring_test") { + testonly = true + has_pedantic_warnings = true + sources = [ "setstring_test.cc" ] + deps = [ "//testing/gtest" ] + if (sb_is_modular && current_toolchain == cobalt_toolchain) { + deps += cobalt_platform_dependencies + } +} diff --git a/starboard/extension/setstring_test.cc b/starboard/extension/setstring_test.cc new file mode 100644 index 000000000000..0eaecc838f0b --- /dev/null +++ b/starboard/extension/setstring_test.cc @@ -0,0 +1,63 @@ +// Copyright 2024 The Cobalt Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "starboard/client_porting/wrap_main/wrap_main.h" +#include "starboard/event.h" +#include "starboard/extension/crash_handler.h" +#include "starboard/system.h" +#include "testing/gtest/include/gtest/gtest.h" + +const char* long_string = + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong" + "String"; + +TEST(ExtensionTest, SetString) { + typedef CobaltExtensionCrashHandlerApi ExtensionApi; + const char* kExtensionName = kCobaltExtensionCrashHandlerName; + + const ExtensionApi* extension_api = + static_cast(SbSystemGetExtension(kExtensionName)); + if (!extension_api) { + return; + } + + extension_api->SetString("Annotation1", long_string); + extension_api->SetString("Annotation2", long_string); + extension_api->SetString("Annotation3", long_string); + extension_api->SetString("Annotation4", long_string); + + SbSystemBreakIntoDebugger(); +} + +namespace { +int InitAndRunAllTests(int argc, char** argv) { + ::testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} +} // namespace + +// When we are building Evergreen we need to export SbEventHandle so that the +// ELF loader can find and invoke it. +#if SB_IS(MODULAR) +SB_EXPORT +#endif // SB_IS(MODULAR) +STARBOARD_WRAP_SIMPLE_MAIN(InitAndRunAllTests);