From c4bd5773793b4e6fdbe694ef306bf8512c1af94d Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 23 Nov 2016 15:57:52 -0800 Subject: [PATCH] On host targets, add dependencies on host unit test executables. (#3269) --- BUILD.gn | 9 +++++++++ sky/BUILD.gn | 1 - sky/engine/wtf/BUILD.gn | 6 +++--- synchronization/BUILD.gn | 11 +++++++++++ synchronization/semaphore_unittest.cc | 27 +++++++++++++++++++++++++++ testing/BUILD.gn | 13 +++++++++++++ testing/run_all_unittests.cc | 10 ++++++++++ 7 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 synchronization/semaphore_unittest.cc create mode 100644 testing/BUILD.gn create mode 100644 testing/run_all_unittests.cc diff --git a/BUILD.gn b/BUILD.gn index 14ab25d01..fd91aa616 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -17,6 +17,15 @@ group("flutter") { "//flutter/snapshotter($host_toolchain)", ] } + + # If on the host, compile all unittests targets. + if (current_toolchain == host_toolchain) { + deps += [ + "//flutter/sky/engine/wtf:wtf_unittests", + "//flutter/synchronization:synchronization_unittests", + "//lib/ftl:ftl_unittests", + ] + } } if (!is_fuchsia) { diff --git a/sky/BUILD.gn b/sky/BUILD.gn index 545ea64fa..c57fa16df 100644 --- a/sky/BUILD.gn +++ b/sky/BUILD.gn @@ -8,7 +8,6 @@ group("sky") { testonly = true deps = [ - "//flutter/sky/engine/wtf:unittests($host_toolchain)", "//flutter/sky/packages", ] diff --git a/sky/engine/wtf/BUILD.gn b/sky/engine/wtf/BUILD.gn index 1c3dbbef0..a399a1bb3 100644 --- a/sky/engine/wtf/BUILD.gn +++ b/sky/engine/wtf/BUILD.gn @@ -210,9 +210,7 @@ source_set("wtf") { } } -executable("unittests") { - output_name = "flutter_wtf_unittests" - +executable("wtf_unittests") { testonly = true sources = [ @@ -252,6 +250,8 @@ executable("unittests") { deps = [ ":wtf", + # Does not use //flutter/testing because it needs and provides its own main + # function in RunAllTests.cpp. "//third_party/gtest", ] } diff --git a/synchronization/BUILD.gn b/synchronization/BUILD.gn index 6a8eae7b8..f75e6996b 100644 --- a/synchronization/BUILD.gn +++ b/synchronization/BUILD.gn @@ -16,3 +16,14 @@ source_set("synchronization") { "//lib/ftl", ] } + +executable("synchronization_unittests") { + sources = [ + "semaphore_unittest.cc", + ] + + deps = [ + ":synchronization", + "//flutter/testing", + ] +} diff --git a/synchronization/semaphore_unittest.cc b/synchronization/semaphore_unittest.cc new file mode 100644 index 000000000..42b898d53 --- /dev/null +++ b/synchronization/semaphore_unittest.cc @@ -0,0 +1,27 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include + +#include "flutter/synchronization/semaphore.h" +#include "gtest/gtest.h" + +TEST(SemaphoreTest, SimpleValidity) { + flutter::Semaphore sem(100); + ASSERT_TRUE(sem.IsValid()); +} + +TEST(SemaphoreTest, WaitOnZero) { + flutter::Semaphore sem(0); + ASSERT_FALSE(sem.TryWait()); +} + +TEST(SemaphoreTest, WaitOnZeroSignalThenWait) { + flutter::Semaphore sem(0); + ASSERT_FALSE(sem.TryWait()); + std::thread thread([&sem]() { sem.Signal(); }); + thread.join(); + ASSERT_TRUE(sem.TryWait()); + ASSERT_FALSE(sem.TryWait()); +} diff --git a/testing/BUILD.gn b/testing/BUILD.gn new file mode 100644 index 000000000..03310b618 --- /dev/null +++ b/testing/BUILD.gn @@ -0,0 +1,13 @@ +# Copyright 2016 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("testing") { + sources = [ + "//flutter/testing/run_all_unittests.cc", + ] + + public_deps = [ + "//third_party/gtest", + ] +} diff --git a/testing/run_all_unittests.cc b/testing/run_all_unittests.cc new file mode 100644 index 000000000..d300edf02 --- /dev/null +++ b/testing/run_all_unittests.cc @@ -0,0 +1,10 @@ +// Copyright 2016 The Fuchsia Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "gtest/gtest.h" + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +}