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