File: test_version.cpp

package info (click to toggle)
libargparse 3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 896 kB
  • sloc: cpp: 11,319; python: 8; makefile: 4; sh: 3
file content (40 lines) | stat: -rw-r--r-- 1,356 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifdef WITH_MODULE
import argparse;
#else
#include <argparse/argparse.hpp>
#endif
#include <doctest.hpp>
#include <sstream>

using doctest::test_suite;

TEST_CASE("Users can print version and exit" * test_suite("version") *
          doctest::skip()) {
  argparse::ArgumentParser program("cli-test", "1.9.0");
  program.add_argument("-d", "--dir").required();
  program.parse_args({"test", "--version"});
  REQUIRE(program.get("--version") == "1.9.0");
}

TEST_CASE("Users can disable default -v/--version" * test_suite("version")) {
  argparse::ArgumentParser program("test", "1.0",
                                   argparse::default_arguments::help);
  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")) {
  std::string version{"3.1415"};
  argparse::ArgumentParser program("test", version,
                                   argparse::default_arguments::help);
  std::stringstream buffer;
  program.add_argument("-v", "--version")
      .action([&](const auto &) { buffer << version; })
      .default_value(true)
      .implicit_value(false)
      .nargs(0);

  REQUIRE(buffer.str().empty());
  program.parse_args({"test", "--version"});
  REQUIRE_FALSE(buffer.str().empty());
}