From b16d744e55156f742c57f0fade6cb560480df89b Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:09:02 +0000 Subject: [PATCH 1/9] remove catch2 test, add gtest --- CMakeLists.txt | 3 +- homework_01/task_01/CMakeLists.txt | 22 +++++++----- homework_01/task_01/src/split_string_test.cpp | 24 +++++++------ homework_01/task_01/src/utils.hpp | 1 - homework_01/task_02/CMakeLists.txt | 24 +++++++------ homework_01/task_02/src/calculate_test.cpp | 32 ++++++++--------- homework_02/CMakeLists.txt | 5 +++ homework_02/task_2_01/CMakeLists.txt | 36 +++++++++++++++++++ homework_02/task_2_01/src/main.cpp | 3 ++ homework_02/task_2_01/src/test.cpp | 6 ++++ homework_02/task_2_01/src/utils.cpp | 3 ++ homework_02/task_2_01/src/utils.hpp | 5 +++ 12 files changed, 116 insertions(+), 48 deletions(-) create mode 100644 homework_02/CMakeLists.txt create mode 100644 homework_02/task_2_01/CMakeLists.txt create mode 100644 homework_02/task_2_01/src/main.cpp create mode 100644 homework_02/task_2_01/src/test.cpp create mode 100644 homework_02/task_2_01/src/utils.cpp create mode 100644 homework_02/task_2_01/src/utils.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 0dfb3c6..ca93e1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,4 +2,5 @@ cmake_minimum_required(VERSION 3.10) project(homeworks) -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/homework_01) \ No newline at end of file +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/homework_01) +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/homework_02) \ No newline at end of file diff --git a/homework_01/task_01/CMakeLists.txt b/homework_01/task_01/CMakeLists.txt index 7278e6f..16b3988 100644 --- a/homework_01/task_01/CMakeLists.txt +++ b/homework_01/task_01/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.10) -set(PROJECT_NAME task_01) +set(PROJECT_NAME task_1_01) project(${PROJECT_NAME}) set(CMAKE_CXX_STANDARD 20) @@ -18,15 +18,19 @@ include_directories(${PROJECT_NAME} PUBLIC src) add_executable(${PROJECT_NAME} ${source_list}) -Include(FetchContent) +# Locate GTest +enable_testing() +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) -FetchContent_Declare( - Catch2 - GIT_REPOSITORY https://github.com/catchorg/Catch2.git - GIT_TAG v3.1.0 +# Link runTests with what we want to test and the GTest and pthread library +add_executable(tests_1_01 ${test_source_list}) +target_link_libraries( + tests_1_01 + GTest::gtest_main ) -FetchContent_MakeAvailable(Catch2) +include(GoogleTest) +gtest_discover_tests(tests_1_01) -add_executable(tests_01 ${test_source_list}) -target_link_libraries(tests_01 PRIVATE Catch2::Catch2WithMain) +# target_link_libraries(tests_1_02 ${GTEST_LIBRARIES} pthread) diff --git a/homework_01/task_01/src/split_string_test.cpp b/homework_01/task_01/src/split_string_test.cpp index 82d4994..b407de3 100644 --- a/homework_01/task_01/src/split_string_test.cpp +++ b/homework_01/task_01/src/split_string_test.cpp @@ -1,15 +1,17 @@ -#include +#include #include "utils.hpp" -TEST_CASE("SplitString", "[simple]") { - CHECK(SplitString("") == std::vector{}); - CHECK(SplitString("aaa") == std::vector{"aaa"}); - CHECK(SplitString("aaa aaa") == std::vector{"aaa", "aaa"}); - CHECK(SplitString("aaa aaa ") == std::vector{"aaa", "aaa"}); - CHECK(SplitString(" ") == std::vector{}); - CHECK(SplitString("??? ??") == std::vector{"???", "??"}); - CHECK(SplitString("a\na\ta a") == std::vector{"a\na", "a", "a"}); - CHECK(SplitString("a (a a)") == std::vector{"a", "(a a)"}); - CHECK(SplitString("a (a a) b (asd as) ") == std::vector{"a", "(a a)", "b", "(asd as)"}); +TEST(SplitStringTest, Simple) { + ASSERT_EQ(SplitString(""), std::vector{}); + ASSERT_EQ(SplitString("aaa"), std::vector{"aaa"}); + ASSERT_EQ(SplitString("aaa aaa"), (std::vector{"aaa", "aaa"})); + ASSERT_EQ(SplitString("aaa aaa "), (std::vector{"aaa", "aaa"})); + ASSERT_EQ(SplitString(" "), std::vector{}); + ASSERT_EQ(SplitString("??? ??"), (std::vector{"???", "??"})); + ASSERT_EQ(SplitString("a\na\ta a"), + (std::vector{"a\na", "a", "a"})); + ASSERT_EQ(SplitString("a (a a)"), (std::vector{"a", "(a a)"})); + ASSERT_EQ(SplitString("a (a a) b (asd as) "), + (std::vector{"a", "(a a)", "b", "(asd as)"})); } diff --git a/homework_01/task_01/src/utils.hpp b/homework_01/task_01/src/utils.hpp index 539ba98..bd46e63 100644 --- a/homework_01/task_01/src/utils.hpp +++ b/homework_01/task_01/src/utils.hpp @@ -1,7 +1,6 @@ #pragma once #include -#include #include std::vector SplitString(const std::string& data); diff --git a/homework_01/task_02/CMakeLists.txt b/homework_01/task_02/CMakeLists.txt index 959c69b..2d1d2bc 100644 --- a/homework_01/task_02/CMakeLists.txt +++ b/homework_01/task_02/CMakeLists.txt @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 3.10) -set(PROJECT_NAME task_02) +set(PROJECT_NAME task_1_02) project(${PROJECT_NAME}) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) file(GLOB_RECURSE source_list "src/*.cpp" "src/*.hpp") @@ -18,15 +18,19 @@ include_directories(${PROJECT_NAME} PUBLIC src) add_executable(${PROJECT_NAME} ${source_list}) -Include(FetchContent) +# Locate GTest +enable_testing() +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) -FetchContent_Declare( - Catch2 - GIT_REPOSITORY https://github.com/catchorg/Catch2.git - GIT_TAG v3.1.0 +# Link runTests with what we want to test and the GTest and pthread library +add_executable(tests_1_02 ${test_source_list}) +target_link_libraries( + tests_1_02 + GTest::gtest_main ) -FetchContent_MakeAvailable(Catch2) +include(GoogleTest) +gtest_discover_tests(tests_1_02) -add_executable(tests_02 ${test_source_list}) -target_link_libraries(tests_02 PRIVATE Catch2::Catch2WithMain) +# target_link_libraries(tests_1_02 ${GTEST_LIBRARIES} pthread) diff --git a/homework_01/task_02/src/calculate_test.cpp b/homework_01/task_02/src/calculate_test.cpp index 57a8cb9..188fc7c 100644 --- a/homework_01/task_02/src/calculate_test.cpp +++ b/homework_01/task_02/src/calculate_test.cpp @@ -1,24 +1,24 @@ -#include +#include #include "utils.hpp" -TEST_CASE("Calculate", "[simple_sum]") { - CHECK(Calculate("1+2") == 3); - CHECK(Calculate("2+2") == 4); - CHECK(Calculate("1+0") == 1); - CHECK(Calculate("0+0") == 0); +TEST(CalculateTest, simple_sum) { + ASSERT_EQ(Calculate("1+2"), 3); + ASSERT_EQ(Calculate("2+2"), 4); + ASSERT_EQ(Calculate("1+0"), 1); + ASSERT_EQ(Calculate("0+0"), 0); } -TEST_CASE("Calculate", "[simple_difference]") { - CHECK(Calculate("5-2") == 3); - CHECK(Calculate("2-2") == 0); - CHECK(Calculate("1-0") == 1); - CHECK(Calculate("0-0") == 0); +TEST(CalculateTest, simple_difference) { + ASSERT_EQ(Calculate("5-2"), 3); + ASSERT_EQ(Calculate("2-2"), 0); + ASSERT_EQ(Calculate("1-0"), 1); + ASSERT_EQ(Calculate("0-0"), 0); } -TEST_CASE("Calculate", "[simple_multiply]") { - CHECK(Calculate("5*2") == 10); - CHECK(Calculate("2*2") == 4); - CHECK(Calculate("1*0") == 0); - CHECK(Calculate("0*0") == 0); +TEST(CalculateTest, simple_multiply) { + ASSERT_EQ(Calculate("5*2"), 10); + ASSERT_EQ(Calculate("2*2"), 4); + ASSERT_EQ(Calculate("1*0"), 0); + ASSERT_EQ(Calculate("0*0"), 0); } diff --git a/homework_02/CMakeLists.txt b/homework_02/CMakeLists.txt new file mode 100644 index 0000000..4ba5a01 --- /dev/null +++ b/homework_02/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.10) + +project(homework_02) + +add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/task_2_01) diff --git a/homework_02/task_2_01/CMakeLists.txt b/homework_02/task_2_01/CMakeLists.txt new file mode 100644 index 0000000..14479c3 --- /dev/null +++ b/homework_02/task_2_01/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.10) + +set(PROJECT_NAME task_2_01) +project(${PROJECT_NAME}) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +file(GLOB_RECURSE source_list "src/*.cpp" "src/*.hpp") +file(GLOB_RECURSE main_source_list "src/main.cpp") +file(GLOB_RECURSE test_source_list "src/*.cpp") +file(GLOB_RECURSE test_list "src/*test.cpp") + +list(REMOVE_ITEM test_source_list ${main_source_list}) +list(REMOVE_ITEM source_list ${test_list}) + +include_directories(${PROJECT_NAME} PUBLIC src) + +add_executable(${PROJECT_NAME} ${source_list}) + +# Locate GTest +enable_testing() +find_package(GTest REQUIRED) +include_directories(${GTEST_INCLUDE_DIRS}) + +# Link runTests with what we want to test and the GTest and pthread library +add_executable(tests_2_01 ${test_source_list}) +target_link_libraries( + tests_2_01 + GTest::gtest_main +) + +include(GoogleTest) +gtest_discover_tests(tests_2_01) + +# target_link_libraries(tests_2_01 ${GTEST_LIBRARIES} pthread) diff --git a/homework_02/task_2_01/src/main.cpp b/homework_02/task_2_01/src/main.cpp new file mode 100644 index 0000000..7b8f114 --- /dev/null +++ b/homework_02/task_2_01/src/main.cpp @@ -0,0 +1,3 @@ +#include + +int main() { return 0; } diff --git a/homework_02/task_2_01/src/test.cpp b/homework_02/task_2_01/src/test.cpp new file mode 100644 index 0000000..5a72a6e --- /dev/null +++ b/homework_02/task_2_01/src/test.cpp @@ -0,0 +1,6 @@ +#include + +#include "utils.hpp" + +TEST(HelloTest, BasicAssertions) { + ASSERT_EQ(true, true); } diff --git a/homework_02/task_2_01/src/utils.cpp b/homework_02/task_2_01/src/utils.cpp new file mode 100644 index 0000000..ec22d6f --- /dev/null +++ b/homework_02/task_2_01/src/utils.cpp @@ -0,0 +1,3 @@ +#include "utils.hpp" + +double Calculate(const std::string& str) { return 0; } diff --git a/homework_02/task_2_01/src/utils.hpp b/homework_02/task_2_01/src/utils.hpp new file mode 100644 index 0000000..3323b2b --- /dev/null +++ b/homework_02/task_2_01/src/utils.hpp @@ -0,0 +1,5 @@ +#pragma once + +#include + +double Calculate(const std::string& str); From 3d04f871268ee1377a4bf16f266f44c37117933f Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:17:09 +0000 Subject: [PATCH 2/9] fix actions --- .github/workflows/cmake.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 6ef9680..ac6c5dc 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -13,6 +13,9 @@ jobs: runs-on: ubuntu-latest steps: + - name: install gtest + run: apt-get install googletest + - uses: actions/checkout@v3 - name: run cmake From 29484f89c998020521088cad6511095d27135372 Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:18:25 +0000 Subject: [PATCH 3/9] fix --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index ac6c5dc..ddaf8e3 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -14,7 +14,7 @@ jobs: steps: - name: install gtest - run: apt-get install googletest + run: sudo apt-get install googletest - uses: actions/checkout@v3 From 93207d2a4aa43cfece68f6aa465fd41eb706f13f Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:25:46 +0000 Subject: [PATCH 4/9] test fix 2 --- .github/workflows/cmake.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index ddaf8e3..34db68b 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -13,8 +13,9 @@ jobs: runs-on: ubuntu-latest steps: - - name: install gtest - run: sudo apt-get install googletest + - name: Install gtest manually + run: sudo apt-get install libgtest-dev && cd /usr/src/gtest && sudo cmake CMakeLists.txt && sudo make && sudo cp *.a /usr/lib && sudo ln -s /usr/lib/libgtest.a /usr/local/lib/libgtest.a && sudo ln -s /usr/lib/libgtest_main.a /usr/local/lib/libgtest_main.a + - uses: actions/checkout@v3 From 9da5dc206dd6f4d841179830f50294f8124f07c7 Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:27:44 +0000 Subject: [PATCH 5/9] fix 3 --- .github/workflows/cmake.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 34db68b..3f6fb50 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -14,9 +14,8 @@ jobs: steps: - name: Install gtest manually - run: sudo apt-get install libgtest-dev && cd /usr/src/gtest && sudo cmake CMakeLists.txt && sudo make && sudo cp *.a /usr/lib && sudo ln -s /usr/lib/libgtest.a /usr/local/lib/libgtest.a && sudo ln -s /usr/lib/libgtest_main.a /usr/local/lib/libgtest_main.a - - + run: sudo apt-get install libgtest-dev + - uses: actions/checkout@v3 - name: run cmake From 02aea8f8a8bad27294981592c9a9a1b262198a9a Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:29:54 +0000 Subject: [PATCH 6/9] FIX 4 --- .github/workflows/cmake.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 3f6fb50..615ec1b 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Install gtest manually run: sudo apt-get install libgtest-dev - + - uses: actions/checkout@v3 - name: run cmake @@ -28,9 +28,9 @@ jobs: - name: test task 01 working-directory: ${{github.workspace}}/homework_01/build - run: ./task_01/tests_01 + run: ./task_1_01/tests_1_01 - name: test task 02 working-directory: ${{github.workspace}}/homework_01/build - run: ./task_02/tests_02 + run: ./task_1_02/tests_1_02 From 2d0394cdb508ebc39e8d5764d628ddc313d43be3 Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:37:47 +0000 Subject: [PATCH 7/9] FIX 5 --- .github/workflows/cmake.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 615ec1b..cc3c5fe 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -28,9 +28,9 @@ jobs: - name: test task 01 working-directory: ${{github.workspace}}/homework_01/build - run: ./task_1_01/tests_1_01 + run: ./task_01/tests_1_01 - name: test task 02 working-directory: ${{github.workspace}}/homework_01/build - run: ./task_1_02/tests_1_02 + run: ./task_02/tests_1_02 From 5c31203b2062b5c992479d98b170b467a44b1e57 Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:41:13 +0000 Subject: [PATCH 8/9] add continue on fail --- .github/workflows/cmake.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index cc3c5fe..f073232 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -27,10 +27,12 @@ jobs: run: make - name: test task 01 + continue-on-error: true working-directory: ${{github.workspace}}/homework_01/build run: ./task_01/tests_1_01 - name: test task 02 + continue-on-error: true working-directory: ${{github.workspace}}/homework_01/build run: ./task_02/tests_1_02 From ac6b1bc5eec9fecbdc515f8404bccab46481c921 Mon Sep 17 00:00:00 2001 From: Ivan Khokhlov Date: Mon, 12 Dec 2022 20:49:28 +0000 Subject: [PATCH 9/9] split test to diff actions --- .github/workflows/homework_1_task_01.yml | 32 +++++++++++++++++++ .../{cmake.yml => homework_1_task_02.yml} | 8 +---- 2 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/homework_1_task_01.yml rename .github/workflows/{cmake.yml => homework_1_task_02.yml} (73%) diff --git a/.github/workflows/homework_1_task_01.yml b/.github/workflows/homework_1_task_01.yml new file mode 100644 index 0000000..55864f4 --- /dev/null +++ b/.github/workflows/homework_1_task_01.yml @@ -0,0 +1,32 @@ +name: CMake + +on: + push: {} + pull_request: + branches: [ "main" ] + +env: + BUILD_TYPE: Release + +jobs: + build_and_test: + runs-on: ubuntu-latest + + steps: + - name: Install gtest manually + run: sudo apt-get install libgtest-dev + + - uses: actions/checkout@v3 + + - name: run cmake + working-directory: ${{github.workspace}}/homework_01 + run: cmake -B./build . + + - name: make + working-directory: ${{github.workspace}}/homework_01/build + run: make + + - name: tests + working-directory: ${{github.workspace}}/homework_01/build + run: ./task_01/tests_1_01 + diff --git a/.github/workflows/cmake.yml b/.github/workflows/homework_1_task_02.yml similarity index 73% rename from .github/workflows/cmake.yml rename to .github/workflows/homework_1_task_02.yml index f073232..f2b7dd3 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/homework_1_task_02.yml @@ -26,13 +26,7 @@ jobs: working-directory: ${{github.workspace}}/homework_01/build run: make - - name: test task 01 - continue-on-error: true - working-directory: ${{github.workspace}}/homework_01/build - run: ./task_01/tests_1_01 - - - name: test task 02 - continue-on-error: true + - name: tests working-directory: ${{github.workspace}}/homework_01/build run: ./task_02/tests_1_02