From e4f199e46dd3fad0ba5b9dfa91ec1b631a21502f Mon Sep 17 00:00:00 2001 From: Jon Janzen Date: Thu, 13 Jun 2024 08:31:14 -0700 Subject: [PATCH] Enable tests to run in OSS Summary: X-link: https://github.com/pytorch/executorch/pull/3707 X-link: https://github.com/facebook/folly/pull/2212 Reviewed By: yfeldblum Differential Revision: D57679641 Pulled By: bigfootjon fbshipit-source-id: b683be8a0fa21fc7906faed5ce1d380d327654e7 --- shim/shims.bzl | 3 + shim/third-party/boost/BUCK | 6 +- shim/third-party/googletest/BUCK | 5 ++ shim/third-party/googletest/gtest_main.cpp | 66 ++++++++++++++++++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 shim/third-party/googletest/gtest_main.cpp diff --git a/shim/shims.bzl b/shim/shims.bzl index 5545918b5..242e9d174 100644 --- a/shim/shims.bzl +++ b/shim/shims.bzl @@ -198,11 +198,14 @@ def cpp_unittest( extract_helper_lib = None, compiler_specific_flags = None, default_strip_mode = None, + srcs = [], **kwargs): _unused = (supports_static_listing, allocator, owner, tags, emails, extract_helper_lib, compiler_specific_flags, default_strip_mode) # @unused + srcs = srcs + ["shim//third-party/googletest:gtest_main.cpp"] prelude.cxx_test( deps = _maybe_select_map(deps + external_deps_to_targets(external_deps), _fix_deps), visibility = visibility, + srcs = srcs, **kwargs ) diff --git a/shim/third-party/boost/BUCK b/shim/third-party/boost/BUCK index d9368397e..c2033cba3 100644 --- a/shim/third-party/boost/BUCK +++ b/shim/third-party/boost/BUCK @@ -13,7 +13,6 @@ oncall("open_source") boost_libs([ "container", "range", - "thread", "algorithm", "regex", "program_options", @@ -32,3 +31,8 @@ third_party_library( name = "boost_preprocessor", homebrew_package_name = "boost", ) + +third_party_library( + name = "boost_thread", + homebrew_package_name = "boost", +) diff --git a/shim/third-party/googletest/BUCK b/shim/third-party/googletest/BUCK index 1523ff0d0..dbd324957 100644 --- a/shim/third-party/googletest/BUCK +++ b/shim/third-party/googletest/BUCK @@ -5,6 +5,7 @@ # License, Version 2.0 found in the LICENSE-APACHE file in the root directory # of this source tree. +load("@shim//build_defs:export_files.bzl", "export_file") load("@shim//third-party:third_party.bzl", "third_party_library") oncall("open_source") @@ -20,3 +21,7 @@ alias( actual = ":gtest", visibility = ["PUBLIC"], ) + +export_file( + name = "gtest_main.cpp", +) diff --git a/shim/third-party/googletest/gtest_main.cpp b/shim/third-party/googletest/gtest_main.cpp new file mode 100644 index 000000000..8141caf4c --- /dev/null +++ b/shim/third-party/googletest/gtest_main.cpp @@ -0,0 +1,66 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include + +#include "gtest/gtest.h" + +#if defined(GTEST_OS_ESP8266) || defined(GTEST_OS_ESP32) || \ + (defined(GTEST_OS_NRF52) && defined(ARDUINO)) +// Arduino-like platforms: program entry points are setup/loop instead of main. + +#ifdef GTEST_OS_ESP8266 +extern "C" { +#endif + +void setup() { testing::InitGoogleTest(); } + +void loop() { RUN_ALL_TESTS(); } + +#ifdef GTEST_OS_ESP8266 +} +#endif + +#elif defined(GTEST_OS_QURT) +// QuRT: program entry point is main, but argc/argv are unusable. + +GTEST_API_ int main() { + printf("Running main() from %s\n", __FILE__); + testing::InitGoogleTest(); + return RUN_ALL_TESTS(); +} +#else +// Normal platforms: program entry point is main, argc/argv are initialized. + +GTEST_API_ int main(int argc, char **argv) { + printf("Running main() from %s\n", __FILE__); + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} +#endif