| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- name: TaskScheduler Unit Test
- on:
- push:
- branches: [ main ]
- pull_request:
- branches: [ main ]
- workflow_dispatch:
- jobs:
- UnitTests_Linux:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Install dependencies
- run: |
- sudo apt-get update
- sudo apt-get install -y cmake build-essential libgtest-dev pkg-config
-
- - name: Build and install Google Test
- run: |
- cd /usr/src/gtest
- sudo cmake .
- sudo cmake --build . --target all
- sudo cp lib/*.a /usr/lib || sudo cp *.a /usr/lib
-
- - name: Create CMakeLists.txt
- run: |
- cat > CMakeLists.txt << 'EOF'
- cmake_minimum_required(VERSION 3.10)
- project(TaskSchedulerTests VERSION 1.0.0)
- set(CMAKE_CXX_STANDARD 14)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- # Find required packages
- find_package(PkgConfig REQUIRED)
- find_package(Threads REQUIRED)
- # Include directories
- include_directories(${CMAKE_SOURCE_DIR}/src)
- include_directories(${CMAKE_SOURCE_DIR}/tests)
- # Gather source files
- file(GLOB TASKSCHEDULER_SOURCES
- "${CMAKE_SOURCE_DIR}/src/*.cpp"
- "${CMAKE_SOURCE_DIR}/src/*.c"
- )
- file(GLOB TEST_SOURCES
- "${CMAKE_SOURCE_DIR}/tests/*.cpp"
- )
- # Check if we have test files
- list(LENGTH TEST_SOURCES TEST_COUNT)
- if(TEST_COUNT EQUAL 0)
- message(FATAL_ERROR "No test files found in tests/ directory")
- endif()
- # Create the test executable
- add_executable(taskscheduler_tests
- ${TEST_SOURCES}
- ${TASKSCHEDULER_SOURCES}
- )
- # Link libraries
- target_link_libraries(taskscheduler_tests
- gtest
- gtest_main
- pthread
- )
- # Compiler definitions for Arduino compatibility
- target_compile_definitions(taskscheduler_tests PRIVATE
- ARDUINO=300
- )
- # Compiler flags
- target_compile_options(taskscheduler_tests PRIVATE
- -Wall
- -Wextra
- -O2
- )
- # Enable testing
- enable_testing()
- add_test(NAME TaskSchedulerUnitTests COMMAND taskscheduler_tests)
- EOF
-
- - name: Build tests
- run: |
- cmake .
- make -j$(nproc)
-
- - name: Run unit tests
- run: |
- ./taskscheduler_tests
|