// Copyright 2013 The Flutter 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 #include "flutter/fml/backtrace.h" #include "flutter/fml/build_config.h" #include "flutter/fml/command_line.h" #include "flutter/fml/logging.h" #include "flutter/impeller/golden_tests/golden_digest.h" #include "flutter/impeller/golden_tests/working_directory.h" #include "gtest/gtest.h" namespace { void print_usage() { std::cout << "usage: impeller_golden_tests --working_dir=" << std::endl << std::endl; std::cout << "flags:" << std::endl; std::cout << " working_dir: Where the golden images will be generated and " "uploaded to Skia Gold from." << std::endl; } } // namespace int main(int argc, char** argv) { fml::InstallCrashHandler(); testing::InitGoogleTest(&argc, argv); fml::CommandLine cmd = fml::CommandLineFromPlatformOrArgcArgv(argc, argv); std::optional working_dir; for (const auto& option : cmd.options()) { if (option.name == "working_dir") { wordexp_t wordexp_result; int code = wordexp(option.value.c_str(), &wordexp_result, 0); FML_CHECK(code == 0); FML_CHECK(wordexp_result.we_wordc != 0); working_dir = wordexp_result.we_wordv[0]; wordfree(&wordexp_result); } } if (!working_dir) { std::cout << "required argument \"working_dir\" is missing." << std::endl << std::endl; print_usage(); return 1; } impeller::testing::WorkingDirectory::Instance()->SetPath(working_dir.value()); std::cout << "working directory: " << impeller::testing::WorkingDirectory::Instance()->GetPath() << std::endl; int return_code = RUN_ALL_TESTS(); if (0 == return_code) { impeller::testing::GoldenDigest::Instance()->Write( impeller::testing::WorkingDirectory::Instance()); } return return_code; }