1dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Copyright 2008, Google Inc.
2dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// All rights reserved.
3dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
4dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Redistribution and use in source and binary forms, with or without
5dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// modification, are permitted provided that the following conditions are
6dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// met:
7dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
8dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//     * Redistributions of source code must retain the above copyright
9dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// notice, this list of conditions and the following disclaimer.
10dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//     * Redistributions in binary form must reproduce the above
11dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// copyright notice, this list of conditions and the following disclaimer
12dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// in the documentation and/or other materials provided with the
13dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// distribution.
14dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//     * Neither the name of Google Inc. nor the names of its
15dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// contributors may be used to endorse or promote products derived from
16dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// this software without specific prior written permission.
17dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
18dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter//
30dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// Author: wan@google.com (Zhanyong Wan)
31dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
32dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// A helper program for testing that Google Test parses the environment
33dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// variables correctly.
34dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
3546108a219a4b812dd8f36fee479a0340ea5963f5Ben Chan#include "gtest/gtest.h"
36dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
37dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter#include <iostream>
38dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
39dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter#define GTEST_IMPLEMENTATION_ 1
40dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter#include "src/gtest-internal-inl.h"
41dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter#undef GTEST_IMPLEMENTATION_
42dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
43dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixterusing ::std::cout;
44dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
45dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixternamespace testing {
46dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
47dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// The purpose of this is to make the test more realistic by ensuring
48dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// that the UnitTest singleton is created before main() is entered.
49dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter// We don't actual run the TEST itself.
50dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken MixterTEST(GTestEnvVarTest, Dummy) {
51dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
52dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
53dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixtervoid PrintFlag(const char* flag) {
54dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "break_on_failure") == 0) {
55dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(break_on_failure);
56dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
57dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
58dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
59dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "catch_exceptions") == 0) {
60dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(catch_exceptions);
61dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
62dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
63dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
64dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "color") == 0) {
65dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(color);
66dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
67dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
68dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
69dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "death_test_style") == 0) {
70dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(death_test_style);
71dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
72dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
73dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
74dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "death_test_use_fork") == 0) {
75dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(death_test_use_fork);
76dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
77dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
78dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
79dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "filter") == 0) {
80dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(filter);
81dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
82dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
83dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
84dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "output") == 0) {
85dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(output);
86dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
87dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
88dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
89dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "print_time") == 0) {
90dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(print_time);
91dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
92dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
93dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
94dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "repeat") == 0) {
95dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(repeat);
96dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
97dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
98dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
99dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "stack_trace_depth") == 0) {
100dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(stack_trace_depth);
101dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
102dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
103dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
104dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (strcmp(flag, "throw_on_failure") == 0) {
105dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << GTEST_FLAG(throw_on_failure);
106dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return;
107dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
108dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
109dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  cout << "Invalid flag name " << flag
110dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter       << ".  Valid names are break_on_failure, color, filter, etc.\n";
111dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  exit(1);
112dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
113dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
114dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}  // namespace testing
115dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
116dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixterint main(int argc, char** argv) {
117dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  testing::InitGoogleTest(&argc, argv);
118dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
119dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  if (argc != 2) {
120dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    cout << "Usage: gtest_env_var_test_ NAME_OF_FLAG\n";
121dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter    return 1;
122dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  }
123dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter
124dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  testing::PrintFlag(argv[1]);
125dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter  return 0;
126dd1c93d5709e32713961cfd95fe30489a4ad2d26Ken Mixter}
127