/* * 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 <errno.h> #include <stdio.h> #include <string.h> /* The main purpose of this test is to ensure this C header compiles in C, so * that no C++ features inadvertently leak into the C ABI. */ #include "art_api/dex_file_external.h" static const char gtest_output_arg[] = "--gtest_output=xml:"; static const char gtest_output_xml[] = "\ <?xml version=\"1.0\"?>\n\ <testsuites tests=\"0\" failures=\"0\" disabled=\"0\" errors=\"0\" name=\"AllTests\">"; /* Writes a dummy gtest xml report to the given path. */ static int write_gtest_output_xml(char* gtest_output_path) { FILE* output_fd = fopen(gtest_output_path, "w"); if (output_fd == NULL) { fprintf(stderr, "Failed to open %s: %s\n", gtest_output_path, strerror(errno)); return 1; } if (fprintf(output_fd, gtest_output_xml) != sizeof(gtest_output_xml) - 1) { fprintf(stderr, "Failed to write %s: %s\n", gtest_output_path, strerror(errno)); fclose(output_fd); return 1; } if (fclose(output_fd) != 0) { fprintf(stderr, "Failed to close %s: %s\n", gtest_output_path, strerror(errno)); return 1; } return 0; } int main(int argc, char** argv) { if (argc >= 2 && strncmp(argv[1], gtest_output_arg, sizeof(gtest_output_arg) - 1) == 0) { /* The ART gtest framework expects all tests to understand --gtest_output. */ return write_gtest_output_xml(argv[1] + sizeof(gtest_output_arg) - 1); } return 0; }