From 84d0683a824fa02dbaa6d1b56a79223804b54e80 Mon Sep 17 00:00:00 2001
From: Elliott Hughes <enh@google.com>
Date: Thu, 21 Aug 2014 19:23:53 -0700
Subject: [PATCH] Fix unistd.getpid_caching_and_clone.

This test only works if you're root (strictly: if you have permission to
CLONE_NEWNS), so it's useful to us when we're doing ad hoc testing (since
that's usually done as root), but it's not useful as part of CTS or when
running the tests on the host.

Bug: 16705621
Bug: 17170200
Change-Id: Ia92c871b15f7e45fc174bb59bc95540fd00ae745
---
 tests/unistd_test.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 2a656574c..8195ea8f4 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -431,6 +431,10 @@ TEST(unistd, getpid_caching_and_clone) {
 
   void* child_stack[1024];
   int clone_result = clone(GetPidCachingCloneStartRoutine, &child_stack[1024], CLONE_NEWNS | SIGCHLD, NULL);
+  if (clone_result == -1 && errno == EPERM && getuid() != 0) {
+    GTEST_LOG_(INFO) << "This test only works if you have permission to CLONE_NEWNS; try running as root.\n";
+    return;
+  }
   ASSERT_NE(clone_result, -1);
 
   ASSERT_EQ(parent_pid, getpid());