[go: nahoru, domu]

[fuchsia] Introduce ScopedDevZero.

FileUtilTest.ReadFileToStringWithUnknownFileSize opens /dev/zero and
reads from it. This new ScopedDevZero class allows us to move away from
relying on /dev/zero being provided by the runtime.

The attempt to make IPCSendFdsTest.DescriptorTest use ScopedDevZero
doesn't quite work, so it is disabled for now.

Bug: 1256502,1272424
Change-Id: Ib8cf077d40deb0063a21fe05c43ed6c7372ee198
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3256795
Auto-Submit: Greg Thompson <grt@chromium.org>
Reviewed-by: David Dorwin <ddorwin@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Fabrice de Gans <fdegans@chromium.org>
Commit-Queue: Greg Thompson <grt@chromium.org>
Cr-Commit-Position: refs/heads/main@{#947084}
diff --git a/ipc/ipc_send_fds_test.cc b/ipc/ipc_send_fds_test.cc
index a81ebaf..0523d9b 100644
--- a/ipc/ipc_send_fds_test.cc
+++ b/ipc/ipc_send_fds_test.cc
@@ -33,6 +33,9 @@
 
 #if BUILDFLAG(IS_MAC)
 #include "sandbox/mac/seatbelt.h"
+#elif BUILDFLAG(IS_FUCHSIA)
+#include "base/memory/scoped_refptr.h"
+#include "base/test/scoped_dev_zero_fuchsia.h"
 #endif
 
 namespace {
@@ -107,6 +110,12 @@
 
 class IPCSendFdsTest : public IPCChannelMojoTestBase {
  protected:
+  void SetUp() override {
+#if BUILDFLAG(IS_FUCHSIA)
+    ASSERT_TRUE(dev_zero_);
+#endif
+  }
+
   void RunServer() {
     // Set up IPC channel and start client.
     MyChannelDescriptorListener listener(-1);
@@ -134,9 +143,20 @@
     EXPECT_TRUE(WaitForClientShutdown());
     DestroyChannel();
   }
+
+ private:
+#if BUILDFLAG(IS_FUCHSIA)
+  scoped_refptr<base::ScopedDevZero> dev_zero_ = base::ScopedDevZero::Get();
+#endif
 };
 
-TEST_F(IPCSendFdsTest, DescriptorTest) {
+// Disabled on Fuchsia due to failures; see https://crbug.com/1272424.
+#if BUILDFLAG(IS_FUCHSIA)
+#define MAYBE_DescriptorTest DISABLED_DescriptorTest
+#else
+#define MAYBE_DescriptorTest DescriptorTest
+#endif
+TEST_F(IPCSendFdsTest, MAYBE_DescriptorTest) {
   Init("SendFdsClient");
   RunServer();
 }