diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml index c678507..a8e6267 100644 --- a/.github/workflows/debug.yml +++ b/.github/workflows/debug.yml @@ -5,17 +5,46 @@ on: branches: [ master ] pull_request: branches: [ master ] + workflow_dispatch: + branches: [ master ] jobs: - build: + build-linux: runs-on: ubuntu-latest 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 - - uses: actions/checkout@v1 - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-Werror" .. - - name: make - run: cd build && make - - name: Run Test - run: /home/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test + - name: Download, configure and install gtest + run: | + wget https://github.com/google/googletest/archive/release-1.11.0.tar.gz + tar xf release-1.11.0.tar.gz + cd googletest-release-1.11.0 + cmake -DBUILD_SHARED_LIBS=OFF . + sudo make install + - name: Checkout the project + uses: actions/checkout@v1 + - name: Do some tests + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-Werror" .. + make + /home/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test + + build-macos: + runs-on: macos-latest + steps: + - name: Download, configure and install gtest + run: | + wget https://github.com/google/googletest/archive/release-1.11.0.tar.gz + tar xf release-1.11.0.tar.gz + cd googletest-release-1.11.0 + cmake -DBUILD_SHARED_LIBS=OFF . + sudo make install + - name: Checkout the project + uses: actions/checkout@v1 + - name: Do some tests + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS="-Werror" .. + make + /Users/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2ac4e09..ed6b23c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,17 +5,46 @@ on: branches: [ master ] pull_request: branches: [ master ] + workflow_dispatch: + branches: [ master ] jobs: - build: + build-linux: runs-on: ubuntu-latest 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 - - uses: actions/checkout@v1 - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Werror" .. - - name: make - run: cd build && make - - name: Run Test - run: /home/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test + - name: Download, configure and install gtest + run: | + wget https://github.com/google/googletest/archive/release-1.11.0.tar.gz + tar xf release-1.11.0.tar.gz + cd googletest-release-1.11.0 + cmake -DBUILD_SHARED_LIBS=OFF . + sudo make install + - name: Checkout the project + uses: actions/checkout@v1 + - name: Do some tests + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Werror" .. + make + /home/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test + + build-macos: + runs-on: macos-latest + steps: + - name: Download, configure and install gtest + run: | + wget https://github.com/google/googletest/archive/release-1.11.0.tar.gz + tar xf release-1.11.0.tar.gz + cd googletest-release-1.11.0 + cmake -DBUILD_SHARED_LIBS=OFF . + sudo make install + - name: Checkout the project + uses: actions/checkout@v1 + - name: Do some tests + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Werror" .. + make + /Users/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test diff --git a/README.md b/README.md index df48fee..683b0b1 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,13 @@ ![github_actions_gtest_example-Release](https://github.com/bastianhjaeger/github_actions_gtest_example/workflows/github_actions_gtest_example-Release/badge.svg?branch=master) ![github_actions_gtest_example-Debug](https://github.com/bastianhjaeger/github_actions_gtest_example/workflows/github_actions_gtest_example-Debug/badge.svg?branch=master) -Example on how to integrate gtest test into [github actions](https://github.com/features/actions). +Example on how to integrate gtest test into [github actions](https://github.com/features/actions). While there exist other links in the www on how to use it (which did not work for my setup), this repo quickly shows how to add a workflow / action to github that executes your gtest tests and responses with a simple ok / not-ok to highlight on github. -It is plain and simple, but maybe it helps you. +It is plain and simple, but maybe it helps you. # Setup Actions @@ -27,18 +27,25 @@ jobs: build: runs-on: ubuntu-latest 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 - - uses: actions/checkout@v1 - - name: configure - run: mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Werror" .. - - name: make - run: cd build && make - - name: Run Test - run: /home/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test -``` - -The important part is the *"Install gtest manually"* section. This is the plain and simple way to add it. + - name: Download, configure and install gtest + run: | + wget https://github.com/google/googletest/archive/release-1.10.0.tar.gz + tar xf release-1.10.0.tar.gz + cd googletest-release-1.10.0 + cmake -DBUILD_SHARED_LIBS=OFF . + sudo make install + - name: Checkout the project + uses: actions/checkout@v1 + - name: Do some tests + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-Werror" .. + make + /home/runner/work/github_actions_gtest_example/github_actions_gtest_example/build/test/github_actions_gtest_example.test + ``` + +The important part is the *"Download, configure and install gtest"* section. This is the plain and simple way to add it. # Result @@ -59,3 +66,9 @@ mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j8 ``` + +# If you only want to use Makefile + +You can use : +- `pkg-config --cflags gtest gmock` for your CXXFLAGS. +- `pkg-config --libs gtest gmock` for your LDFLAGS. diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e1edae5..b83e8db 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,10 +1,14 @@ +link_directories("/usr/local/lib") add_executable(${PROJECT_NAME}.test AllTests.cpp ${PROJECT_NAME}Test.cpp) target_link_libraries(${PROJECT_NAME}.test - ${PROJECT_NAME} gtest pthread) -target_compile_definitions(${PROJECT_NAME}.test + ${PROJECT_NAME} gtest gmock pthread) +target_compile_definitions(${PROJECT_NAME}.test PRIVATE TEST_DIR="${CMAKE_CURRENT_LIST_DIR}/test") - install(TARGETS ${PROJECT_NAME}.test DESTINATION "${tool_dest}") + +# Mac OS X does not look at these paths +target_include_directories(${PROJECT_NAME}.test PRIVATE "/usr/local/include/") +set(CMAKE_LIBRARY_PATH "/usr/local/lib/")