diff --git a/cucumber_cpp/CMakeLists.txt b/cucumber_cpp/CMakeLists.txt index bfaed316..eca2965c 100644 --- a/cucumber_cpp/CMakeLists.txt +++ b/cucumber_cpp/CMakeLists.txt @@ -1,4 +1,20 @@ + + add_subdirectory(library) add_subdirectory(runner) add_subdirectory(example) add_subdirectory(acceptance_test) + +add_library(cucumber_cpp INTERFACE) + +target_sources(cucumber_cpp INTERFACE + CucumberCpp.hpp +) + +target_include_directories(cucumber_cpp INTERFACE + ./ +) + +target_link_libraries(cucumber_cpp INTERFACE + cucumber_cpp.library +) diff --git a/cucumber_cpp/CucumberCpp.hpp b/cucumber_cpp/CucumberCpp.hpp new file mode 100644 index 00000000..0d3d5e21 --- /dev/null +++ b/cucumber_cpp/CucumberCpp.hpp @@ -0,0 +1,18 @@ +#ifndef CUCUMBER_CPP_CUCUMBER_CPP_HPP +#define CUCUMBER_CPP_CUCUMBER_CPP_HPP + +#include "cucumber_cpp/library/Application.hpp" +#include "cucumber_cpp/library/Context.hpp" +#include "cucumber_cpp/library/Hooks.hpp" +#include "cucumber_cpp/library/Steps.hpp" +#include "cucumber_cpp/library/report/Report.hpp" + +namespace cucumber_cpp +{ + using cucumber_cpp::library::Application; + using cucumber_cpp::library::Context; + using cucumber_cpp::library::engine::Step; + using cucumber_cpp::library::report::ReportHandlerV2; +} + +#endif diff --git a/cucumber_cpp/acceptance_test/CMakeLists.txt b/cucumber_cpp/acceptance_test/CMakeLists.txt index 6f7b64ef..eda7ed36 100644 --- a/cucumber_cpp/acceptance_test/CMakeLists.txt +++ b/cucumber_cpp/acceptance_test/CMakeLists.txt @@ -2,11 +2,9 @@ set(CMAKE_COMPILE_WARNING_AS_ERROR On) add_executable(cucumber_cpp.acceptance_test ${CCR_EXCLUDE_FROM_ALL}) -target_sources(cucumber_cpp.acceptance_test PRIVATE - Main.cpp -) target_link_libraries(cucumber_cpp.acceptance_test PRIVATE - cucumber_cpp.library + cucumber_cpp + cucumber_cpp.runner cucumber_cpp.acceptance_test.hooks cucumber_cpp.acceptance_test.steps ) @@ -18,7 +16,7 @@ target_sources(cucumber_cpp.acceptance_test.custom PRIVATE ) target_link_libraries(cucumber_cpp.acceptance_test.custom PRIVATE - cucumber_cpp.library + cucumber_cpp cucumber_cpp.acceptance_test.hooks cucumber_cpp.acceptance_test.steps ) diff --git a/cucumber_cpp/acceptance_test/Main.cpp b/cucumber_cpp/acceptance_test/Main.cpp deleted file mode 100644 index ade7d3fb..00000000 --- a/cucumber_cpp/acceptance_test/Main.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "cucumber_cpp/library/Application.hpp" -#include - -int main(int argc, char** argv) -{ - cucumber_cpp::library::Application application{}; - - return application.Run(argc, argv); -} diff --git a/cucumber_cpp/acceptance_test/MainCustom.cpp b/cucumber_cpp/acceptance_test/MainCustom.cpp index d524411d..0c76e52b 100644 --- a/cucumber_cpp/acceptance_test/MainCustom.cpp +++ b/cucumber_cpp/acceptance_test/MainCustom.cpp @@ -1,9 +1,8 @@ -#include "cucumber_cpp/library/Application.hpp" -#include +#include "cucumber_cpp/CucumberCpp.hpp" int main(int argc, char** argv) { - cucumber_cpp::library::Application application{}; + cucumber_cpp::Application application{}; application.CliParser().add_flag("--required", *application.ProgramContext().EmplaceAt("--required"))->required(); diff --git a/cucumber_cpp/acceptance_test/features/test_hooks.feature b/cucumber_cpp/acceptance_test/features/test_hooks.feature index 2f7fd89c..2d73a9e4 100644 --- a/cucumber_cpp/acceptance_test/features/test_hooks.feature +++ b/cucumber_cpp/acceptance_test/features/test_hooks.feature @@ -1,6 +1,10 @@ @bats Feature: Test scenario and step hook bindings + @program_hooks + Scenario: Run failing Scenario hooks before + Given a given step + @fail_scenariohook_before Scenario: Run failing Scenario hooks before Given a given step diff --git a/cucumber_cpp/acceptance_test/test.bats b/cucumber_cpp/acceptance_test/test.bats index 24ff5ba6..8885a6c9 100644 --- a/cucumber_cpp/acceptance_test/test.bats +++ b/cucumber_cpp/acceptance_test/test.bats @@ -75,7 +75,7 @@ teardown() { } @test "Run Program hooks" { - run .build/Host/cucumber_cpp/acceptance_test/Debug/cucumber_cpp.acceptance_test run --feature cucumber_cpp/acceptance_test/features --tag @bats --report console + run .build/Host/cucumber_cpp/acceptance_test/Debug/cucumber_cpp.acceptance_test run --feature cucumber_cpp/acceptance_test/features --tag @bats and @program_hooks --report console assert_success assert_output --partial "HOOK_BEFORE_ALL" diff --git a/cucumber_cpp/example/CMakeLists.txt b/cucumber_cpp/example/CMakeLists.txt index eb3d0e18..f8d2ef00 100644 --- a/cucumber_cpp/example/CMakeLists.txt +++ b/cucumber_cpp/example/CMakeLists.txt @@ -8,7 +8,7 @@ target_sources(cucumber_cpp.example PRIVATE ) target_link_libraries(cucumber_cpp.example PRIVATE - cucumber_cpp.library + cucumber_cpp cucumber_cpp.example.hooks cucumber_cpp.example.steps ) diff --git a/cucumber_cpp/example/Main.cpp b/cucumber_cpp/example/Main.cpp index 4867a5f0..451bdccf 100644 --- a/cucumber_cpp/example/Main.cpp +++ b/cucumber_cpp/example/Main.cpp @@ -1,9 +1,9 @@ -#include "cucumber_cpp/library/Application.hpp" +#include "cucumber_cpp/CucumberCpp.hpp" #include int main(int argc, char** argv) { - cucumber_cpp::library::Application application{}; + cucumber_cpp::Application application{}; application.CliParser().add_option("--com", *application.ProgramContext().EmplaceAt("--com"))->required(); auto* stOpt = application.CliParser().add_flag("--st", *application.ProgramContext().EmplaceAt("--st")); diff --git a/cucumber_cpp/example/hooks/Hooks.cpp b/cucumber_cpp/example/hooks/Hooks.cpp index 99643b62..d4e631f1 100644 --- a/cucumber_cpp/example/hooks/Hooks.cpp +++ b/cucumber_cpp/example/hooks/Hooks.cpp @@ -1,8 +1,8 @@ #include "cucumber_cpp/library/Hooks.hpp" #include "cucumber_cpp/example/fixtures/Fixture.hpp" #include "cucumber_cpp/library/Context.hpp" -#include -#include +#include +#include HOOK_BEFORE_ALL() { diff --git a/cucumber_cpp/example/steps/Steps.cpp b/cucumber_cpp/example/steps/Steps.cpp index d3d36932..159f46e9 100644 --- a/cucumber_cpp/example/steps/Steps.cpp +++ b/cucumber_cpp/example/steps/Steps.cpp @@ -1,6 +1,5 @@ #include "cucumber_cpp/library/Steps.hpp" #include "cucumber_cpp/library/Context.hpp" -#include "cucumber_cpp/library/engine/FailureHandler.hpp" #include "gmock/gmock.h" #include "gtest/gtest.h" #include diff --git a/cucumber_cpp/runner/CMakeLists.txt b/cucumber_cpp/runner/CMakeLists.txt index 38b16843..b10dbdb2 100644 --- a/cucumber_cpp/runner/CMakeLists.txt +++ b/cucumber_cpp/runner/CMakeLists.txt @@ -5,5 +5,5 @@ target_sources(cucumber_cpp.runner PRIVATE ) target_link_libraries(cucumber_cpp.runner PUBLIC - cucumber_cpp.library + cucumber_cpp ) diff --git a/cucumber_cpp/runner/Main.cpp b/cucumber_cpp/runner/Main.cpp index ade7d3fb..73d9d824 100644 --- a/cucumber_cpp/runner/Main.cpp +++ b/cucumber_cpp/runner/Main.cpp @@ -1,9 +1,8 @@ -#include "cucumber_cpp/library/Application.hpp" -#include +#include "cucumber_cpp/CucumberCpp.hpp" int main(int argc, char** argv) { - cucumber_cpp::library::Application application{}; + cucumber_cpp::Application application{}; return application.Run(argc, argv); } diff --git a/sonar-project.properties b/sonar-project.properties index 43ad4bd2..c482badc 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -16,7 +16,6 @@ sonar.c.file.suffixes=.c,.h sonar.cpp.file.suffixes=.cc,.cpp,.cxx,.c++,.hh,.hpp,.hxx,.h++,.ipp sonar.sources=cucumber_cpp -# sonar.exclusions=cucumber_cpp/acceptance_test/**/*,cucumber_cpp/example/**/* sonar.tests=cucumber_cpp sonar.test.inclusions=**/test/*,**/test_doubles/*,**/test_helper/* @@ -26,7 +25,7 @@ sonar.cfamily.threads=2 sonar.testExecutionReportPaths=execution.xml sonar.coverageReportPaths=coverage.xml -sonar.coverage.exclusions=cucumber_cpp/acceptance_test/**/*,cucumber_cpp/example/**/* +sonar.coverage.exclusions=cucumber_cpp/acceptance_test/**/*,cucumber_cpp/example/**/*,cucumber_cpp/runner/Main.cpp sonar.cpd.exclusions=${env.SONAR_DUPLICATION_EXCLUSIONS} # Project specific ignored rules