// Copyright 2017 the V8 project 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 "src/utils/allocation.h" #include "test/unittests/test-utils.h" #if V8_OS_POSIX #include <setjmp.h> #include <signal.h> #include <unistd.h> #endif // V8_OS_POSIX #include "testing/gtest/include/gtest/gtest.h" namespace v8 { namespace internal { // TODO(eholk): Add a windows version of permissions tests. #if V8_OS_POSIX namespace { // These tests make sure the routines to allocate memory do so with the correct // permissions. // // Unfortunately, there is no API to find the protection of a memory address, // so instead we test permissions by installing a signal handler, probing a // memory location and recovering from the fault. // // We don't test the execution permission because to do so we'd have to // dynamically generate code and test if we can execute it. class MemoryAllocationPermissionsTest : public TestWithPlatform { … }; sigjmp_buf MemoryAllocationPermissionsTest::continuation_; } // namespace // TODO(almuthanna): This test was skipped because it causes a crash when it is // ran on Fuchsia. This issue should be solved later on // Ticket: https://crbug.com/1028617 #if !defined(V8_TARGET_OS_FUCHSIA) TEST_F(MemoryAllocationPermissionsTest, DoTest) { … } #endif #endif // V8_OS_POSIX // Basic tests of allocation. class AllocationTest : public TestWithPlatform { … }; TEST_F(AllocationTest, AllocateAndFree) { … } TEST_F(AllocationTest, ReserveMemory) { … } } // namespace internal } // namespace v8