blob: 934ea916c7f5339d2b87dc04b9fe1d5ae12dc266 [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2012 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//
rspangler@google.com49fdf182009-10-10 00:57:34 +000016
17// based on pam_google_testrunner.cc
18
Sen Jianga78ee102016-04-01 14:15:08 -070019#include <string>
20
Alex Deymo2e71f902015-09-30 01:25:48 -070021#include <xz.h>
22
Darin Petkov9c0baf82010-10-07 13:44:48 -070023#include <base/at_exit.h>
24#include <base/command_line.h>
Sen Jianga78ee102016-04-01 14:15:08 -070025#include <base/environment.h>
Alex Vakulenko3f39d5c2015-10-13 09:27:13 -070026#include <brillo/test_helpers.h>
rspangler@google.com49fdf182009-10-10 00:57:34 +000027#include <gtest/gtest.h>
Darin Petkov9c0baf82010-10-07 13:44:48 -070028
Alex Deymo39910dc2015-11-09 17:04:30 -080029#include "update_engine/common/terminator.h"
Sen Jianga78ee102016-04-01 14:15:08 -070030#include "update_engine/common/test_utils.h"
Alex Deymo246bf212016-03-22 19:27:33 -070031#include "update_engine/payload_generator/xz.h"
adlr@google.comc98a7ed2009-12-04 18:54:03 +000032
rspangler@google.com49fdf182009-10-10 00:57:34 +000033int main(int argc, char **argv) {
Gilad Arnoldfc359292012-04-30 22:04:24 -070034 LOG(INFO) << "started";
Darin Petkov5c0a8af2010-08-24 13:39:13 -070035 base::AtExitManager exit_manager;
Alex Deymo2e71f902015-09-30 01:25:48 -070036 // xz-embedded requires to initialize its CRC-32 table once on startup.
37 xz_crc32_init();
Alex Deymo246bf212016-03-22 19:27:33 -070038 // The LZMA SDK-based Xz compressor used in the payload generation requires
39 // this one-time initialization.
40 chromeos_update_engine::XzCompressInit();
Gilad Arnold0b4a6ff2012-04-30 13:13:03 -070041 // TODO(garnold) temporarily cause the unittest binary to exit with status
42 // code 2 upon catching a SIGTERM. This will help diagnose why the unittest
43 // binary is perceived as failing by the buildbot. We should revert it to use
44 // the default exit status of 1. Corresponding reverts are necessary in
45 // terminator_unittest.cc.
46 chromeos_update_engine::Terminator::Init(2);
Sen Jianga78ee102016-04-01 14:15:08 -070047 // In Android bsdiff is located in update_engine_unittests, add it to PATH.
48#ifdef __ANDROID__
49 std::unique_ptr<base::Environment> env(base::Environment::Create());
50 std::string path_env;
51 CHECK(env->GetVar("PATH", &path_env));
52 path_env +=
53 ":" + chromeos_update_engine::test_utils::GetBuildArtifactsPath().value();
54 CHECK(env->SetVar("PATH", path_env));
55#endif
Gilad Arnoldfc359292012-04-30 22:04:24 -070056 LOG(INFO) << "parsing command line arguments";
Alex Vakulenkob96ecda2015-04-02 14:31:10 -070057 base::CommandLine::Init(argc, argv);
Gilad Arnoldfc359292012-04-30 22:04:24 -070058 LOG(INFO) << "initializing gtest";
Alex Deymo0bb23412015-06-19 00:04:46 -070059 SetUpTests(&argc, argv, true);
Gilad Arnoldfc359292012-04-30 22:04:24 -070060 LOG(INFO) << "running unit tests";
Gilad Arnoldfaac2a52012-04-26 14:44:17 -070061 int test_result = RUN_ALL_TESTS();
62 LOG(INFO) << "unittest return value: " << test_result;
63 return test_result;
rspangler@google.com49fdf182009-10-10 00:57:34 +000064}