| Flutter Impeller |

main.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <wordexp.h>
6
7 #include "flutter/fml/backtrace.h"
8 #include "flutter/fml/build_config.h"
9 #include "flutter/fml/command_line.h"
10 #include "flutter/fml/logging.h"
11 #include "flutter/impeller/golden_tests/golden_digest.h"
12 #include "flutter/impeller/golden_tests/working_directory.h"
13 #include "gtest/gtest.h"
14
15 namespace {
16 void print_usage() {
17 std::cout << "usage: impeller_golden_tests --working_dir=<working_dir>"
18 << std::endl
19 << std::endl;
20 std::cout << "flags:" << std::endl;
21 std::cout << " working_dir: Where the golden images will be generated and "
22 "uploaded to Skia Gold from."
23 << std::endl;
24 }
25 } // namespace
26
27 int main(int argc, char** argv) {
28 fml::InstallCrashHandler();
29 testing::InitGoogleTest(&argc, argv);
30 fml::CommandLine cmd = fml::CommandLineFromPlatformOrArgcArgv(argc, argv);
31
32 std::optional<std::string> working_dir;
33 for (const auto& option : cmd.options()) {
34 if (option.name == "working_dir") {
35 wordexp_t wordexp_result;
36 int code = wordexp(option.value.c_str(), &wordexp_result, 0);
37 FML_CHECK(code == 0);
38 FML_CHECK(wordexp_result.we_wordc != 0);
39 working_dir = wordexp_result.we_wordv[0];
40 wordfree(&wordexp_result);
41 }
42 }
43 if (!working_dir) {
44 std::cout << "required argument \"working_dir\" is missing." << std::endl
45 << std::endl;
46 print_usage();
47 return 1;
48 }
49
50 impeller::testing::WorkingDirectory::Instance()->SetPath(working_dir.value());
51 std::cout << "working directory: "
52 << impeller::testing::WorkingDirectory::Instance()->GetPath()
53 << std::endl;
54
55 int return_code = RUN_ALL_TESTS();
56 if (0 == return_code) {
57 impeller::testing::GoldenDigest::Instance()->Write(
58 impeller::testing::WorkingDirectory::Instance());
59 }
60 return return_code;
61 }
golden_digest.h
impeller::testing::WorkingDirectory::SetPath
void SetPath(const std::string &path)
Definition: working_directory.cc:28
impeller::testing::WorkingDirectory::GetPath
const std::string & GetPath() const
Definition: working_directory.h:25
main
int main(int argc, char **argv)
Definition: main.cc:27
working_directory.h
impeller::testing::GoldenDigest::Write
bool Write(WorkingDirectory *working_directory)
Definition: golden_digest.cc:42
impeller::testing::GoldenDigest::Instance
static GoldenDigest * Instance()
Definition: golden_digest.cc:18
impeller::testing::WorkingDirectory::Instance
static WorkingDirectory * Instance()
Definition: working_directory.cc:16