From 0d2e8b048076aacc23e22010c0e6be59a5279613 Mon Sep 17 00:00:00 2001 From: Matej Knopp Date: Sun, 22 Aug 2021 20:38:21 +0200 Subject: [PATCH 1/4] Update static closure on each invocation --- shell/platform/embedder/test_utils/proc_table_replacement.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/platform/embedder/test_utils/proc_table_replacement.h b/shell/platform/embedder/test_utils/proc_table_replacement.h index 2d64f374cea6d..bce390660224e 100644 --- a/shell/platform/embedder/test_utils/proc_table_replacement.h +++ b/shell/platform/embedder/test_utils/proc_table_replacement.h @@ -19,7 +19,8 @@ ([&]() { \ static std::function< \ std::remove_pointer_t> \ - closure = mock_impl; \ + closure; \ + closure = mock_impl; \ static auto non_capturing = [](auto... args) { return closure(args...); }; \ return non_capturing; \ })() From db5dabbbd97ae1e19fde896f97b6555b63bcc26e Mon Sep 17 00:00:00 2001 From: Matej Knopp Date: Sun, 22 Aug 2021 20:44:11 +0200 Subject: [PATCH 2/4] enable test repeat --- testing/run_tests.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/testing/run_tests.py b/testing/run_tests.py index 18343de0403b2..4f0b109de488b 100755 --- a/testing/run_tests.py +++ b/testing/run_tests.py @@ -167,11 +167,10 @@ def RunCCTests(build_dir, filter, coverage, capture_core_dump): resource.setrlimit(resource.RLIMIT_CORE, (resource.RLIM_INFINITY, resource.RLIM_INFINITY)) # Not all of the engine unit tests are designed to be run more than once. - non_repeatable_shuffle_flags = [ - "--gtest_shuffle", - ] - shuffle_flags = non_repeatable_shuffle_flags + [ + + shuffle_flags = [ "--gtest_repeat=2", + "--gtest_shuffle", ] RunEngineExecutable(build_dir, 'client_wrapper_glfw_unittests', filter, shuffle_flags, coverage=coverage) @@ -187,7 +186,7 @@ def RunCCTests(build_dir, filter, coverage, capture_core_dump): RunEngineExecutable(build_dir, 'embedder_unittests', filter, shuffle_flags, coverage=coverage) RunEngineExecutable(build_dir, 'embedder_proctable_unittests', filter, shuffle_flags, coverage=coverage) else: - RunEngineExecutable(build_dir, 'flutter_windows_unittests', filter, non_repeatable_shuffle_flags, coverage=coverage) + RunEngineExecutable(build_dir, 'flutter_windows_unittests', filter, shuffle_flags, coverage=coverage) RunEngineExecutable(build_dir, 'client_wrapper_windows_unittests', filter, shuffle_flags, coverage=coverage) @@ -225,7 +224,7 @@ def RunCCTests(build_dir, filter, coverage, capture_core_dump): # These unit-tests are Objective-C and can only run on Darwin. if IsMac(): RunEngineExecutable(build_dir, 'flutter_channels_unittests', filter, shuffle_flags, coverage=coverage) - RunEngineExecutable(build_dir, 'flutter_desktop_darwin_unittests', filter, non_repeatable_shuffle_flags, coverage=coverage) + RunEngineExecutable(build_dir, 'flutter_desktop_darwin_unittests', filter, shuffle_flags, coverage=coverage) # https://github.com/flutter/flutter/issues/36296 if IsLinux(): @@ -233,8 +232,8 @@ def RunCCTests(build_dir, filter, coverage, capture_core_dump): RunEngineExecutable(build_dir, 'txt_unittests', filter, icu_flags + shuffle_flags, coverage=coverage) if IsLinux(): - RunEngineExecutable(build_dir, 'flutter_linux_unittests', filter, non_repeatable_shuffle_flags, coverage=coverage) - RunEngineExecutable(build_dir, 'flutter_glfw_unittests', filter, non_repeatable_shuffle_flags, coverage=coverage) + RunEngineExecutable(build_dir, 'flutter_linux_unittests', filter, shuffle_flags, coverage=coverage) + RunEngineExecutable(build_dir, 'flutter_glfw_unittests', filter, shuffle_flags, coverage=coverage) def RunEngineBenchmarks(build_dir, filter): From 3743525355b61f62f0138804abbb89cd10d216aa Mon Sep 17 00:00:00 2001 From: Matej Knopp Date: Sun, 22 Aug 2021 21:29:35 +0200 Subject: [PATCH 3/4] Update comment --- shell/platform/embedder/test_utils/proc_table_replacement.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/shell/platform/embedder/test_utils/proc_table_replacement.h b/shell/platform/embedder/test_utils/proc_table_replacement.h index bce390660224e..711557ab8c4f1 100644 --- a/shell/platform/embedder/test_utils/proc_table_replacement.h +++ b/shell/platform/embedder/test_utils/proc_table_replacement.h @@ -8,9 +8,7 @@ // FlutterEngineProcTable entries (by using statics) to facilitate mocking in // tests of code built on top of the embedder API. // -// This should *ONLY* be used in unit tests as it is leaky by design. Because it -// uses statics for the lambdas, tests using this macro are generally not safe -// to run multiple times (e.g., using gtest_repeat). +// This should *ONLY* be used in unit tests as it is leaky by design. // // |proc| should be the name of an entry in FlutterEngineProcTable, such as // "Initialize". |mock_impl| should be a lamba that replaces its implementation, From c760bf319d2032ae48e515ebfb6b979ddfc179ef Mon Sep 17 00:00:00 2001 From: Matej Knopp Date: Sun, 22 Aug 2021 22:31:14 +0200 Subject: [PATCH 4/4] Remove obsolete comment --- testing/run_tests.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/testing/run_tests.py b/testing/run_tests.py index 4f0b109de488b..414812a70c9bf 100755 --- a/testing/run_tests.py +++ b/testing/run_tests.py @@ -166,8 +166,6 @@ def RunCCTests(build_dir, filter, coverage, capture_core_dump): import resource resource.setrlimit(resource.RLIMIT_CORE, (resource.RLIM_INFINITY, resource.RLIM_INFINITY)) - # Not all of the engine unit tests are designed to be run more than once. - shuffle_flags = [ "--gtest_repeat=2", "--gtest_shuffle",