Loading libcutils/fs_config.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,9 @@ static const struct fs_path_config android_dirs[] = { { 00755, AID_ROOT, AID_ROOT, 0, 0 }, // clang-format on }; #ifndef __ANDROID_VNDK__ auto __for_testing_only__android_dirs = android_dirs; #endif // Rules for files. // These rules are applied based on "first match", so they Loading Loading @@ -238,6 +241,9 @@ static const struct fs_path_config android_files[] = { { 00644, AID_ROOT, AID_ROOT, 0, 0 }, // clang-format on }; #ifndef __ANDROID_VNDK__ auto __for_testing_only__android_files = android_files; #endif static size_t strip(const char* path, size_t len, const char suffix[]) { if (len < strlen(suffix)) return len; Loading libcutils/tests/Android.bp +2 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,8 @@ cc_defaults { "test_str_parms.cpp", "android_get_control_socket_test.cpp", "android_get_control_file_test.cpp", "multiuser_test.cpp" "multiuser_test.cpp", "fs_config.cpp", ], }, Loading libcutils/tests/fs_config.cpp 0 → 100644 +76 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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 <string> #include <gtest/gtest.h> #include <android-base/strings.h> #include <private/android_filesystem_config.h> extern const struct fs_path_config* __for_testing_only__android_dirs; extern const struct fs_path_config* __for_testing_only__android_files; static void check_one(const struct fs_path_config* paths, const std::string& prefix, const std::string& alternate) { for (size_t idx = 0; paths[idx].prefix; ++idx) { std::string path(paths[idx].prefix); if (android::base::StartsWith(path, prefix.c_str())) { path = alternate + path.substr(prefix.length()); size_t second; for (second = 0; paths[second].prefix; ++second) { if (path == paths[second].prefix) break; } if (!paths[second].prefix) { // guaranteed to fail expectations, trigger test failure with // a message that reports the violation as an inequality. EXPECT_STREQ((prefix + path.substr(alternate.length())).c_str(), path.c_str()); } } } } static void check_two(const struct fs_path_config* paths, const std::string& prefix) { ASSERT_FALSE(paths == nullptr); std::string alternate = "system/" + prefix; check_one(paths, prefix, alternate); check_one(paths, alternate, prefix); } TEST(fs_config, vendor_dirs_alias) { check_two(__for_testing_only__android_dirs, "vendor/"); } TEST(fs_config, vendor_files_alias) { check_two(__for_testing_only__android_files, "vendor/"); } TEST(fs_config, oem_dirs_alias) { check_two(__for_testing_only__android_dirs, "oem/"); } TEST(fs_config, oem_files_alias) { check_two(__for_testing_only__android_files, "oem/"); } TEST(fs_config, odm_dirs_alias) { check_two(__for_testing_only__android_dirs, "odm/"); } TEST(fs_config, odm_files_alias) { check_two(__for_testing_only__android_files, "odm/"); } Loading
libcutils/fs_config.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,9 @@ static const struct fs_path_config android_dirs[] = { { 00755, AID_ROOT, AID_ROOT, 0, 0 }, // clang-format on }; #ifndef __ANDROID_VNDK__ auto __for_testing_only__android_dirs = android_dirs; #endif // Rules for files. // These rules are applied based on "first match", so they Loading Loading @@ -238,6 +241,9 @@ static const struct fs_path_config android_files[] = { { 00644, AID_ROOT, AID_ROOT, 0, 0 }, // clang-format on }; #ifndef __ANDROID_VNDK__ auto __for_testing_only__android_files = android_files; #endif static size_t strip(const char* path, size_t len, const char suffix[]) { if (len < strlen(suffix)) return len; Loading
libcutils/tests/Android.bp +2 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,8 @@ cc_defaults { "test_str_parms.cpp", "android_get_control_socket_test.cpp", "android_get_control_file_test.cpp", "multiuser_test.cpp" "multiuser_test.cpp", "fs_config.cpp", ], }, Loading
libcutils/tests/fs_config.cpp 0 → 100644 +76 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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 <string> #include <gtest/gtest.h> #include <android-base/strings.h> #include <private/android_filesystem_config.h> extern const struct fs_path_config* __for_testing_only__android_dirs; extern const struct fs_path_config* __for_testing_only__android_files; static void check_one(const struct fs_path_config* paths, const std::string& prefix, const std::string& alternate) { for (size_t idx = 0; paths[idx].prefix; ++idx) { std::string path(paths[idx].prefix); if (android::base::StartsWith(path, prefix.c_str())) { path = alternate + path.substr(prefix.length()); size_t second; for (second = 0; paths[second].prefix; ++second) { if (path == paths[second].prefix) break; } if (!paths[second].prefix) { // guaranteed to fail expectations, trigger test failure with // a message that reports the violation as an inequality. EXPECT_STREQ((prefix + path.substr(alternate.length())).c_str(), path.c_str()); } } } } static void check_two(const struct fs_path_config* paths, const std::string& prefix) { ASSERT_FALSE(paths == nullptr); std::string alternate = "system/" + prefix; check_one(paths, prefix, alternate); check_one(paths, alternate, prefix); } TEST(fs_config, vendor_dirs_alias) { check_two(__for_testing_only__android_dirs, "vendor/"); } TEST(fs_config, vendor_files_alias) { check_two(__for_testing_only__android_files, "vendor/"); } TEST(fs_config, oem_dirs_alias) { check_two(__for_testing_only__android_dirs, "oem/"); } TEST(fs_config, oem_files_alias) { check_two(__for_testing_only__android_files, "oem/"); } TEST(fs_config, odm_dirs_alias) { check_two(__for_testing_only__android_dirs, "odm/"); } TEST(fs_config, odm_files_alias) { check_two(__for_testing_only__android_files, "odm/"); }