mirror of
https://github.com/gflags/gflags.git
synced 2025-04-05 13:35:04 +00:00
Thu Sep 18 12:58:05 2008 Google Inc. <opensource@google.com>
* google-gflags: version 1.0rc2 * Report current flag values in --helpxml (hdn) * Fix compilation troubles with gcc 4.3.3 (simonb) * BUG FIX: I was missing a std:: in DECLARE_string (csilvers) * BUG FIX: Clarify in docs how to specify --bool flags (csilvers) * BUG FIX: Fix --helpshort for source files not in a subdir (csilvers) * BUG FIX: Fix python unittest for 64-bit builds (bcmills) git-svn-id: https://gflags.googlecode.com/svn/trunk@27 6586e3c6-dcc4-952a-343f-ff74eb82781d
This commit is contained in:
parent
67914687b8
commit
e0b71e5758
16 changed files with 126 additions and 2330 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,4 +1,14 @@
|
|||
Tue Aug 19 16:15:48 2008 Google Inc. <opensource@google.com>
|
||||
Thu Sep 18 12:58:05 2008 Google Inc. <opensource@google.com>
|
||||
|
||||
* google-gflags: version 1.0rc2
|
||||
* Report current flag values in --helpxml (hdn)
|
||||
* Fix compilation troubles with gcc 4.3.3 (simonb)
|
||||
* BUG FIX: I was missing a std:: in DECLARE_string (csilvers)
|
||||
* BUG FIX: Clarify in docs how to specify --bool flags (csilvers)
|
||||
* BUG FIX: Fix --helpshort for source files not in a subdir (csilvers)
|
||||
* BUG FIX: Fix python unittest for 64-bit builds (bcmills)
|
||||
|
||||
Tue Aug 19 16:15:48 2008
|
||||
|
||||
* google-gflags: version 1.0rc1
|
||||
* Move #include files from google/ to gflags/ (csilvers)
|
||||
|
|
70
INSTALL
70
INSTALL
|
@ -1,16 +1,14 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
|
||||
Foundation, Inc.
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
|
@ -70,9 +68,9 @@ The simplest way to compile this package is:
|
|||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
|
@ -85,7 +83,7 @@ is an example:
|
|||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
|
@ -102,19 +100,19 @@ for another architecture.
|
|||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
|
@ -125,7 +123,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
|||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
|
@ -140,11 +138,11 @@ you can use the `configure' options `--x-includes=DIR' and
|
|||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
|
@ -159,7 +157,7 @@ where SYSTEM can have one of these forms:
|
|||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
|
@ -170,9 +168,9 @@ eventually be run) with `--host=TYPE'.
|
|||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
|
@ -181,7 +179,7 @@ A warning: not all `configure' scripts look for a site script.
|
|||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
|
@ -189,18 +187,14 @@ them in the `configure' command line, using `VAR=value'. For example:
|
|||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script). Here is a another example:
|
||||
|
||||
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||
configuration-related scripts to be executed by `/bin/bash'.
|
||||
will cause the specified gcc to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
|
|
20
configure
vendored
20
configure
vendored
|
@ -1,6 +1,6 @@
|
|||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.59 for gflags 1.0rc1.
|
||||
# Generated by GNU Autoconf 2.59 for gflags 1.0rc2.
|
||||
#
|
||||
# Report bugs to <opensource@google.com>.
|
||||
#
|
||||
|
@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
|
|||
# Identity of this package.
|
||||
PACKAGE_NAME='gflags'
|
||||
PACKAGE_TARNAME='gflags'
|
||||
PACKAGE_VERSION='1.0rc1'
|
||||
PACKAGE_STRING='gflags 1.0rc1'
|
||||
PACKAGE_VERSION='1.0rc2'
|
||||
PACKAGE_STRING='gflags 1.0rc2'
|
||||
PACKAGE_BUGREPORT='opensource@google.com'
|
||||
|
||||
ac_unique_file="README"
|
||||
|
@ -954,7 +954,7 @@ if test "$ac_init_help" = "long"; then
|
|||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures gflags 1.0rc1 to adapt to many kinds of systems.
|
||||
\`configure' configures gflags 1.0rc2 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
|
@ -1020,7 +1020,7 @@ fi
|
|||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of gflags 1.0rc1:";;
|
||||
short | recursive ) echo "Configuration of gflags 1.0rc2:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
|
@ -1163,7 +1163,7 @@ fi
|
|||
test -n "$ac_init_help" && exit 0
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
gflags configure 1.0rc1
|
||||
gflags configure 1.0rc2
|
||||
generated by GNU Autoconf 2.59
|
||||
|
||||
Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
|
@ -1177,7 +1177,7 @@ cat >&5 <<_ACEOF
|
|||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by gflags $as_me 1.0rc1, which was
|
||||
It was created by gflags $as_me 1.0rc2, which was
|
||||
generated by GNU Autoconf 2.59. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
|
@ -1823,7 +1823,7 @@ fi
|
|||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='gflags'
|
||||
VERSION='1.0rc1'
|
||||
VERSION='1.0rc2'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
|
@ -21261,7 +21261,7 @@ _ASBOX
|
|||
} >&5
|
||||
cat >&5 <<_CSEOF
|
||||
|
||||
This file was extended by gflags $as_me 1.0rc1, which was
|
||||
This file was extended by gflags $as_me 1.0rc2, which was
|
||||
generated by GNU Autoconf 2.59. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
|
@ -21324,7 +21324,7 @@ _ACEOF
|
|||
|
||||
cat >>$CONFIG_STATUS <<_ACEOF
|
||||
ac_cs_version="\\
|
||||
gflags config.status 1.0rc1
|
||||
gflags config.status 1.0rc2
|
||||
configured by $0, generated by GNU Autoconf 2.59,
|
||||
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# make sure we're interpreted by some minimal autoconf
|
||||
AC_PREREQ(2.57)
|
||||
|
||||
AC_INIT(gflags, 1.0rc1, opensource@google.com)
|
||||
AC_INIT(gflags, 1.0rc2, opensource@google.com)
|
||||
# The argument here is just something that should be in the current directory
|
||||
# (for sanity checking)
|
||||
AC_CONFIG_SRCDIR(README)
|
||||
|
|
|
@ -81,11 +81,11 @@ translates directly to Python.</p>
|
|||
|
||||
<p> Defining a flag is easy: just use the appropriate macro for the
|
||||
type you want the flag to be, as defined at the bottom of
|
||||
<code>google/gflags.h</code>. Here's an example file,
|
||||
<code>gflags/gflags.h</code>. Here's an example file,
|
||||
<code>foo.cc</code>:</p>
|
||||
|
||||
<pre>
|
||||
#include <google/gflags.h>
|
||||
#include <gflags/gflags.h>
|
||||
|
||||
DEFINE_bool(big_menu, true, "Include 'advanced' options in the menu listing");
|
||||
DEFINE_string(languages, "english,french,german",
|
||||
|
@ -287,14 +287,12 @@ specify the "languages" flag:</p>
|
|||
<li> <code>app_containing_foo -languages "chinese,japanese,korean"</code>
|
||||
</ul>
|
||||
|
||||
<p>For boolean flags, there are even more possibilities:</p>
|
||||
<p>For boolean flags, the possibilities are slightly different:</p>
|
||||
<ul>
|
||||
<li> <code>app_containing_foo --big_menu</code>
|
||||
<li> <code>app_containing_foo --nobig_menu</code>
|
||||
<li> <code>app_containing_foo --big_menu=true</code>
|
||||
<li> <code>app_containing_foo --big_menu=false</code>
|
||||
<li> <code>app_containing_foo --big_menu true</code>
|
||||
<li> <code>app_containing_foo --big_menu false</code>
|
||||
</ul>
|
||||
<p>(as well as the single-dash variant on all of these).</p>
|
||||
|
||||
|
@ -477,7 +475,7 @@ methods such as <code>google::SetUsageMessage</code>, see
|
|||
<p>If your application has code like this:</p>
|
||||
<pre>
|
||||
#define STRIP_FLAG_HELP 1 // this must go before the #include!
|
||||
#include <google/gflags.h>
|
||||
#include <gflags/gflags.h>
|
||||
</pre>
|
||||
<p>we will remove the help messages from the compiled source. This can
|
||||
reduce the size of the resulting binary somewhat, and may also be
|
||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,9 @@
|
|||
google-gflags (1.0rc2-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Google Inc. <opensource@google.com> Tue, 18 Sep 2008 12:58:05 -0700
|
||||
|
||||
google-gflags (1.0rc1-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
|
|
@ -7,7 +7,7 @@ Summary: A commandline flags library that allows for distributed flags
|
|||
Version: %VERSION
|
||||
Release: %rel
|
||||
Group: Development/Libraries
|
||||
URL: http://code.google.com/p/gflags
|
||||
URL: http://code.google.com/p/google-gflags
|
||||
License: BSD
|
||||
Vendor: Google
|
||||
Packager: Google Inc. <opensource@google.com>
|
||||
|
|
|
@ -243,14 +243,12 @@ class FlagsUnitTest(unittest.TestCase):
|
|||
# Test integer argument passing
|
||||
argv = ('./program', '--x', '0x12345')
|
||||
argv = FLAGS(argv)
|
||||
# 0x12345 == 74565
|
||||
self.assertEquals(FLAGS.x, 74565)
|
||||
self.assertEquals(FLAGS.x, 0x12345)
|
||||
self.assertEquals(type(FLAGS.x), int)
|
||||
|
||||
argv = ('./program', '--x', '0x123456789A')
|
||||
argv = ('./program', '--x', '0x1234567890ABCDEF1234567890ABCDEF')
|
||||
argv = FLAGS(argv)
|
||||
# 0x123456789A == 78187493530L
|
||||
self.assertEquals(FLAGS.x, 78187493530L)
|
||||
self.assertEquals(FLAGS.x, 0x1234567890ABCDEF1234567890ABCDEF)
|
||||
self.assertEquals(type(FLAGS.x), long)
|
||||
|
||||
# Treat 0-prefixed parameters as base-10, not base-8
|
||||
|
|
|
@ -210,6 +210,7 @@ typedef bool (*ValidateFnProto)();
|
|||
// given type, and back. Thread-compatible.
|
||||
// --------------------------------------------------------------------
|
||||
|
||||
class CommandLineFlag;
|
||||
class FlagValue {
|
||||
public:
|
||||
FlagValue(void* valbuf, const char* type);
|
||||
|
@ -223,7 +224,7 @@ class FlagValue {
|
|||
friend class GOOGLE_NAMESPACE::FlagSaverImpl; // calls New()
|
||||
friend class FlagRegistry; // checks value_buffer_ for flags_by_ptr_ map
|
||||
template <typename T> friend T GetFromEnv(const char*, const char*, T);
|
||||
friend bool TryParseLocked(const class CommandLineFlag*, FlagValue*,
|
||||
friend bool TryParseLocked(const CommandLineFlag*, FlagValue*,
|
||||
const char*, string*); // for New(), CopyFrom()
|
||||
|
||||
enum ValueType {FV_BOOL, FV_INT32, FV_INT64, FV_UINT64, FV_DOUBLE, FV_STRING};
|
||||
|
|
|
@ -494,7 +494,7 @@ extern bool FlagsTypeWarn(const char *name);
|
|||
// try to avoid crashes in that case, we use a char buffer to store
|
||||
// the string, which we can static-initialize, and then placement-new
|
||||
// into it later. It's not perfect, but the best we can do.
|
||||
#define DECLARE_string(name) namespace fLS { extern string& FLAGS_##name; } \
|
||||
#define DECLARE_string(name) namespace fLS { extern std::string& FLAGS_##name; } \
|
||||
using fLS::FLAGS_##name
|
||||
|
||||
// We need to define a var named FLAGS_no##name so people don't define
|
||||
|
|
|
@ -202,7 +202,7 @@ struct NotableFlags {
|
|||
static void PrintFlagCompletionInfo(void) {
|
||||
string cursor_word = FLAGS_tab_completion_word;
|
||||
string canonical_token;
|
||||
CompletionOptions options;
|
||||
CompletionOptions options = { };
|
||||
CanonicalizeCursorWordAndSearchOptions(
|
||||
cursor_word,
|
||||
&canonical_token,
|
||||
|
|
|
@ -201,6 +201,7 @@ static string DescribeOneFlagInXML(const CommandLineFlagInfo& flag) {
|
|||
"<name>" + XMLText(flag.name) + "</name>" +
|
||||
"<meaning>" + XMLText(flag.description) + "</meaning>" +
|
||||
"<default>" + XMLText(flag.default_value) + "</default>" +
|
||||
"<current>" + XMLText(flag.current_value) + "</current>" +
|
||||
"<type>" + XMLText(flag.type) + "</type>" +
|
||||
string("</flag>"));
|
||||
}
|
||||
|
@ -234,9 +235,16 @@ static bool FileMatchesSubstring(const string& filename,
|
|||
for (vector<string>::const_iterator target = substrings.begin();
|
||||
target != substrings.end();
|
||||
++target) {
|
||||
if (strstr(filename.c_str(), target->c_str()) != NULL) {
|
||||
if (strstr(filename.c_str(), target->c_str()) != NULL)
|
||||
return true;
|
||||
// If the substring starts with a '/', that means that we want
|
||||
// the string to be at the beginning of a directory component.
|
||||
// That should match the first directory component as well, so
|
||||
// we allow '/foo' to match a filename of 'foo'.
|
||||
if (!target->empty() && (*target)[0] == '/' &&
|
||||
strncmp(filename.c_str(), target->c_str() + 1,
|
||||
strlen(target->c_str() + 1)) == 0)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
// Author: Marius Eriksen
|
||||
//
|
||||
// For now, this unit test does not cover all features of
|
||||
// commandlineflags.cc
|
||||
// gflags.cc
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
|
@ -51,11 +51,13 @@ void (*unused_fn)() = &GOOGLE_NAMESPACE::HandleCommandLineCompletions;
|
|||
|
||||
using std::vector;
|
||||
using std::string;
|
||||
using GOOGLE_NAMESPACE::int32;
|
||||
using GOOGLE_NAMESPACE::FlagRegisterer;
|
||||
|
||||
// Returns the number of elements in an array.
|
||||
#define GET_ARRAY_SIZE(arr) (sizeof(arr)/sizeof(*(arr)))
|
||||
|
||||
DECLARE_string(tryfromenv); // in commandlineflags.cc
|
||||
DECLARE_string(tryfromenv); // in gflags.cc
|
||||
|
||||
DEFINE_string(test_tmpdir, "/tmp/gflags_unittest", "Dir we use for temp files");
|
||||
DEFINE_string(srcdir, GOOGLE_NAMESPACE::StringFromEnv("SRCDIR", "."),
|
||||
|
@ -111,8 +113,8 @@ static string ChangeableString() {
|
|||
DEFINE_string(changeable_string_var, ChangeableString(), "");
|
||||
|
||||
// These are never used in this unittest, but can be used by
|
||||
// commandlineflags_unittest.sh when it needs to specify flags
|
||||
// that are legal for commandlineflags_unittest but don't need to
|
||||
// gflags_unittest.sh when it needs to specify flags
|
||||
// that are legal for gflags_unittest but don't need to
|
||||
// be a particular value.
|
||||
DEFINE_bool(unused_bool, true, "unused bool-ness");
|
||||
DEFINE_int32(unused_int32, -1001, "");
|
||||
|
@ -129,6 +131,31 @@ static bool AlwaysFail(const char* flag, bool value) { return value == false; }
|
|||
DEFINE_bool(always_fail, false, "will fail to validate when you set it");
|
||||
static const bool dummy = GOOGLE_NAMESPACE::RegisterFlagValidator(&FLAGS_always_fail, AlwaysFail);
|
||||
|
||||
// This is a psuedo-flag -- we want to register a flag with a filename
|
||||
// at the top level, but there is no way to do this except by faking
|
||||
// the filename.
|
||||
namespace fLI {
|
||||
static const int32 FLAGS_nonotldflag1 = 12;
|
||||
int32 FLAGS_tldflag1 = FLAGS_nonotldflag1;
|
||||
int32 FLAGS_notldflag1 = FLAGS_nonotldflag1;
|
||||
static FlagRegisterer o_tldflag1(
|
||||
"tldflag1", "int32",
|
||||
"should show up in --helpshort", "gflags_unittest.cc",
|
||||
&FLAGS_tldflag1, &FLAGS_notldflag1);
|
||||
}
|
||||
using fLI::FLAGS_tldflag1;
|
||||
|
||||
namespace fLI {
|
||||
static const int32 FLAGS_nonotldflag2 = 23;
|
||||
int32 FLAGS_tldflag2 = FLAGS_nonotldflag2;
|
||||
int32 FLAGS_notldflag2 = FLAGS_nonotldflag2;
|
||||
static FlagRegisterer o_tldflag2(
|
||||
"tldflag2", "int32",
|
||||
"should show up in --helpshort", "gflags_unittest.",
|
||||
&FLAGS_tldflag2, &FLAGS_notldflag2);
|
||||
}
|
||||
using fLI::FLAGS_tldflag2;
|
||||
|
||||
_START_GOOGLE_NAMESPACE_
|
||||
|
||||
// The following is some bare-bones testing infrastructure
|
||||
|
@ -674,7 +701,7 @@ TEST(FromEnvTest, LegalValues) {
|
|||
}
|
||||
|
||||
// Tests that the FooFromEnv dies on parse-error
|
||||
TEST(FromEnvTest, IllegalValues) {
|
||||
TEST(FromEnvDeathTest, IllegalValues) {
|
||||
setenv("BOOL_BAD1", "so true!",1 );
|
||||
setenv("BOOL_BAD2", "", 1);
|
||||
EXPECT_DEATH(BoolFromEnv("BOOL_BAD1", false), "error parsing env variable");
|
||||
|
@ -1039,7 +1066,7 @@ TEST(GetCommandLineFlagInfoOrDieTest, FlagExistsAndWasAssigned) {
|
|||
EXPECT_EQ(false, info.has_validator_fn);
|
||||
}
|
||||
|
||||
TEST(GetCommandLineFlagInfoOrDieTest, FlagDoesNotExist) {
|
||||
TEST(GetCommandLineFlagInfoOrDieDeathTest, FlagDoesNotExist) {
|
||||
EXPECT_DEATH(GetCommandLineFlagInfoOrDie("test_int3210"),
|
||||
".*: flag test_int3210 does not exist");
|
||||
}
|
||||
|
@ -1249,7 +1276,7 @@ TEST(ParseCommandLineFlagsAndDashArgs, OneDashArg) {
|
|||
EXPECT_EQ(0, ParseTestFlag(false, GET_ARRAY_SIZE(argv) - 1, argv));
|
||||
}
|
||||
|
||||
TEST(ParseCommandLineFlagsUnknownFlag,
|
||||
TEST(ParseCommandLineFlagsUnknownFlagDeathTest,
|
||||
FlagIsCompletelyUnknown) {
|
||||
const char* argv[] = {
|
||||
"my_test",
|
||||
|
@ -1263,7 +1290,7 @@ TEST(ParseCommandLineFlagsUnknownFlag,
|
|||
"unknown command line flag.*");
|
||||
}
|
||||
|
||||
TEST(ParseCommandLineFlagsUnknownFlag,
|
||||
TEST(ParseCommandLineFlagsUnknownFlagDeathTest,
|
||||
BoolFlagIsCompletelyUnknown) {
|
||||
const char* argv[] = {
|
||||
"my_test",
|
||||
|
@ -1277,7 +1304,7 @@ TEST(ParseCommandLineFlagsUnknownFlag,
|
|||
"unknown command line flag.*");
|
||||
}
|
||||
|
||||
TEST(ParseCommandLineFlagsUnknownFlag,
|
||||
TEST(ParseCommandLineFlagsUnknownFlagDeathTest,
|
||||
FlagIsNotABool) {
|
||||
const char* argv[] = {
|
||||
"my_test",
|
||||
|
@ -1351,7 +1378,7 @@ TEST(FlagsValidator, ValidFlagViaSetValue) {
|
|||
EXPECT_TRUE(RegisterFlagValidator(&FLAGS_test_flag, NULL));
|
||||
}
|
||||
|
||||
TEST(FlagsValidator, InvalidFlagViaArgv) {
|
||||
TEST(FlagsValidatorDeathTest, InvalidFlagViaArgv) {
|
||||
const char* argv[] = {
|
||||
"my_test",
|
||||
"--test_flag=50",
|
||||
|
@ -1385,7 +1412,7 @@ TEST(FlagsValidator, InvalidFlagViaSetValue) {
|
|||
EXPECT_TRUE(RegisterFlagValidator(&FLAGS_test_flag, NULL));
|
||||
}
|
||||
|
||||
TEST(FlagsValidator, InvalidFlagNeverSet) {
|
||||
TEST(FlagsValidatorDeathTest, InvalidFlagNeverSet) {
|
||||
// If a flag keeps its default value, and that default value is
|
||||
// invalid, we should die at argv-parse time.
|
||||
const char* argv[] = {
|
||||
|
|
|
@ -130,6 +130,10 @@ Expect $LINENO 1 "/gflags_reporting.cc" "" -helpfull
|
|||
# --helpshort should show only flags from the unittest itself
|
||||
Expect $LINENO 1 "/gflags_unittest.cc" "/gflags_reporting.cc" --helpshort
|
||||
|
||||
# --helpshort should show the tldflag we created in the unittest dir
|
||||
Expect $LINENO 1 "tldflag1" "/google.cc" --helpshort
|
||||
Expect $LINENO 1 "tldflag2" "/google.cc" --helpshort
|
||||
|
||||
# --helpshort should work if the main source file is suffixed with [_-]main
|
||||
ExpectExe "$EXE2" $LINENO 1 "/gflags_unittest-main.cc" "/gflags_reporting.cc" \
|
||||
--helpshort
|
||||
|
@ -158,9 +162,9 @@ Expect $LINENO 1 "/gflags_unittest.cc" "/gflags.cc" \
|
|||
-helpmatch=unittest
|
||||
|
||||
# if no flags are found with helpmatch or helpon, suggest --help
|
||||
Expect $LINENO 1 "No modules matched" "/commandlineflags_unittest.cc" \
|
||||
Expect $LINENO 1 "No modules matched" "/gflags_unittest.cc" \
|
||||
-helpmatch=nosuchsubstring
|
||||
Expect $LINENO 1 "No modules matched" "/commandlineflags_unittest.cc" \
|
||||
Expect $LINENO 1 "No modules matched" "/gflags_unittest.cc" \
|
||||
-helpon=nosuchmodule
|
||||
|
||||
# helppackage shows all the flags in the same dir as this unittest
|
||||
|
|
Loading…
Add table
Reference in a new issue