From 6fbf2e7123606e58e4cf0a10ce021117154ea828 Mon Sep 17 00:00:00 2001 From: Chris Bracken Date: Mon, 30 Oct 2023 16:47:18 -0700 Subject: [PATCH] [macOS] Wrap external texture tests in autorelease pool (flutter/engine#47492) Wraps all FlutterExternalTexture tests in an autorelease pool to ensure resources are cleaned up between tests. Prior to this change, running these tests via: ../out/host_debug_unopt_arm64/flutter_desktop_darwin_unittests \ --gtest_filter='FlutterEmbedderExternalTextureUnittests.*' Resuling in a segfault: [ERROR:flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalSkia.mm(35)] Could not create Metal command queue. zsh: segmentation fault ../out/host_debug_unopt_arm64/flutter_desktop_darwin_unittests Issue: https://github.com/flutter/flutter/issues/104789 Issue: https://github.com/flutter/flutter/issues/127441 Issue: https://github.com/flutter/flutter/issues/124840 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style --- .../FlutterEmbedderExternalTextureTest.mm | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEmbedderExternalTextureTest.mm b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEmbedderExternalTextureTest.mm index ba3565bbe4c..6554a03576d 100644 --- a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEmbedderExternalTextureTest.mm +++ b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEmbedderExternalTextureTest.mm @@ -14,7 +14,8 @@ #import "flutter/shell/platform/darwin/macos/framework/Source/FlutterExternalTexture.h" #include "flutter/shell/platform/embedder/embedder.h" #include "flutter/shell/platform/embedder/embedder_external_texture_metal.h" -#import "flutter/testing/testing.h" +#include "flutter/testing/autoreleasepool_test.h" +#include "flutter/testing/testing.h" #include "third_party/googletest/googletest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkImage.h" #include "third_party/skia/include/core/SkSamplingOptions.h" @@ -66,7 +67,17 @@ namespace flutter::testing { -TEST(FlutterEmbedderExternalTextureUnittests, TestTextureResolution) { +// AutoreleasePoolTest subclass that exists simply to provide more specific naming. +class FlutterEmbedderExternalTextureTest : public AutoreleasePoolTest { + public: + FlutterEmbedderExternalTextureTest() = default; + ~FlutterEmbedderExternalTextureTest() = default; + + private: + FML_DISALLOW_COPY_AND_ASSIGN(FlutterEmbedderExternalTextureTest); +}; + +TEST_F(FlutterEmbedderExternalTextureTest, TestTextureResolution) { // Constants. const size_t width = 100; const size_t height = 100; @@ -125,7 +136,7 @@ TEST(FlutterEmbedderExternalTextureUnittests, TestTextureResolution) { gpuSurface->makeImageSnapshot(); } -TEST(FlutterEmbedderExternalTextureUnittests, TestPopulateExternalTexture) { +TEST_F(FlutterEmbedderExternalTextureTest, TestPopulateExternalTexture) { // Constants. const size_t width = 100; const size_t height = 100; @@ -178,7 +189,7 @@ TEST(FlutterEmbedderExternalTextureUnittests, TestPopulateExternalTexture) { gpuSurface->makeImageSnapshot(); } -TEST(FlutterEmbedderExternalTextureUnittests, TestPopulateExternalTextureYUVA) { +TEST_F(FlutterEmbedderExternalTextureTest, TestPopulateExternalTextureYUVA) { // Constants. const size_t width = 100; const size_t height = 100; @@ -233,7 +244,7 @@ TEST(FlutterEmbedderExternalTextureUnittests, TestPopulateExternalTextureYUVA) { gpuSurface->makeImageSnapshot(); } -TEST(FlutterEmbedderExternalTextureUnittests, TestPopulateExternalTextureYUVA2) { +TEST_F(FlutterEmbedderExternalTextureTest, TestPopulateExternalTextureYUVA2) { // Constants. const size_t width = 100; const size_t height = 100;