mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 13:26:10 +01:00
Arg::parse accepts plain Args as argument
This commit is contained in:
parent
2baa472bcc
commit
135103bacf
@ -50,7 +50,7 @@ namespace Catch {
|
|||||||
analysis.outlier_variance,
|
analysis.outlier_variance,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
std::vector<Duration> samples;
|
std::vector<Duration> samples;
|
||||||
samples.reserve(last - first);
|
samples.reserve(last - first);
|
||||||
|
|
||||||
Duration mean = Duration(0);
|
Duration mean = Duration(0);
|
||||||
|
@ -494,6 +494,7 @@ namespace Catch {
|
|||||||
class Arg : public Detail::ParserRefImpl<Arg> {
|
class Arg : public Detail::ParserRefImpl<Arg> {
|
||||||
public:
|
public:
|
||||||
using ParserRefImpl::ParserRefImpl;
|
using ParserRefImpl::ParserRefImpl;
|
||||||
|
using ParserBase::parse;
|
||||||
|
|
||||||
Detail::InternalParseResult
|
Detail::InternalParseResult
|
||||||
parse(std::string const&,
|
parse(std::string const&,
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
|
|
||||||
namespace Catch {
|
namespace Catch {
|
||||||
|
|
||||||
struct ITransientExpression;
|
struct ITransientExpression;
|
||||||
|
|
||||||
class LazyExpression {
|
class LazyExpression {
|
||||||
|
@ -16,6 +16,7 @@ endif(MSVC) #Temporary workaround
|
|||||||
# Please keep these ordered alphabetically
|
# Please keep these ordered alphabetically
|
||||||
set(TEST_SOURCES
|
set(TEST_SOURCES
|
||||||
${SELF_TEST_DIR}/TestRegistrations.cpp
|
${SELF_TEST_DIR}/TestRegistrations.cpp
|
||||||
|
${SELF_TEST_DIR}/IntrospectiveTests/Clara.tests.cpp
|
||||||
${SELF_TEST_DIR}/IntrospectiveTests/CmdLine.tests.cpp
|
${SELF_TEST_DIR}/IntrospectiveTests/CmdLine.tests.cpp
|
||||||
${SELF_TEST_DIR}/IntrospectiveTests/Details.tests.cpp
|
${SELF_TEST_DIR}/IntrospectiveTests/Details.tests.cpp
|
||||||
${SELF_TEST_DIR}/IntrospectiveTests/GeneratorsImpl.tests.cpp
|
${SELF_TEST_DIR}/IntrospectiveTests/GeneratorsImpl.tests.cpp
|
||||||
|
@ -99,6 +99,7 @@ Nor would this
|
|||||||
:test-result: PASS CAPTURE parses string and character constants
|
:test-result: PASS CAPTURE parses string and character constants
|
||||||
:test-result: PASS Capture and info messages
|
:test-result: PASS Capture and info messages
|
||||||
:test-result: PASS Character pretty printing
|
:test-result: PASS Character pretty printing
|
||||||
|
:test-result: PASS Clara::Arg supports single-arg parse the way Opt does
|
||||||
:test-result: PASS Combining MatchAllOfGeneric does not nest
|
:test-result: PASS Combining MatchAllOfGeneric does not nest
|
||||||
:test-result: PASS Combining MatchAnyOfGeneric does not nest
|
:test-result: PASS Combining MatchAnyOfGeneric does not nest
|
||||||
:test-result: PASS Combining MatchNotOfGeneric does not nest
|
:test-result: PASS Combining MatchNotOfGeneric does not nest
|
||||||
|
@ -344,6 +344,8 @@ ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 2 == 2
|
|||||||
ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 3 == 3
|
ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 3 == 3
|
||||||
ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 4 == 4
|
ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 4 == 4
|
||||||
ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 5 == 5
|
ToStringGeneral.tests.cpp:<line number>: passed: c == i for: 5 == 5
|
||||||
|
Clara.tests.cpp:<line number>: passed: name.empty() for: true
|
||||||
|
Clara.tests.cpp:<line number>: passed: name == "foo" for: "foo" == "foo"
|
||||||
Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype((MatcherA() && MatcherB()) && MatcherC()), Catch::Matchers::Detail::MatchAllOfGeneric<MatcherA, MatcherB, MatcherC> >::value'
|
Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype((MatcherA() && MatcherB()) && MatcherC()), Catch::Matchers::Detail::MatchAllOfGeneric<MatcherA, MatcherB, MatcherC> >::value'
|
||||||
Matchers.tests.cpp:<line number>: passed: 1, (MatcherA() && MatcherB()) && MatcherC() for: 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 )
|
Matchers.tests.cpp:<line number>: passed: 1, (MatcherA() && MatcherB()) && MatcherC() for: 1 ( equals: (int) 1 or (float) 1.0f and equals: (long long) 1 and equals: (T) 1 )
|
||||||
Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype(MatcherA() && (MatcherB() && MatcherC())), Catch::Matchers::Detail::MatchAllOfGeneric<MatcherA, MatcherB, MatcherC> >::value'
|
Matchers.tests.cpp:<line number>: passed: with 1 message: 'std::is_same< decltype(MatcherA() && (MatcherB() && MatcherC())), Catch::Matchers::Detail::MatchAllOfGeneric<MatcherA, MatcherB, MatcherC> >::value'
|
||||||
|
@ -1380,6 +1380,6 @@ due to unexpected exception with message:
|
|||||||
Why would you throw a std::string?
|
Why would you throw a std::string?
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 350 | 276 passed | 70 failed | 4 failed as expected
|
test cases: 351 | 277 passed | 70 failed | 4 failed as expected
|
||||||
assertions: 1990 | 1838 passed | 131 failed | 21 failed as expected
|
assertions: 1992 | 1840 passed | 131 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@ -2857,6 +2857,22 @@ ToStringGeneral.tests.cpp:<line number>: PASSED:
|
|||||||
with expansion:
|
with expansion:
|
||||||
5 == 5
|
5 == 5
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Clara::Arg supports single-arg parse the way Opt does
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Clara.tests.cpp:<line number>
|
||||||
|
...............................................................................
|
||||||
|
|
||||||
|
Clara.tests.cpp:<line number>: PASSED:
|
||||||
|
CHECK( name.empty() )
|
||||||
|
with expansion:
|
||||||
|
true
|
||||||
|
|
||||||
|
Clara.tests.cpp:<line number>: PASSED:
|
||||||
|
REQUIRE( name == "foo" )
|
||||||
|
with expansion:
|
||||||
|
"foo" == "foo"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Combining MatchAllOfGeneric does not nest
|
Combining MatchAllOfGeneric does not nest
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
@ -15665,6 +15681,6 @@ Misc.tests.cpp:<line number>
|
|||||||
Misc.tests.cpp:<line number>: PASSED:
|
Misc.tests.cpp:<line number>: PASSED:
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
test cases: 350 | 260 passed | 86 failed | 4 failed as expected
|
test cases: 351 | 261 passed | 86 failed | 4 failed as expected
|
||||||
assertions: 2007 | 1838 passed | 148 failed | 21 failed as expected
|
assertions: 2009 | 1840 passed | 148 failed | 21 failed as expected
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testsuitesloose text artifact
|
<testsuitesloose text artifact
|
||||||
>
|
>
|
||||||
<testsuite name="<exe-name>" errors="17" failures="132" tests="2008" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
<testsuite name="<exe-name>" errors="17" failures="132" tests="2010" hostname="tbd" time="{duration}" timestamp="{iso8601-timestamp}">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/>
|
<property name="filters" value="~[!nonportable]~[!benchmark]~[approvals] *"/>
|
||||||
<property name="random-seed" value="1"/>
|
<property name="random-seed" value="1"/>
|
||||||
@ -376,6 +376,7 @@ Exception.tests.cpp:<line number>
|
|||||||
<testcase classname="<exe-name>.global" name="Character pretty printing/Specifically escaped" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Character pretty printing/Specifically escaped" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Character pretty printing/General chars" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Character pretty printing/General chars" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Character pretty printing/Low ASCII" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Character pretty printing/Low ASCII" time="{duration}" status="run"/>
|
||||||
|
<testcase classname="<exe-name>.global" name="Clara::Arg supports single-arg parse the way Opt does" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Combining MatchAllOfGeneric does not nest" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Combining MatchAllOfGeneric does not nest" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Combining MatchAnyOfGeneric does not nest" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Combining MatchAnyOfGeneric does not nest" time="{duration}" status="run"/>
|
||||||
<testcase classname="<exe-name>.global" name="Combining MatchNotOfGeneric does not nest" time="{duration}" status="run"/>
|
<testcase classname="<exe-name>.global" name="Combining MatchNotOfGeneric does not nest" time="{duration}" status="run"/>
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<testExecutions version="1"loose text artifact
|
<testExecutions version="1"loose text artifact
|
||||||
>
|
>
|
||||||
|
<file path="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp">
|
||||||
|
<testCase name="Clara::Arg supports single-arg parse the way Opt does" duration="{duration}"/>
|
||||||
|
</file>
|
||||||
<file path="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp">
|
<file path="tests/<exe-name>/IntrospectiveTests/CmdLine.tests.cpp">
|
||||||
<testCase name="#1905 -- test spec parser properly clears internal state between compound tests" duration="{duration}"/>
|
<testCase name="#1905 -- test spec parser properly clears internal state between compound tests" duration="{duration}"/>
|
||||||
<testCase name="#1912 -- test spec parser handles escaping/Various parentheses" duration="{duration}"/>
|
<testCase name="#1912 -- test spec parser handles escaping/Various parentheses" duration="{duration}"/>
|
||||||
|
@ -686,6 +686,10 @@ ok {test-number} - c == i for: 3 == 3
|
|||||||
ok {test-number} - c == i for: 4 == 4
|
ok {test-number} - c == i for: 4 == 4
|
||||||
# Character pretty printing
|
# Character pretty printing
|
||||||
ok {test-number} - c == i for: 5 == 5
|
ok {test-number} - c == i for: 5 == 5
|
||||||
|
# Clara::Arg supports single-arg parse the way Opt does
|
||||||
|
ok {test-number} - name.empty() for: true
|
||||||
|
# Clara::Arg supports single-arg parse the way Opt does
|
||||||
|
ok {test-number} - name == "foo" for: "foo" == "foo"
|
||||||
# Combining MatchAllOfGeneric does not nest
|
# Combining MatchAllOfGeneric does not nest
|
||||||
ok {test-number} - with 1 message: 'std::is_same< decltype((MatcherA() && MatcherB()) && MatcherC()), Catch::Matchers::Detail::MatchAllOfGeneric<MatcherA, MatcherB, MatcherC> >::value'
|
ok {test-number} - with 1 message: 'std::is_same< decltype((MatcherA() && MatcherB()) && MatcherC()), Catch::Matchers::Detail::MatchAllOfGeneric<MatcherA, MatcherB, MatcherC> >::value'
|
||||||
# Combining MatchAllOfGeneric does not nest
|
# Combining MatchAllOfGeneric does not nest
|
||||||
@ -4006,5 +4010,5 @@ ok {test-number} - q3 == 23. for: 23.0 == 23.0
|
|||||||
ok {test-number} -
|
ok {test-number} -
|
||||||
# xmlentitycheck
|
# xmlentitycheck
|
||||||
ok {test-number} -
|
ok {test-number} -
|
||||||
1..2007
|
1..2009
|
||||||
|
|
||||||
|
@ -231,6 +231,8 @@ Exception.tests.cpp:<line number>|nunexpected exception with message:|n "unexpe
|
|||||||
##teamcity[testFinished name='Capture and info messages' duration="{duration}"]
|
##teamcity[testFinished name='Capture and info messages' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Character pretty printing']
|
##teamcity[testStarted name='Character pretty printing']
|
||||||
##teamcity[testFinished name='Character pretty printing' duration="{duration}"]
|
##teamcity[testFinished name='Character pretty printing' duration="{duration}"]
|
||||||
|
##teamcity[testStarted name='Clara::Arg supports single-arg parse the way Opt does']
|
||||||
|
##teamcity[testFinished name='Clara::Arg supports single-arg parse the way Opt does' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Combining MatchAllOfGeneric does not nest']
|
##teamcity[testStarted name='Combining MatchAllOfGeneric does not nest']
|
||||||
##teamcity[testFinished name='Combining MatchAllOfGeneric does not nest' duration="{duration}"]
|
##teamcity[testFinished name='Combining MatchAllOfGeneric does not nest' duration="{duration}"]
|
||||||
##teamcity[testStarted name='Combining MatchAnyOfGeneric does not nest']
|
##teamcity[testStarted name='Combining MatchAnyOfGeneric does not nest']
|
||||||
|
@ -3101,6 +3101,25 @@ Nor would this
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
|
<TestCase name="Clara::Arg supports single-arg parse the way Opt does" tags="[arg][clara]" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
|
||||||
|
<Expression success="true" type="CHECK" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
name.empty()
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
true
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<Expression success="true" type="REQUIRE" filename="tests/<exe-name>/IntrospectiveTests/Clara.tests.cpp" >
|
||||||
|
<Original>
|
||||||
|
name == "foo"
|
||||||
|
</Original>
|
||||||
|
<Expanded>
|
||||||
|
"foo" == "foo"
|
||||||
|
</Expanded>
|
||||||
|
</Expression>
|
||||||
|
<OverallResult success="true"/>
|
||||||
|
</TestCase>
|
||||||
<TestCase name="Combining MatchAllOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
|
<TestCase name="Combining MatchAllOfGeneric does not nest" tags="[matchers][templated]" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
|
||||||
<Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
|
<Expression success="true" type="REQUIRE_THAT" filename="tests/<exe-name>/UsageTests/Matchers.tests.cpp" >
|
||||||
<Original>
|
<Original>
|
||||||
@ -18579,9 +18598,9 @@ loose text artifact
|
|||||||
</Section>
|
</Section>
|
||||||
<OverallResult success="true"/>
|
<OverallResult success="true"/>
|
||||||
</TestCase>
|
</TestCase>
|
||||||
<OverallResults successes="1838" failures="149" expectedFailures="21"/>
|
<OverallResults successes="1840" failures="149" expectedFailures="21"/>
|
||||||
<OverallResultsCases successes="260" failures="86" expectedFailures="4"/>
|
<OverallResultsCases successes="261" failures="86" expectedFailures="4"/>
|
||||||
</Group>
|
</Group>
|
||||||
<OverallResults successes="1838" failures="148" expectedFailures="21"/>
|
<OverallResults successes="1840" failures="148" expectedFailures="21"/>
|
||||||
<OverallResultsCases successes="260" failures="86" expectedFailures="4"/>
|
<OverallResultsCases successes="261" failures="86" expectedFailures="4"/>
|
||||||
</Catch>
|
</Catch>
|
||||||
|
22
tests/SelfTest/IntrospectiveTests/Clara.tests.cpp
Normal file
22
tests/SelfTest/IntrospectiveTests/Clara.tests.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright Catch2 Authors
|
||||||
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// https://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
// SPDX-License-Identifier: BSL-1.0
|
||||||
|
|
||||||
|
#include <catch2/catch_test_macros.hpp>
|
||||||
|
#include <catch2/internal/catch_clara.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
TEST_CASE("Clara::Arg supports single-arg parse the way Opt does", "[clara][arg][compilation]") {
|
||||||
|
std::string name;
|
||||||
|
auto p = Catch::Clara::Arg(name, "just one arg");
|
||||||
|
|
||||||
|
CHECK(name.empty());
|
||||||
|
|
||||||
|
p.parse( Catch::Clara::Args{ "UnitTest", "foo" } );
|
||||||
|
REQUIRE(name == "foo");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user