You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
5.5 KiB

/*
* Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <gtest/gtest.h>
#include "linkerconfig/apex.h"
#include "linkerconfig/baseconfig.h"
#include "linkerconfig/configwriter.h"
#include "linkerconfig/variables.h"
#include "testbase.h"
using android::linkerconfig::contents::Context;
using android::linkerconfig::modules::ApexInfo;
struct linkerconfig_default_backward_compatibility : ::testing::Test {
void SetUp() override {
MockVariables("Q");
ApexInfo vndk_apex;
vndk_apex.name = "com.android.vndk.vQ";
ctx.AddApexModule(vndk_apex);
}
Context ctx;
};
TEST_F(linkerconfig_default_backward_compatibility, common_system_section) {
auto config = android::linkerconfig::contents::CreateBaseConfiguration(ctx);
auto system_section = config.GetSection("system");
ASSERT_TRUE(system_section);
auto default_namespace = system_section->GetNamespace("default");
ASSERT_TRUE(default_namespace);
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/vendor/framework"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/vendor/app"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/vendor/priv-app"));
ASSERT_TRUE(
ContainsPermittedPath(default_namespace, "/system/vendor/framework"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/system/vendor/app"));
ASSERT_TRUE(
ContainsPermittedPath(default_namespace, "/system/vendor/priv-app"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/odm/framework"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/odm/app"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/odm/priv-app"));
auto sphal_namespace = system_section->GetNamespace("sphal");
ASSERT_TRUE(sphal_namespace);
ASSERT_TRUE(ContainsSearchPath(sphal_namespace, "/odm/${LIB}"));
ASSERT_TRUE(ContainsSearchPath(sphal_namespace, "/vendor/${LIB}"));
ASSERT_TRUE(ContainsSearchPath(sphal_namespace, "/vendor/${LIB}/hw"));
ASSERT_TRUE(ContainsPermittedPath(sphal_namespace, "/odm/${LIB}"));
ASSERT_TRUE(ContainsPermittedPath(sphal_namespace, "/vendor/${LIB}"));
ASSERT_TRUE(ContainsPermittedPath(sphal_namespace, "/system/vendor/${LIB}"));
auto rs_namespace = system_section->GetNamespace("rs");
ASSERT_TRUE(rs_namespace);
ASSERT_TRUE(ContainsSearchPath(rs_namespace, "/odm/${LIB}/vndk-sp"));
ASSERT_TRUE(ContainsSearchPath(rs_namespace, "/vendor/${LIB}/vndk-sp"));
ASSERT_TRUE(ContainsSearchPath(rs_namespace, "/odm/${LIB}"));
ASSERT_TRUE(ContainsSearchPath(rs_namespace, "/vendor/${LIB}"));
ASSERT_TRUE(ContainsPermittedPath(rs_namespace, "/odm/${LIB}"));
ASSERT_TRUE(ContainsPermittedPath(rs_namespace, "/vendor/${LIB}"));
ASSERT_TRUE(ContainsPermittedPath(rs_namespace, "/system/vendor/${LIB}"));
auto vndk_namespace = system_section->GetNamespace("vndk");
ASSERT_TRUE(vndk_namespace);
ASSERT_TRUE(ContainsSearchPath(vndk_namespace, "/odm/${LIB}/vndk-sp"));
ASSERT_TRUE(ContainsSearchPath(vndk_namespace, "/vendor/${LIB}/vndk-sp"));
ASSERT_TRUE(ContainsPermittedPath(vndk_namespace, "/odm/${LIB}/hw"));
ASSERT_TRUE(ContainsPermittedPath(vndk_namespace, "/odm/${LIB}/egl"));
ASSERT_TRUE(ContainsPermittedPath(vndk_namespace, "/vendor/${LIB}/hw"));
ASSERT_TRUE(ContainsPermittedPath(vndk_namespace, "/vendor/${LIB}/egl"));
}
TEST_F(linkerconfig_default_backward_compatibility, common_vendor_section) {
auto config = android::linkerconfig::contents::CreateBaseConfiguration(ctx);
auto vendor_section = config.GetSection("vendor");
ASSERT_TRUE(vendor_section);
auto default_namespace = vendor_section->GetNamespace("default");
ASSERT_TRUE(default_namespace);
ASSERT_TRUE(ContainsSearchPath(default_namespace, "/odm/${LIB}"));
ASSERT_TRUE(ContainsSearchPath(default_namespace, "/vendor/${LIB}"));
ASSERT_TRUE(ContainsSearchPath(default_namespace, "/vendor/${LIB}/hw"));
ASSERT_TRUE(ContainsSearchPath(default_namespace, "/vendor/${LIB}/egl"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/odm"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/vendor"));
ASSERT_TRUE(ContainsPermittedPath(default_namespace, "/system/vendor"));
auto vndk_namespace = vendor_section->GetNamespace("vndk");
ASSERT_TRUE(vndk_namespace);
ASSERT_TRUE(ContainsSearchPath(vndk_namespace, "/odm/${LIB}/vndk"));
ASSERT_TRUE(ContainsSearchPath(vndk_namespace, "/odm/${LIB}/vndk-sp"));
ASSERT_TRUE(ContainsSearchPath(vndk_namespace, "/vendor/${LIB}/vndk"));
ASSERT_TRUE(ContainsSearchPath(vndk_namespace, "/vendor/${LIB}/vndk-sp"));
}
TEST_F(linkerconfig_default_backward_compatibility,
common_unrestricted_section) {
auto config = android::linkerconfig::contents::CreateBaseConfiguration(ctx);
auto unrestricted_section = config.GetSection("unrestricted");
ASSERT_TRUE(unrestricted_section);
auto default_namespace = unrestricted_section->GetNamespace("default");
ASSERT_TRUE(default_namespace);
ASSERT_TRUE(ContainsSearchPath(default_namespace, "/odm/${LIB}"));
ASSERT_TRUE(ContainsSearchPath(default_namespace, "/vendor/${LIB}"));
}