/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #include "cmCTestCoverageCommand.h" #include #include #include #include #include "cmArgumentParser.h" #include "cmCTest.h" #include "cmCTestCoverageHandler.h" #include "cmCTestGenericHandler.h" #include "cmExecutionStatus.h" class cmMakefile; std::unique_ptr cmCTestCoverageCommand::InitializeHandler(HandlerArguments& arguments, cmExecutionStatus& status) const { cmMakefile& mf = status.GetMakefile(); auto& args = static_cast(arguments); this->CTest->SetCTestConfigurationFromCMakeVariable( &mf, "CoverageCommand", "CTEST_COVERAGE_COMMAND", args.Quiet); this->CTest->SetCTestConfigurationFromCMakeVariable( &mf, "CoverageExtraFlags", "CTEST_COVERAGE_EXTRA_FLAGS", args.Quiet); auto handler = cm::make_unique(this->CTest); // If a LABELS option was given, select only files with the labels. if (args.Labels) { handler->SetLabelFilter( std::set(args.Labels->begin(), args.Labels->end())); } handler->SetQuiet(args.Quiet); return std::unique_ptr(std::move(handler)); } bool cmCTestCoverageCommand::InitialPass(std::vector const& args, cmExecutionStatus& status) const { using Args = CoverageArguments; static auto const parser = cmArgumentParser{ MakeHandlerParser() } // .Bind("LABELS"_s, &CoverageArguments::Labels); return this->Invoke(parser, args, status, [&](CoverageArguments& a) { return this->ExecuteHandlerCommand(a, status); }); }