1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include "common_runtime_test.h" 18 19 #include <cstdio> 20 21 #include "gtest/gtest.h" 22 23 namespace art { 24 25 // Run the tests only on host. 26 #ifndef ART_TARGET_ANDROID 27 28 class PrebuiltToolsTest : public CommonRuntimeTest { 29 }; 30 31 static void CheckToolsExist(const std::string& tools_dir) { 32 const char* tools[] { "as", "objcopy", "objdump" }; // NOLINT 33 for (const char* tool : tools) { 34 struct stat exec_st; 35 std::string exec_path = tools_dir + tool; 36 if (stat(exec_path.c_str(), &exec_st) != 0) { 37 ADD_FAILURE() << "Cannot find " << tool << " in " << tools_dir; 38 } 39 } 40 } 41 42 TEST_F(PrebuiltToolsTest, CheckHostTools) { 43 std::string tools_dir = GetAndroidHostToolsDir(); 44 if (tools_dir.empty()) { 45 ADD_FAILURE() << "Cannot find Android tools directory for host"; 46 } else { 47 CheckToolsExist(tools_dir); 48 } 49 } 50 51 TEST_F(PrebuiltToolsTest, CheckTargetTools) { 52 // Other prebuilts are missing from the build server's repo manifest. 53 InstructionSet isas[] = { kThumb2 }; // NOLINT 54 for (InstructionSet isa : isas) { 55 std::string tools_dir = GetAndroidTargetToolsDir(isa); 56 if (tools_dir.empty()) { 57 ADD_FAILURE() << "Cannot find Android tools directory for " << isa; 58 } else { 59 CheckToolsExist(tools_dir); 60 } 61 } 62 } 63 64 #endif // ART_TARGET_ANDROID 65 66 } // namespace art 67