1735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// Copyright 2008, Google Inc.
2735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// All rights reserved.
3735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner//
4735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// Redistribution and use in source and binary forms, with or without
5735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// modification, are permitted provided that the following conditions are
6735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// met:
7735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner//
8735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner//     * Redistributions of source code must retain the above copyright
9735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// notice, this list of conditions and the following disclaimer.
10735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner//     * Redistributions in binary form must reproduce the above
11735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// copyright notice, this list of conditions and the following disclaimer
12735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// in the documentation and/or other materials provided with the
13735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// distribution.
14735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner//     * Neither the name of Google Inc. nor the names of its
15735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// contributors may be used to endorse or promote products derived from
16735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// this software without specific prior written permission.
17735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner//
18735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner//
30735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// Author: wan@google.com (Zhanyong Wan)
31735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
32735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// A helper program for testing that Google Test parses the environment
33735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// variables correctly.
34735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
35735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner#include "gtest/gtest.h"
36735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
37735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner#include <iostream>
38735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
39735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner#define GTEST_IMPLEMENTATION_ 1
40735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner#include "src/gtest-internal-inl.h"
41735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner#undef GTEST_IMPLEMENTATION_
42735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
43735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turnerusing ::std::cout;
44735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
45735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turnernamespace testing {
46735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
47735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// The purpose of this is to make the test more realistic by ensuring
48735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// that the UnitTest singleton is created before main() is entered.
49735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner// We don't actual run the TEST itself.
50735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' TurnerTEST(GTestEnvVarTest, Dummy) {
51735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner}
52735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
53735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turnervoid PrintFlag(const char* flag) {
54735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "break_on_failure") == 0) {
55735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(break_on_failure);
56735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
57735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
58735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
59735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "catch_exceptions") == 0) {
60735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(catch_exceptions);
61735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
62735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
63735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
64735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "color") == 0) {
65735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(color);
66735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
67735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
68735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
69735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "death_test_style") == 0) {
70735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(death_test_style);
71735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
72735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
73735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
74735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "death_test_use_fork") == 0) {
75735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(death_test_use_fork);
76735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
77735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
78735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
79735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "filter") == 0) {
80735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(filter);
81735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
82735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
83735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
84735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "output") == 0) {
85735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(output);
86735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
87735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
88735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
89735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "print_time") == 0) {
90735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(print_time);
91735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
92735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
93735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
94735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "repeat") == 0) {
95735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(repeat);
96735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
97735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
98735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
99735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "stack_trace_depth") == 0) {
100735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(stack_trace_depth);
101735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
102735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
103735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
104735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (strcmp(flag, "throw_on_failure") == 0) {
105735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << GTEST_FLAG(throw_on_failure);
106735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return;
107735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
108735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
109735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  cout << "Invalid flag name " << flag
110735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner       << ".  Valid names are break_on_failure, color, filter, etc.\n";
111735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  exit(1);
112735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner}
113735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
114735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner}  // namespace testing
115735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
116735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turnerint main(int argc, char** argv) {
117735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  testing::InitGoogleTest(&argc, argv);
118735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
119735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  if (argc != 2) {
120735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    cout << "Usage: gtest_env_var_test_ NAME_OF_FLAG\n";
121735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner    return 1;
122735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  }
123735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner
124735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  testing::PrintFlag(argv[1]);
125735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner  return 0;
126735d57d5d1c055db9e0ef28857e8dc7b3d7d6b9bDavid 'Digit' Turner}
127