mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-04-29 12:13:52 +00:00
Spelling (#429)
* spelling: argument * spelling: conflicts * spelling: correctly * spelling: default * spelling: description * spelling: empty * spelling: enum * spelling: javascript * spelling: modifying * spelling: nonexistent * spelling: plumbum * spelling: programmatically * spelling: received * spelling: replaced * spelling: required * spelling: sanitizers * spelling: semicolon * spelling: source * spelling: subcommands * spelling: successful
This commit is contained in:
parent
34bfa38691
commit
51a0efcbbc
2
.github/actions/cmake_config/entrypoint.sh
vendored
2
.github/actions/cmake_config/entrypoint.sh
vendored
@ -10,7 +10,7 @@ rm -rf cmake_dir/* build_tmp/*
|
|||||||
v=$1
|
v=$1
|
||||||
fn=cmake-$v-Linux-x86_64.tar.gz
|
fn=cmake-$v-Linux-x86_64.tar.gz
|
||||||
|
|
||||||
if [ ! -f cmake_souces/$fn ]; then
|
if [ ! -f cmake_sources/$fn ]; then
|
||||||
wget -qO cmake_sources/$fn "https://cmake.org/files/v${v%.*}/$fn"
|
wget -qO cmake_sources/$fn "https://cmake.org/files/v${v%.*}/$fn"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -333,7 +333,7 @@ This is a quick patch release that makes LICENSE part of the single header file,
|
|||||||
|
|
||||||
### Version 1.5.1: Access
|
### Version 1.5.1: Access
|
||||||
|
|
||||||
This patch release adds better access to the App progromatically, to assist with writing custom converters to other formats. It also improves the help output, and uses a new feature in CLI11 1.5 to fix an old "quirk" in the way unlimited options and positionals interact.
|
This patch release adds better access to the App programmatically, to assist with writing custom converters to other formats. It also improves the help output, and uses a new feature in CLI11 1.5 to fix an old "quirk" in the way unlimited options and positionals interact.
|
||||||
|
|
||||||
* Make mixing unlimited positionals and options more intuitive [#102]
|
* Make mixing unlimited positionals and options more intuitive [#102]
|
||||||
* Add missing getters `get_options` and `get_description` to App [#105]
|
* Add missing getters `get_options` and `get_description` to App [#105]
|
||||||
@ -360,7 +360,7 @@ Note: This is the final release with `requires`, please switch to `needs`.
|
|||||||
* Support for `std::optional`, `std::experimental::optional`, and `boost::optional` added if `__has_include` is supported [#95]
|
* Support for `std::optional`, `std::experimental::optional`, and `boost::optional` added if `__has_include` is supported [#95]
|
||||||
* All macros/CMake variables now start with `CLI11_` instead of just `CLI_` [#95]
|
* All macros/CMake variables now start with `CLI11_` instead of just `CLI_` [#95]
|
||||||
* The internal stream was not being cleared before use in some cases. Fixed. [#95]
|
* The internal stream was not being cleared before use in some cases. Fixed. [#95]
|
||||||
* Using an emum now requires explicit conversion overload [#97]
|
* Using an enum now requires explicit conversion overload [#97]
|
||||||
* The separator `--` now is removed when it ends unlimited arguments [#100]
|
* The separator `--` now is removed when it ends unlimited arguments [#100]
|
||||||
|
|
||||||
Other, non-user facing changes:
|
Other, non-user facing changes:
|
||||||
@ -551,7 +551,7 @@ Lots of cleanup and docs additions made it into this release. Parsing is simpler
|
|||||||
## Version 0.3: Plumbum compatibility
|
## Version 0.3: Plumbum compatibility
|
||||||
|
|
||||||
* Added `->requires`, `->excludes`, and `->envname` from [Plumbum](http://plumbum.readthedocs.io/en/latest/)
|
* Added `->requires`, `->excludes`, and `->envname` from [Plumbum](http://plumbum.readthedocs.io/en/latest/)
|
||||||
* Supports `->mandatory` from Plubmum
|
* Supports `->mandatory` from Plumbum
|
||||||
* More tests for help strings, improvements in formatting
|
* More tests for help strings, improvements in formatting
|
||||||
* Support type and set syntax in positionals help strings
|
* Support type and set syntax in positionals help strings
|
||||||
* Added help groups, with `->group("name")` syntax
|
* Added help groups, with `->group("name")` syntax
|
||||||
|
@ -51,7 +51,7 @@ list(APPEND build-docs "EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/docs")
|
|||||||
option(CLI11_WARNINGS_AS_ERRORS "Turn all warnings into errors (for CI)")
|
option(CLI11_WARNINGS_AS_ERRORS "Turn all warnings into errors (for CI)")
|
||||||
option(CLI11_SINGLE_FILE "Generate a single header file")
|
option(CLI11_SINGLE_FILE "Generate a single header file")
|
||||||
cmake_dependent_option(CLI11_SANITIZERS
|
cmake_dependent_option(CLI11_SANITIZERS
|
||||||
"Download the sanatizers CMake config" OFF
|
"Download the sanitizers CMake config" OFF
|
||||||
"NOT CMAKE_VERSION VERSION_LESS 3.11" OFF)
|
"NOT CMAKE_VERSION VERSION_LESS 3.11" OFF)
|
||||||
|
|
||||||
cmake_dependent_option(CLI11_BUILD_DOCS
|
cmake_dependent_option(CLI11_BUILD_DOCS
|
||||||
@ -89,7 +89,7 @@ cmake_dependent_option(CLI11_CUDA_TESTS
|
|||||||
cmake_dependent_option(CLI11_CLANG_TIDY
|
cmake_dependent_option(CLI11_CLANG_TIDY
|
||||||
"Look for and use Clang-Tidy" OFF
|
"Look for and use Clang-Tidy" OFF
|
||||||
"CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME;NOT CMAKE_VERSION VERSION_LESS 3.6" OFF)
|
"CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME;NOT CMAKE_VERSION VERSION_LESS 3.6" OFF)
|
||||||
set(CLI11_CLANG_TIDY_OPTIONS "" CACHE STRING "Clang tidy options, such as -fix, simicolon separated")
|
set(CLI11_CLANG_TIDY_OPTIONS "" CACHE STRING "Clang tidy options, such as -fix, semicolon separated")
|
||||||
|
|
||||||
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND NOT DEFINED CMAKE_CXX_STANDARD)
|
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND NOT DEFINED CMAKE_CXX_STANDARD)
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
set(CMAKE_CXX_STANDARD 11)
|
||||||
|
@ -3,7 +3,7 @@ linelength=120 # As in .clang-format
|
|||||||
|
|
||||||
# Non-used filters
|
# Non-used filters
|
||||||
filter=-build/include_order # Requires unusual include order that encourages creating not self-contained headers
|
filter=-build/include_order # Requires unusual include order that encourages creating not self-contained headers
|
||||||
filter=-readability/nolint # Conficts with clang-tidy
|
filter=-readability/nolint # Conflicts with clang-tidy
|
||||||
filter=-runtime/references # Requires fundamental change of API, don't see need for this
|
filter=-runtime/references # Requires fundamental change of API, don't see need for this
|
||||||
filter=-whitespace/blank_line # Unnecessarily strict with blank lines that otherwise help with readability
|
filter=-whitespace/blank_line # Unnecessarily strict with blank lines that otherwise help with readability
|
||||||
filter=-whitespace/parens,-whitespace/braces # Conflict with clang-format
|
filter=-whitespace/parens,-whitespace/braces # Conflict with clang-format
|
||||||
|
@ -105,7 +105,7 @@ CLI::Option* opt = app.add_flag("--opt");
|
|||||||
CLI11_PARSE(app, argv, argc);
|
CLI11_PARSE(app, argv, argc);
|
||||||
|
|
||||||
if(* opt)
|
if(* opt)
|
||||||
std::cout << "Flag recieved " << opt->count() << " times." << std::endl;
|
std::cout << "Flag received " << opt->count() << " times." << std::endl;
|
||||||
```
|
```
|
||||||
|
|
||||||
## Inheritance of defaults
|
## Inheritance of defaults
|
||||||
|
@ -280,7 +280,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
|
|||||||
# parses. With this tag you can assign which parser to use for a given
|
# parses. With this tag you can assign which parser to use for a given
|
||||||
# extension. Doxygen has a built-in mapping, but you can override or extend it
|
# extension. Doxygen has a built-in mapping, but you can override or extend it
|
||||||
# using this tag. The format is ext=language, where ext is a file extension, and
|
# using this tag. The format is ext=language, where ext is a file extension, and
|
||||||
# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
|
# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
|
||||||
# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
|
# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
|
||||||
# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
|
# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
|
||||||
# Fortran. In the later case the parser tries to guess whether the code is fixed
|
# Fortran. In the later case the parser tries to guess whether the code is fixed
|
||||||
@ -1508,7 +1508,7 @@ FORMULA_FONTSIZE = 10
|
|||||||
FORMULA_TRANSPARENT = YES
|
FORMULA_TRANSPARENT = YES
|
||||||
|
|
||||||
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
|
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
|
||||||
# http://www.mathjax.org) which uses client side Javascript for the rendering
|
# http://www.mathjax.org) which uses client side JavaScript for the rendering
|
||||||
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
|
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
|
||||||
# installed or if you want to formulas look prettier in the HTML output. When
|
# installed or if you want to formulas look prettier in the HTML output. When
|
||||||
# enabled you may also need to install MathJax separately and configure the path
|
# enabled you may also need to install MathJax separately and configure the path
|
||||||
@ -1578,7 +1578,7 @@ MATHJAX_CODEFILE =
|
|||||||
SEARCHENGINE = YES
|
SEARCHENGINE = YES
|
||||||
|
|
||||||
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
|
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
|
||||||
# implemented using a web server instead of a web client using Javascript. There
|
# implemented using a web server instead of a web client using JavaScript. There
|
||||||
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
|
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
|
||||||
# setting. When disabled, doxygen will generate a PHP script for searching and
|
# setting. When disabled, doxygen will generate a PHP script for searching and
|
||||||
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
|
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
|
||||||
|
@ -17,7 +17,7 @@ int main(int argc, char **argv) {
|
|||||||
auto foo = app.add_option("--foo,-f", foos, "Some unlimited argument");
|
auto foo = app.add_option("--foo,-f", foos, "Some unlimited argument");
|
||||||
|
|
||||||
std::vector<int> bars;
|
std::vector<int> bars;
|
||||||
auto bar = app.add_option("--bar", bars, "Some unlimited arggument");
|
auto bar = app.add_option("--bar", bars, "Some unlimited argument");
|
||||||
|
|
||||||
app.add_flag("--z,--x", "Random other flags");
|
app.add_flag("--z,--x", "Random other flags");
|
||||||
|
|
||||||
|
@ -984,7 +984,7 @@ class App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
/// @name Subcommmands
|
/// @name Subcommands
|
||||||
///@{
|
///@{
|
||||||
|
|
||||||
/// Add a subcommand. Inherits INHERITABLE and OptionDefaults, and help flag
|
/// Add a subcommand. Inherits INHERITABLE and OptionDefaults, and help flag
|
||||||
|
@ -246,11 +246,11 @@ class RequiredError : public ParseError {
|
|||||||
class ArgumentMismatch : public ParseError {
|
class ArgumentMismatch : public ParseError {
|
||||||
CLI11_ERROR_DEF(ParseError, ArgumentMismatch)
|
CLI11_ERROR_DEF(ParseError, ArgumentMismatch)
|
||||||
CLI11_ERROR_SIMPLE(ArgumentMismatch)
|
CLI11_ERROR_SIMPLE(ArgumentMismatch)
|
||||||
ArgumentMismatch(std::string name, int expected, std::size_t recieved)
|
ArgumentMismatch(std::string name, int expected, std::size_t received)
|
||||||
: ArgumentMismatch(expected > 0 ? ("Expected exactly " + std::to_string(expected) + " arguments to " + name +
|
: ArgumentMismatch(expected > 0 ? ("Expected exactly " + std::to_string(expected) + " arguments to " + name +
|
||||||
", got " + std::to_string(recieved))
|
", got " + std::to_string(received))
|
||||||
: ("Expected at least " + std::to_string(-expected) + " arguments to " + name +
|
: ("Expected at least " + std::to_string(-expected) + " arguments to " + name +
|
||||||
", got " + std::to_string(recieved)),
|
", got " + std::to_string(received)),
|
||||||
ExitCodes::ArgumentMismatch) {}
|
ExitCodes::ArgumentMismatch) {}
|
||||||
|
|
||||||
static ArgumentMismatch AtLeast(std::string name, int num, std::size_t received) {
|
static ArgumentMismatch AtLeast(std::string name, int num, std::size_t received) {
|
||||||
|
@ -282,7 +282,7 @@ class CustomValidator : public Validator {
|
|||||||
namespace detail {
|
namespace detail {
|
||||||
|
|
||||||
/// CLI enumeration of different file types
|
/// CLI enumeration of different file types
|
||||||
enum class path_type { nonexistant, file, directory };
|
enum class path_type { nonexistent, file, directory };
|
||||||
|
|
||||||
#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0
|
#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0
|
||||||
/// get the type of the path from a file name
|
/// get the type of the path from a file name
|
||||||
@ -290,12 +290,12 @@ inline path_type check_path(const char *file) noexcept {
|
|||||||
std::error_code ec;
|
std::error_code ec;
|
||||||
auto stat = std::filesystem::status(file, ec);
|
auto stat = std::filesystem::status(file, ec);
|
||||||
if(ec) {
|
if(ec) {
|
||||||
return path_type::nonexistant;
|
return path_type::nonexistent;
|
||||||
}
|
}
|
||||||
switch(stat.type()) {
|
switch(stat.type()) {
|
||||||
case std::filesystem::file_type::none:
|
case std::filesystem::file_type::none:
|
||||||
case std::filesystem::file_type::not_found:
|
case std::filesystem::file_type::not_found:
|
||||||
return path_type::nonexistant;
|
return path_type::nonexistent;
|
||||||
case std::filesystem::file_type::directory:
|
case std::filesystem::file_type::directory:
|
||||||
return path_type::directory;
|
return path_type::directory;
|
||||||
case std::filesystem::file_type::symlink:
|
case std::filesystem::file_type::symlink:
|
||||||
@ -323,7 +323,7 @@ inline path_type check_path(const char *file) noexcept {
|
|||||||
return ((buffer.st_mode & S_IFDIR) != 0) ? path_type::directory : path_type::file;
|
return ((buffer.st_mode & S_IFDIR) != 0) ? path_type::directory : path_type::file;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return path_type::nonexistant;
|
return path_type::nonexistent;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/// Check for an existing file (returns error message if check fails)
|
/// Check for an existing file (returns error message if check fails)
|
||||||
@ -332,7 +332,7 @@ class ExistingFileValidator : public Validator {
|
|||||||
ExistingFileValidator() : Validator("FILE") {
|
ExistingFileValidator() : Validator("FILE") {
|
||||||
func_ = [](std::string &filename) {
|
func_ = [](std::string &filename) {
|
||||||
auto path_result = check_path(filename.c_str());
|
auto path_result = check_path(filename.c_str());
|
||||||
if(path_result == path_type::nonexistant) {
|
if(path_result == path_type::nonexistent) {
|
||||||
return "File does not exist: " + filename;
|
return "File does not exist: " + filename;
|
||||||
}
|
}
|
||||||
if(path_result == path_type::directory) {
|
if(path_result == path_type::directory) {
|
||||||
@ -349,7 +349,7 @@ class ExistingDirectoryValidator : public Validator {
|
|||||||
ExistingDirectoryValidator() : Validator("DIR") {
|
ExistingDirectoryValidator() : Validator("DIR") {
|
||||||
func_ = [](std::string &filename) {
|
func_ = [](std::string &filename) {
|
||||||
auto path_result = check_path(filename.c_str());
|
auto path_result = check_path(filename.c_str());
|
||||||
if(path_result == path_type::nonexistant) {
|
if(path_result == path_type::nonexistent) {
|
||||||
return "Directory does not exist: " + filename;
|
return "Directory does not exist: " + filename;
|
||||||
}
|
}
|
||||||
if(path_result == path_type::file) {
|
if(path_result == path_type::file) {
|
||||||
@ -366,7 +366,7 @@ class ExistingPathValidator : public Validator {
|
|||||||
ExistingPathValidator() : Validator("PATH(existing)") {
|
ExistingPathValidator() : Validator("PATH(existing)") {
|
||||||
func_ = [](std::string &filename) {
|
func_ = [](std::string &filename) {
|
||||||
auto path_result = check_path(filename.c_str());
|
auto path_result = check_path(filename.c_str());
|
||||||
if(path_result == path_type::nonexistant) {
|
if(path_result == path_type::nonexistent) {
|
||||||
return "Path does not exist: " + filename;
|
return "Path does not exist: " + filename;
|
||||||
}
|
}
|
||||||
return std::string();
|
return std::string();
|
||||||
@ -380,7 +380,7 @@ class NonexistentPathValidator : public Validator {
|
|||||||
NonexistentPathValidator() : Validator("PATH(non-existing)") {
|
NonexistentPathValidator() : Validator("PATH(non-existing)") {
|
||||||
func_ = [](std::string &filename) {
|
func_ = [](std::string &filename) {
|
||||||
auto path_result = check_path(filename.c_str());
|
auto path_result = check_path(filename.c_str());
|
||||||
if(path_result != path_type::nonexistant) {
|
if(path_result != path_type::nonexistent) {
|
||||||
return "Path already exists: " + filename;
|
return "Path already exists: " + filename;
|
||||||
}
|
}
|
||||||
return std::string();
|
return std::string();
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
|
||||||
CLI::App app("Some nice discription");
|
CLI::App app("Some nice description");
|
||||||
|
|
||||||
int x = 0;
|
int x = 0;
|
||||||
app.add_option("-x", x, "an integer value", true /* show default */);
|
app.add_option("-x", x, "an integer value", true /* show default */);
|
||||||
|
@ -1394,7 +1394,7 @@ TEST_F(TApp, RequireOptPriorityShort) {
|
|||||||
EXPECT_EQ(remain, std::vector<std::string>({"two", "three"}));
|
EXPECT_EQ(remain, std::vector<std::string>({"two", "three"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TApp, NotRequiedExpectedDouble) {
|
TEST_F(TApp, NotRequiredExpectedDouble) {
|
||||||
|
|
||||||
std::vector<std::string> strs;
|
std::vector<std::string> strs;
|
||||||
app.add_option("--str", strs)->expected(2);
|
app.add_option("--str", strs)->expected(2);
|
||||||
@ -1404,7 +1404,7 @@ TEST_F(TApp, NotRequiedExpectedDouble) {
|
|||||||
EXPECT_THROW(run(), CLI::ArgumentMismatch);
|
EXPECT_THROW(run(), CLI::ArgumentMismatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TApp, NotRequiedExpectedDoubleShort) {
|
TEST_F(TApp, NotRequiredExpectedDoubleShort) {
|
||||||
|
|
||||||
std::vector<std::string> strs;
|
std::vector<std::string> strs;
|
||||||
app.add_option("-s", strs)->expected(2);
|
app.add_option("-s", strs)->expected(2);
|
||||||
@ -2338,7 +2338,7 @@ TEST_F(TApp, OptionWithDefaults) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Added to test ->transform
|
// Added to test ->transform
|
||||||
TEST_F(TApp, OrderedModifingTransforms) {
|
TEST_F(TApp, OrderedModifyingTransforms) {
|
||||||
std::vector<std::string> val;
|
std::vector<std::string> val;
|
||||||
auto m = app.add_option("-m", val);
|
auto m = app.add_option("-m", val);
|
||||||
m->transform([](std::string x) { return x + "1"; });
|
m->transform([](std::string x) { return x + "1"; });
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
using ::testing::HasSubstr;
|
using ::testing::HasSubstr;
|
||||||
using ::testing::Not;
|
using ::testing::Not;
|
||||||
|
|
||||||
TEST(Deprecated, Emtpy) {
|
TEST(Deprecated, Empty) {
|
||||||
// No deprecated features at this time.
|
// No deprecated features at this time.
|
||||||
EXPECT_TRUE(true);
|
EXPECT_TRUE(true);
|
||||||
}
|
}
|
||||||
|
@ -731,7 +731,7 @@ struct CapturedHelp : public ::testing::Test {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(CapturedHelp, Sucessful) {
|
TEST_F(CapturedHelp, Successful) {
|
||||||
EXPECT_EQ(run(CLI::Success()), 0);
|
EXPECT_EQ(run(CLI::Success()), 0);
|
||||||
EXPECT_EQ(out.str(), "");
|
EXPECT_EQ(out.str(), "");
|
||||||
EXPECT_EQ(err.str(), "");
|
EXPECT_EQ(err.str(), "");
|
||||||
@ -825,7 +825,7 @@ TEST_F(CapturedHelp, AllOnlyError) {
|
|||||||
EXPECT_THAT(err.str(), Not(HasSubstr("Usage")));
|
EXPECT_THAT(err.str(), Not(HasSubstr("Usage")));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(CapturedHelp, RepacedError) {
|
TEST_F(CapturedHelp, ReplacedError) {
|
||||||
app.failure_message(CLI::FailureMessage::help);
|
app.failure_message(CLI::FailureMessage::help);
|
||||||
|
|
||||||
EXPECT_EQ(run(CLI::ExtrasError({"Thing"})), static_cast<int>(CLI::ExitCodes::ExtrasError));
|
EXPECT_EQ(run(CLI::ExtrasError({"Thing"})), static_cast<int>(CLI::ExitCodes::ExtrasError));
|
||||||
@ -995,7 +995,7 @@ TEST(THelp, CombinedValidatorsText) {
|
|||||||
app.add_option("--f1", filename)->check(CLI::ExistingFile | CLI::ExistingDirectory);
|
app.add_option("--f1", filename)->check(CLI::ExistingFile | CLI::ExistingDirectory);
|
||||||
|
|
||||||
// This would be nice if it put something other than string, but would it be path or file?
|
// This would be nice if it put something other than string, but would it be path or file?
|
||||||
// Can't programatically tell!
|
// Can't programmatically tell!
|
||||||
// (Users can use ExistingPath, by the way)
|
// (Users can use ExistingPath, by the way)
|
||||||
std::string help = app.help();
|
std::string help = app.help();
|
||||||
EXPECT_THAT(help, HasSubstr("TEXT:(FILE) OR (DIR)"));
|
EXPECT_THAT(help, HasSubstr("TEXT:(FILE) OR (DIR)"));
|
||||||
|
@ -104,7 +104,7 @@ TEST_F(TApp, CrazyNameSubcommand) {
|
|||||||
EXPECT_EQ(sub1->count(), 1u);
|
EXPECT_EQ(sub1->count(), 1u);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TApp, RequiredAndSubcoms) { // #23
|
TEST_F(TApp, RequiredAndSubcommands) { // #23
|
||||||
|
|
||||||
std::string baz;
|
std::string baz;
|
||||||
app.add_option("baz", baz, "Baz Description", true)->required();
|
app.add_option("baz", baz, "Baz Description", true)->required();
|
||||||
@ -719,7 +719,7 @@ TEST_F(TApp, Required1SubCom) {
|
|||||||
EXPECT_THROW(run(), CLI::ExtrasError);
|
EXPECT_THROW(run(), CLI::ExtrasError);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TApp, BadSubcomSearch) {
|
TEST_F(TApp, BadSubcommandSearch) {
|
||||||
|
|
||||||
auto one = app.add_subcommand("one");
|
auto one = app.add_subcommand("one");
|
||||||
auto two = one->add_subcommand("two");
|
auto two = one->add_subcommand("two");
|
||||||
|
@ -104,7 +104,7 @@ TEST_F(TApp, EnumCheckedTransform) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// from jzakrzewski Issue #330
|
// from jzakrzewski Issue #330
|
||||||
TEST_F(TApp, EnumCheckedDefualtTransform) {
|
TEST_F(TApp, EnumCheckedDefaultTransform) {
|
||||||
enum class existing : std::int16_t { abort, overwrite, remove };
|
enum class existing : std::int16_t { abort, overwrite, remove };
|
||||||
app.add_option("--existing", "What to do if file already exists in the destination")
|
app.add_option("--existing", "What to do if file already exists in the destination")
|
||||||
->transform(
|
->transform(
|
||||||
@ -541,7 +541,7 @@ TEST_F(TApp, BoundTests) {
|
|||||||
EXPECT_TRUE(help.find("[3.4 - 5.9]") != std::string::npos);
|
EXPECT_TRUE(help.find("[3.4 - 5.9]") != std::string::npos);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(TApp, NumberWithUnitCorrecltySplitNumber) {
|
TEST_F(TApp, NumberWithUnitCorrectlySplitNumber) {
|
||||||
std::map<std::string, int> mapping{{"a", 10}, {"b", 100}, {"cc", 1000}};
|
std::map<std::string, int> mapping{{"a", 10}, {"b", 100}, {"cc", 1000}};
|
||||||
|
|
||||||
int value = 0;
|
int value = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user