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:24
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
impeller
golden_tests
main.cc
Generated by
1.8.17