From 87afaba6ba3fca3e0e3c3aca9bebe0a94f294d25 Mon Sep 17 00:00:00 2001 From: Maciej Patro Date: Fri, 5 Nov 2021 09:56:17 +0100 Subject: [PATCH] Improve thrown message in case of invalid argument. Now message contains information which argument is the source of error. It's easier to spot typo/understand which part of more complex command is the source of problem. --- include/argparse/argparse.hpp | 4 ++-- test/test_invalid_arguments.cpp | 3 ++- test/test_version.cpp | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/argparse/argparse.hpp b/include/argparse/argparse.hpp index cda03e5..aa5f959 100644 --- a/include/argparse/argparse.hpp +++ b/include/argparse/argparse.hpp @@ -1089,11 +1089,11 @@ private: auto tArgument = tIterator2->second; it = tArgument->consume(it, end, tIterator2->first); } else { - throw std::runtime_error("Unknown argument"); + throw std::runtime_error("Unknown argument: " + tCurrentArgument); } } } else { - throw std::runtime_error("Unknown argument"); + throw std::runtime_error("Unknown argument: " + tCurrentArgument); } } mIsParsed = true; diff --git a/test/test_invalid_arguments.cpp b/test/test_invalid_arguments.cpp index 9750a39..bb44f1e 100644 --- a/test/test_invalid_arguments.cpp +++ b/test/test_invalid_arguments.cpp @@ -36,5 +36,6 @@ TEST_CASE("Parse unknown optional argument" * .scan<'u', unsigned long long>() .help("memory in MB to give the VMM when loading"); - REQUIRE_THROWS(bfm.parse_args({ "./test.exe", "-om" })); + REQUIRE_THROWS_WITH_AS(bfm.parse_args({"./test.exe", "-om"}), + "Unknown argument: -om", std::runtime_error); } diff --git a/test/test_version.cpp b/test/test_version.cpp index ad71b25..aba2e26 100644 --- a/test/test_version.cpp +++ b/test/test_version.cpp @@ -16,8 +16,8 @@ TEST_CASE("Users can print version and exit" * test_suite("version") TEST_CASE("Users can disable default -v/--version" * test_suite("version")) { argparse::ArgumentParser program("test", "1.0", argparse::default_arguments::help); - REQUIRE_THROWS_AS(program.parse_args({"test", "--version"}), - std::runtime_error); + REQUIRE_THROWS_WITH_AS(program.parse_args({"test", "--version"}), + "Unknown argument: --version", std::runtime_error); } TEST_CASE("Users can replace default -v/--version" * test_suite("version")) {