diff options
| author | Martin Hořeňovský | 2022-10-26 21:03:49 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2022-10-26 21:03:56 +0200 |
| commit | c6dfeb5e7dc175ca4765e884414dab52736cde9e (patch) | |
| tree | 47d165e74c30b12874aa918fb64467b003349e85 /tests/SelfTest/IntrospectiveTests/CmdLine.tests.cpp | |
| parent | 17fac854ae48aacccf299ef4026dd36e814e2e2a (diff) | |
| download | catch3-c6dfeb5e7dc175ca4765e884414dab52736cde9e.tar.gz | |
Split tests for TestSpec into its own file
They also got slapped with the `[approvals]` tag in the process,
because we have too many approval tests and want less of them,
and these particular tests don't bring much value.
Related to #2090
Diffstat (limited to 'tests/SelfTest/IntrospectiveTests/CmdLine.tests.cpp')
| -rw-r--r-- | tests/SelfTest/IntrospectiveTests/CmdLine.tests.cpp | 305 |
1 files changed, 0 insertions, 305 deletions
diff --git a/tests/SelfTest/IntrospectiveTests/CmdLine.tests.cpp b/tests/SelfTest/IntrospectiveTests/CmdLine.tests.cpp index abb873f2..8f92e671 100644 --- a/tests/SelfTest/IntrospectiveTests/CmdLine.tests.cpp +++ b/tests/SelfTest/IntrospectiveTests/CmdLine.tests.cpp @@ -22,311 +22,6 @@ namespace { auto fakeTestCase(const char* name, const char* desc = "") { return Catch::makeTestCaseInfo("", { name, desc }, CATCH_INTERNAL_LINEINFO); } } -TEST_CASE( "Parse test names and tags", "[command-line][test-spec]" ) { - - using Catch::parseTestSpec; - using Catch::TestSpec; - - auto tcA = fakeTestCase( "a" ); - auto tcB = fakeTestCase( "b", "[one][x]" ); - auto tcC = fakeTestCase( "longer name with spaces", "[two][three][.][x]" ); - auto tcD = fakeTestCase( "zlonger name with spacesz" ); - - SECTION( "Empty test spec should have no filters" ) { - TestSpec spec; - CHECK( spec.hasFilters() == false ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - } - - SECTION( "Test spec from empty string should have no filters" ) { - TestSpec spec = parseTestSpec( "" ); - CHECK( spec.hasFilters() == false ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - } - - SECTION( "Test spec from just a comma should have no filters" ) { - TestSpec spec = parseTestSpec( "," ); - CHECK( spec.hasFilters() == false ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - } - - SECTION( "Test spec from name should have one filter" ) { - TestSpec spec = parseTestSpec( "b" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == true ); - } - - SECTION( "Test spec from quoted name should have one filter" ) { - TestSpec spec = parseTestSpec( "\"b\"" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == true ); - } - - SECTION( "Test spec from name should have one filter" ) { - TestSpec spec = parseTestSpec( "b" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == false ); - } - - SECTION( "Wildcard at the start" ) { - TestSpec spec = parseTestSpec( "*spaces" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == false ); - CHECK( parseTestSpec( "*a" ).matches( *tcA ) == true ); - } - SECTION( "Wildcard at the end" ) { - TestSpec spec = parseTestSpec( "long*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == false ); - CHECK( parseTestSpec( "a*" ).matches( *tcA ) == true ); - } - SECTION( "Wildcard at both ends" ) { - TestSpec spec = parseTestSpec( "*name*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == true ); - CHECK( parseTestSpec( "*a*" ).matches( *tcA ) == true ); - } - SECTION( "Redundant wildcard at the start" ) { - TestSpec spec = parseTestSpec( "*a" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == false ); - } - SECTION( "Redundant wildcard at the end" ) { - TestSpec spec = parseTestSpec( "a*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == false ); - } - SECTION( "Redundant wildcard at both ends" ) { - TestSpec spec = parseTestSpec( "*a*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == false ); - } - SECTION( "Wildcard at both ends, redundant at start" ) { - TestSpec spec = parseTestSpec( "*longer*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == true ); - } - SECTION( "Just wildcard" ) { - TestSpec spec = parseTestSpec( "*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == true ); - } - - SECTION( "Single tag" ) { - TestSpec spec = parseTestSpec( "[one]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == false ); - } - SECTION( "Single tag, two matches" ) { - TestSpec spec = parseTestSpec( "[x]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == true ); - } - SECTION( "Two tags" ) { - TestSpec spec = parseTestSpec( "[two][x]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - } - SECTION( "Two tags, spare separated" ) { - TestSpec spec = parseTestSpec( "[two] [x]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - } - SECTION( "Wildcarded name and tag" ) { - TestSpec spec = parseTestSpec( "*name*[x]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == false ); - } - SECTION( "Single tag exclusion" ) { - TestSpec spec = parseTestSpec( "~[one]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == false ); - } - SECTION( "One tag exclusion and one tag inclusion" ) { - TestSpec spec = parseTestSpec( "~[two][x]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == false ); - } - SECTION( "One tag exclusion and one wldcarded name inclusion" ) { - TestSpec spec = parseTestSpec( "~[two]*name*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == false ); - CHECK( spec.matches( *tcD ) == true ); - } - SECTION( "One tag exclusion, using exclude:, and one wldcarded name inclusion" ) { - TestSpec spec = parseTestSpec( "exclude:[two]*name*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == false ); - CHECK( spec.matches( *tcD ) == true ); - } - SECTION( "name exclusion" ) { - TestSpec spec = parseTestSpec( "~b" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == false ); - CHECK( spec.matches( *tcD ) == true ); - } - SECTION( "wildcarded name exclusion" ) { - TestSpec spec = parseTestSpec( "~*name*" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == false ); - CHECK( spec.matches( *tcD ) == false ); - } - SECTION( "wildcarded name exclusion with tag inclusion" ) { - TestSpec spec = parseTestSpec( "~*name*,[three]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == false ); - } - SECTION( "wildcarded name exclusion, using exclude:, with tag inclusion" ) { - TestSpec spec = parseTestSpec( "exclude:*name*,[three]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == true ); - CHECK( spec.matches( *tcB ) == true ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == false ); - } - SECTION( "two wildcarded names" ) { - TestSpec spec = parseTestSpec( "\"longer*\"\"*spaces\"" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == true ); - CHECK( spec.matches( *tcD ) == false ); - } - SECTION( "empty tag" ) { - TestSpec spec = parseTestSpec( "[]" ); - CHECK( spec.hasFilters() == false ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == false ); - CHECK( spec.matches( *tcD ) == false ); - } - SECTION( "empty quoted name" ) { - TestSpec spec = parseTestSpec( "\"\"" ); - CHECK( spec.hasFilters() == false ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == false ); - CHECK( spec.matches( *tcD ) == false ); - } - SECTION( "quoted string followed by tag exclusion" ) { - TestSpec spec = parseTestSpec( "\"*name*\"~[.]" ); - CHECK( spec.hasFilters() == true ); - CHECK( spec.matches( *tcA ) == false ); - CHECK( spec.matches( *tcB ) == false ); - CHECK( spec.matches( *tcC ) == false ); - CHECK( spec.matches( *tcD ) == true ); - } - SECTION( "Leading and trailing spaces in test spec" ) { - TestSpec spec = parseTestSpec( "\" aardvark \"" ); - CHECK( spec.matches( *fakeTestCase( " aardvark " ) ) ); - CHECK( spec.matches( *fakeTestCase( " aardvark" ) ) ); - CHECK( spec.matches( *fakeTestCase( " aardvark " ) ) ); - CHECK( spec.matches( *fakeTestCase( "aardvark " ) ) ); - CHECK( spec.matches( *fakeTestCase( "aardvark" ) ) ); - - } - SECTION( "Leading and trailing spaces in test name" ) { - TestSpec spec = parseTestSpec( "aardvark" ); - CHECK( spec.matches( *fakeTestCase( " aardvark " ) ) ); - CHECK( spec.matches( *fakeTestCase( " aardvark" ) ) ); - CHECK( spec.matches( *fakeTestCase( " aardvark " ) ) ); - CHECK( spec.matches( *fakeTestCase( "aardvark " ) ) ); - CHECK( spec.matches( *fakeTestCase( "aardvark" ) ) ); - } - SECTION("Shortened hide tags are split apart when parsing") { - TestSpec spec = parseTestSpec("[.foo]"); - CHECK(spec.matches(*fakeTestCase("hidden and foo", "[.][foo]"))); - CHECK_FALSE(spec.matches(*fakeTestCase("only foo", "[foo]"))); - } - SECTION("Shortened hide tags also properly handle exclusion") { - TestSpec spec = parseTestSpec("~[.foo]"); - CHECK_FALSE(spec.matches(*fakeTestCase("hidden and foo", "[.][foo]"))); - CHECK_FALSE(spec.matches(*fakeTestCase("only foo", "[foo]"))); - CHECK_FALSE(spec.matches(*fakeTestCase("only hidden", "[.]"))); - CHECK(spec.matches(*fakeTestCase("neither foo nor hidden", "[bar]"))); - } -} - -TEST_CASE("#1905 -- test spec parser properly clears internal state between compound tests", "[command-line][test-spec]") { - using Catch::parseTestSpec; - using Catch::TestSpec; - // We ask for one of 2 different tests and the latter one of them has a , in name that needs escaping - TestSpec spec = parseTestSpec(R"("spec . char","spec \, char")"); - - REQUIRE(spec.matches(*fakeTestCase("spec . char"))); - REQUIRE(spec.matches(*fakeTestCase("spec , char"))); - REQUIRE_FALSE(spec.matches(*fakeTestCase(R"(spec \, char)"))); -} - -TEST_CASE("#1912 -- test spec parser handles escaping", "[command-line][test-spec]") { - using Catch::parseTestSpec; - using Catch::TestSpec; - - SECTION("Various parentheses") { - TestSpec spec = parseTestSpec(R"(spec {a} char,spec \[a] char)"); - - REQUIRE(spec.matches(*fakeTestCase(R"(spec {a} char)"))); - REQUIRE(spec.matches(*fakeTestCase(R"(spec [a] char)"))); - REQUIRE_FALSE(spec.matches(*fakeTestCase("differs but has similar tag", "[a]"))); - } - SECTION("backslash in test name") { - TestSpec spec = parseTestSpec(R"(spec \\ char)"); - - REQUIRE(spec.matches(*fakeTestCase(R"(spec \ char)"))); - } -} - TEST_CASE( "Process can be configured on command line", "[config][command-line]" ) { using namespace Catch::Matchers; |