Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
benchmark
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
benchmark
Commits
1d41de84
Unverified
Commit
1d41de84
authored
Apr 17, 2019
by
Dominic Hamon
Committed by
GitHub
Apr 17, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add command line flags tests (#793)
Increase coverage
parent
415835e0
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
83 additions
and
6 deletions
+83
-6
commandlineflags.cc
src/commandlineflags.cc
+4
-0
commandlineflags.h
src/commandlineflags.h
+0
-6
CMakeLists.txt
test/CMakeLists.txt
+1
-0
commandlineflags_gtest.cc
test/commandlineflags_gtest.cc
+78
-0
No files found.
src/commandlineflags.cc
View file @
1d41de84
...
@@ -21,6 +21,8 @@
...
@@ -21,6 +21,8 @@
#include <limits>
#include <limits>
namespace
benchmark
{
namespace
benchmark
{
namespace
{
// Parses 'str' for a 32-bit signed integer. If successful, writes
// Parses 'str' for a 32-bit signed integer. If successful, writes
// the result to *value and returns true; otherwise leaves *value
// the result to *value and returns true; otherwise leaves *value
// unchanged and returns false.
// unchanged and returns false.
...
@@ -88,6 +90,8 @@ static std::string FlagToEnvVar(const char* flag) {
...
@@ -88,6 +90,8 @@ static std::string FlagToEnvVar(const char* flag) {
return
"BENCHMARK_"
+
env_var
;
return
"BENCHMARK_"
+
env_var
;
}
}
}
// namespace
// Reads and returns the Boolean environment variable corresponding to
// Reads and returns the Boolean environment variable corresponding to
// the given flag; if it's not set, returns default_value.
// the given flag; if it's not set, returns default_value.
//
//
...
...
src/commandlineflags.h
View file @
1d41de84
...
@@ -23,16 +23,10 @@
...
@@ -23,16 +23,10 @@
std::string FLAG(name) = (default_val)
std::string FLAG(name) = (default_val)
namespace
benchmark
{
namespace
benchmark
{
// Parses 'str' for a 32-bit signed integer. If successful, writes the result
// to *value and returns true; otherwise leaves *value unchanged and returns
// false.
bool
ParseInt32
(
const
std
::
string
&
src_text
,
const
char
*
str
,
int32_t
*
value
);
// Parses a bool/Int32/string from the environment variable
// Parses a bool/Int32/string from the environment variable
// corresponding to the given Google Test flag.
// corresponding to the given Google Test flag.
bool
BoolFromEnv
(
const
char
*
flag
,
bool
default_val
);
bool
BoolFromEnv
(
const
char
*
flag
,
bool
default_val
);
int32_t
Int32FromEnv
(
const
char
*
flag
,
int32_t
default_val
);
int32_t
Int32FromEnv
(
const
char
*
flag
,
int32_t
default_val
);
double
DoubleFromEnv
(
const
char
*
flag
,
double
default_val
);
const
char
*
StringFromEnv
(
const
char
*
flag
,
const
char
*
default_val
);
const
char
*
StringFromEnv
(
const
char
*
flag
,
const
char
*
default_val
);
// Parses a string for a bool flag, in the form of either
// Parses a string for a bool flag, in the form of either
...
...
test/CMakeLists.txt
View file @
1d41de84
...
@@ -195,6 +195,7 @@ if (BENCHMARK_ENABLE_GTEST_TESTS)
...
@@ -195,6 +195,7 @@ if (BENCHMARK_ENABLE_GTEST_TESTS)
add_gtest
(
benchmark_gtest
)
add_gtest
(
benchmark_gtest
)
add_gtest
(
benchmark_name_gtest
)
add_gtest
(
benchmark_name_gtest
)
add_gtest
(
commandlineflags_gtest
)
add_gtest
(
statistics_gtest
)
add_gtest
(
statistics_gtest
)
add_gtest
(
string_util_gtest
)
add_gtest
(
string_util_gtest
)
endif
(
BENCHMARK_ENABLE_GTEST_TESTS
)
endif
(
BENCHMARK_ENABLE_GTEST_TESTS
)
...
...
test/commandlineflags_gtest.cc
0 → 100644
View file @
1d41de84
#include <cstdlib>
#include "../src/commandlineflags.h"
#include "../src/internal_macros.h"
#include "gtest/gtest.h"
namespace
benchmark
{
namespace
{
#if defined(BENCHMARK_OS_WINDOWS)
int
setenv
(
const
char
*
name
,
const
char
*
value
,
int
overwrite
)
{
if
(
!
overwrite
)
{
// NOTE: getenv_s is far superior but not available under mingw.
char
*
env_value
=
getenv
(
name
);
if
(
env_value
==
nullptr
)
{
return
-
1
;
}
}
return
_putenv_s
(
name
,
value
);
}
int
unsetenv
(
const
char
*
name
)
{
return
_putenv_s
(
name
,
""
);
}
#endif // BENCHMARK_OS_WINDOWS
TEST
(
BoolFromEnv
,
Default
)
{
ASSERT_EQ
(
unsetenv
(
"BENCHMARK_NOT_IN_ENV"
),
0
);
EXPECT_EQ
(
BoolFromEnv
(
"not_in_env"
,
true
),
true
);
}
TEST
(
BoolFromEnv
,
False
)
{
ASSERT_EQ
(
setenv
(
"BENCHMARK_IN_ENV"
,
"0"
,
1
),
0
);
EXPECT_EQ
(
BoolFromEnv
(
"in_env"
,
true
),
false
);
unsetenv
(
"BENCHMARK_IN_ENV"
);
}
TEST
(
BoolFromEnv
,
True
)
{
ASSERT_EQ
(
setenv
(
"BENCHMARK_IN_ENV"
,
"1"
,
1
),
0
);
EXPECT_EQ
(
BoolFromEnv
(
"in_env"
,
false
),
true
);
unsetenv
(
"BENCHMARK_IN_ENV"
);
ASSERT_EQ
(
setenv
(
"BENCHMARK_IN_ENV"
,
"foo"
,
1
),
0
);
EXPECT_EQ
(
BoolFromEnv
(
"in_env"
,
false
),
true
);
unsetenv
(
"BENCHMARK_IN_ENV"
);
}
TEST
(
Int32FromEnv
,
NotInEnv
)
{
ASSERT_EQ
(
unsetenv
(
"BENCHMARK_NOT_IN_ENV"
),
0
);
EXPECT_EQ
(
Int32FromEnv
(
"not_in_env"
,
42
),
42
);
}
TEST
(
Int32FromEnv
,
InvalidInteger
)
{
ASSERT_EQ
(
setenv
(
"BENCHMARK_IN_ENV"
,
"foo"
,
1
),
0
);
EXPECT_EQ
(
Int32FromEnv
(
"in_env"
,
42
),
42
);
ASSERT_EQ
(
unsetenv
(
"BENCHMARK_IN_ENV"
),
0
);
}
TEST
(
Int32FromEnv
,
ValidInteger
)
{
ASSERT_EQ
(
setenv
(
"BENCHMARK_IN_ENV"
,
"42"
,
1
),
0
);
EXPECT_EQ
(
Int32FromEnv
(
"in_env"
,
64
),
42
);
unsetenv
(
"BENCHMARK_IN_ENV"
);
}
TEST
(
StringFromEnv
,
Default
)
{
ASSERT_EQ
(
unsetenv
(
"BENCHMARK_NOT_IN_ENV"
),
0
);
EXPECT_STREQ
(
StringFromEnv
(
"not_in_env"
,
"foo"
),
"foo"
);
}
TEST
(
StringFromEnv
,
Valid
)
{
ASSERT_EQ
(
setenv
(
"BENCHMARK_IN_ENV"
,
"foo"
,
1
),
0
);
EXPECT_STREQ
(
StringFromEnv
(
"in_env"
,
"bar"
),
"foo"
);
unsetenv
(
"BENCHMARK_IN_ENV"
);
}
}
// namespace
}
// namespace benchmark
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment