mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-05-02 05:33:53 +00:00
Adding check for Nonexistent
This commit is contained in:
parent
fb16cb93fd
commit
3061782d3f
@ -115,8 +115,11 @@ bool _ExistingDirectory(std::string filename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool _NonexistentPath(std::string filename) {
|
bool _NonexistentPath(std::string filename) {
|
||||||
|
std::cout << "Validating: " << filename << std::endl;
|
||||||
struct stat buffer;
|
struct stat buffer;
|
||||||
return stat(filename.c_str(), &buffer) != 0;
|
bool out = stat(filename.c_str(), &buffer) != 0;
|
||||||
|
std::cout << (out ? "Passed" : "Failed") << std::endl;
|
||||||
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Error : public std::runtime_error {
|
struct Error : public std::runtime_error {
|
||||||
@ -235,6 +238,12 @@ public:
|
|||||||
|
|
||||||
/// Process the callback
|
/// Process the callback
|
||||||
bool run_callback() const {
|
bool run_callback() const {
|
||||||
|
if(opts.validators.size()>0) {
|
||||||
|
for(const std::string & result : flatten_results())
|
||||||
|
for(const std::function<bool(std::string)> &vali : opts.validators)
|
||||||
|
if(!vali(result))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return callback(results);
|
return callback(results);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,6 +324,13 @@ public:
|
|||||||
return out.str();
|
return out.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> flatten_results() const {
|
||||||
|
std::vector<std::string> output;
|
||||||
|
for(const std::vector<std::string> result : results)
|
||||||
|
output.insert(std::end(output), std::begin(result), std::end(result));
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
#include "CLI.hpp"
|
#include "CLI.hpp"
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
typedef std::vector<std::string> input_t;
|
typedef std::vector<std::string> input_t;
|
||||||
|
|
||||||
@ -205,6 +205,28 @@ TEST_F(TApp, Reset) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST_F(TApp, FileNotExists) {
|
||||||
|
std::string myfile{"TestNonFileNotUsed.txt"};
|
||||||
|
EXPECT_TRUE(CLI::_NonexistentPath(myfile));
|
||||||
|
|
||||||
|
std::string filename;
|
||||||
|
app.add_option("file", filename, "", CLI::NonexistentPath);
|
||||||
|
args = {"--file", myfile};
|
||||||
|
|
||||||
|
run();
|
||||||
|
EXPECT_EQ(myfile, filename);
|
||||||
|
|
||||||
|
app.reset();
|
||||||
|
|
||||||
|
|
||||||
|
bool ok = static_cast<bool>(std::ofstream(myfile.c_str()).put('a')); // create file
|
||||||
|
EXPECT_TRUE(ok);
|
||||||
|
EXPECT_THROW(run(), CLI::ParseError);
|
||||||
|
|
||||||
|
std::remove(myfile.c_str());
|
||||||
|
EXPECT_FALSE(CLI::_ExistingFile(myfile));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(TApp, Basic) {
|
TEST_F(TApp, Basic) {
|
||||||
auto sub1 = app.add_subcommand("sub1");
|
auto sub1 = app.add_subcommand("sub1");
|
||||||
auto sub2 = app.add_subcommand("sub2");
|
auto sub2 = app.add_subcommand("sub2");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user