/home/arjun/llvm-project/llvm/utils/unittest/UnitTestMain/TestMain.cpp
Line | Count | Source |
1 | | //===--- utils/unittest/UnitTestMain/TestMain.cpp - unittest driver -------===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | |
9 | | #include "llvm/Support/CommandLine.h" |
10 | | #include "llvm/Support/Signals.h" |
11 | | #include "gmock/gmock.h" |
12 | | #include "gtest/gtest.h" |
13 | | |
14 | | #if defined(_WIN32) |
15 | | # include <windows.h> |
16 | | # if defined(_MSC_VER) |
17 | | # include <crtdbg.h> |
18 | | # endif |
19 | | #endif |
20 | | |
21 | | const char *TestMainArgv0; |
22 | | |
23 | 2 | int main(int argc, char **argv) { |
24 | 2 | llvm::sys::PrintStackTraceOnErrorSignal(argv[0], |
25 | 2 | true /* Disable crash reporting */); |
26 | 2 | |
27 | 2 | // Initialize both gmock and gtest. |
28 | 2 | testing::InitGoogleMock(&argc, argv); |
29 | 2 | |
30 | 2 | llvm::cl::ParseCommandLineOptions(argc, argv); |
31 | 2 | |
32 | 2 | // Make it easy for a test to re-execute itself by saving argv[0]. |
33 | 2 | TestMainArgv0 = argv[0]; |
34 | 2 | |
35 | | # if defined(_WIN32) |
36 | | // Disable all of the possible ways Windows conspires to make automated |
37 | | // testing impossible. |
38 | | ::SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); |
39 | | # if defined(_MSC_VER) |
40 | | ::_set_error_mode(_OUT_TO_STDERR); |
41 | | _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); |
42 | | _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); |
43 | | _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); |
44 | | _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); |
45 | | _CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); |
46 | | _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR); |
47 | | # endif |
48 | | # endif |
49 | | |
50 | 2 | return RUN_ALL_TESTS(); |
51 | 2 | } |