|
|
@@ -1,4 +1,4 @@
|
|
|
-name: TaskScheduler Unit Test
|
|
|
+name: TaskScheduler Unit Tests
|
|
|
on:
|
|
|
push:
|
|
|
branches: [ main ]
|
|
|
@@ -7,30 +7,31 @@ on:
|
|
|
workflow_dispatch:
|
|
|
|
|
|
jobs:
|
|
|
- Test01_Basic_Functionality:
|
|
|
+ test-basic:
|
|
|
+ name: Basic Scheduler Tests
|
|
|
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
|
|
|
+
|
|
|
+ - name: Create CMakeLists.txt for Basic Tests
|
|
|
run: |
|
|
|
cat > CMakeLists.txt << 'EOF'
|
|
|
cmake_minimum_required(VERSION 3.10)
|
|
|
- project(TaskSchedulerTests VERSION 1.0.0)
|
|
|
+ project(TaskSchedulerBasicTests VERSION 1.0.0)
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 14)
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
@@ -44,44 +45,114 @@ jobs:
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/tests)
|
|
|
|
|
|
# Gather source files
|
|
|
- file(GLOB TASKSCHEDULER_SOURCES
|
|
|
+ file(GLOB TASKSCHEDULER_SOURCES
|
|
|
"${CMAKE_SOURCE_DIR}/src/*.cpp"
|
|
|
"${CMAKE_SOURCE_DIR}/src/*.c"
|
|
|
)
|
|
|
|
|
|
- # Only include the specific test file we want to run
|
|
|
- set(TEST_SOURCES
|
|
|
- "${CMAKE_SOURCE_DIR}/tests/test-scheduler-basic.cpp"
|
|
|
- "${CMAKE_SOURCE_DIR}/tests/test-scheduler-basic-thorough-no-lambda.cpp"
|
|
|
- "${CMAKE_SOURCE_DIR}/tests/test-scheduler-advanced-features-no-lambda.cpp"
|
|
|
+ # Create the basic test executable
|
|
|
+ add_executable(test_basic
|
|
|
+ tests/test-scheduler-basic.cpp
|
|
|
+ ${TASKSCHEDULER_SOURCES}
|
|
|
+ )
|
|
|
+
|
|
|
+ # Link libraries
|
|
|
+ target_link_libraries(test_basic
|
|
|
+ gtest
|
|
|
+ gtest_main
|
|
|
+ pthread
|
|
|
)
|
|
|
|
|
|
- # 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()
|
|
|
+ # Compiler definitions for Arduino compatibility
|
|
|
+ target_compile_definitions(test_basic PRIVATE
|
|
|
+ ARDUINO=300
|
|
|
+ )
|
|
|
|
|
|
- # Create the test executable
|
|
|
- add_executable(taskscheduler_tests
|
|
|
- ${TEST_SOURCES}
|
|
|
+ # Compiler flags
|
|
|
+ target_compile_options(test_basic PRIVATE
|
|
|
+ -Wall
|
|
|
+ -Wextra
|
|
|
+ -O2
|
|
|
+ )
|
|
|
+
|
|
|
+ # Enable testing
|
|
|
+ enable_testing()
|
|
|
+ add_test(NAME BasicTests COMMAND test_basic)
|
|
|
+ EOF
|
|
|
+
|
|
|
+ - name: Build basic tests
|
|
|
+ run: |
|
|
|
+ cmake .
|
|
|
+ make -j$(nproc)
|
|
|
+
|
|
|
+ - name: Run basic tests
|
|
|
+ run: |
|
|
|
+ echo "=== Running Basic Scheduler Tests ==="
|
|
|
+ ./test_basic
|
|
|
+
|
|
|
+ test-thorough-no-lambda:
|
|
|
+ name: Thorough No-Lambda Tests
|
|
|
+ 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 for Thorough No-Lambda Tests
|
|
|
+ run: |
|
|
|
+ cat > CMakeLists.txt << 'EOF'
|
|
|
+ cmake_minimum_required(VERSION 3.10)
|
|
|
+ project(TaskSchedulerThoroughNoLambdaTests 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"
|
|
|
+ )
|
|
|
+
|
|
|
+ # Create the thorough no-lambda test executable
|
|
|
+ add_executable(test_thorough_no_lambda
|
|
|
+ tests/test-scheduler-basic-thorough-no-lambda.cpp
|
|
|
${TASKSCHEDULER_SOURCES}
|
|
|
)
|
|
|
|
|
|
# Link libraries
|
|
|
- target_link_libraries(taskscheduler_tests
|
|
|
+ target_link_libraries(test_thorough_no_lambda
|
|
|
gtest
|
|
|
gtest_main
|
|
|
pthread
|
|
|
)
|
|
|
|
|
|
# Compiler definitions for Arduino compatibility
|
|
|
- target_compile_definitions(taskscheduler_tests PRIVATE
|
|
|
+ target_compile_definitions(test_thorough_no_lambda PRIVATE
|
|
|
ARDUINO=300
|
|
|
)
|
|
|
|
|
|
# Compiler flags
|
|
|
- target_compile_options(taskscheduler_tests PRIVATE
|
|
|
+ target_compile_options(test_thorough_no_lambda PRIVATE
|
|
|
-Wall
|
|
|
-Wextra
|
|
|
-O2
|
|
|
@@ -89,14 +160,98 @@ jobs:
|
|
|
|
|
|
# Enable testing
|
|
|
enable_testing()
|
|
|
- add_test(NAME TaskSchedulerUnitTests COMMAND taskscheduler_tests)
|
|
|
+ add_test(NAME ThoroughNoLambdaTests COMMAND test_thorough_no_lambda)
|
|
|
EOF
|
|
|
-
|
|
|
- - name: Build tests
|
|
|
+
|
|
|
+ - name: Build thorough no-lambda tests
|
|
|
run: |
|
|
|
cmake .
|
|
|
make -j$(nproc)
|
|
|
-
|
|
|
- - name: Run unit tests
|
|
|
+
|
|
|
+ - name: Run thorough no-lambda tests
|
|
|
+ run: |
|
|
|
+ echo "=== Running Thorough No-Lambda Tests ==="
|
|
|
+ ./test_thorough_no_lambda
|
|
|
+
|
|
|
+ test-advanced-no-lambda:
|
|
|
+ name: Advanced No-Lambda Tests
|
|
|
+ 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 for Advanced No-Lambda Tests
|
|
|
+ run: |
|
|
|
+ cat > CMakeLists.txt << 'EOF'
|
|
|
+ cmake_minimum_required(VERSION 3.10)
|
|
|
+ project(TaskSchedulerAdvancedNoLambdaTests 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"
|
|
|
+ )
|
|
|
+
|
|
|
+ # Create the advanced no-lambda test executable
|
|
|
+ add_executable(test_advanced_no_lambda
|
|
|
+ tests/test-scheduler-advanced-features-no-lambda.cpp
|
|
|
+ ${TASKSCHEDULER_SOURCES}
|
|
|
+ )
|
|
|
+
|
|
|
+ # Link libraries
|
|
|
+ target_link_libraries(test_advanced_no_lambda
|
|
|
+ gtest
|
|
|
+ gtest_main
|
|
|
+ pthread
|
|
|
+ )
|
|
|
+
|
|
|
+ # Compiler definitions for Arduino compatibility
|
|
|
+ target_compile_definitions(test_advanced_no_lambda PRIVATE
|
|
|
+ ARDUINO=300
|
|
|
+ )
|
|
|
+
|
|
|
+ # Compiler flags
|
|
|
+ target_compile_options(test_advanced_no_lambda PRIVATE
|
|
|
+ -Wall
|
|
|
+ -Wextra
|
|
|
+ -O2
|
|
|
+ )
|
|
|
+
|
|
|
+ # Enable testing
|
|
|
+ enable_testing()
|
|
|
+ add_test(NAME AdvancedNoLambdaTests COMMAND test_advanced_no_lambda)
|
|
|
+ EOF
|
|
|
+
|
|
|
+ - name: Build advanced no-lambda tests
|
|
|
+ run: |
|
|
|
+ cmake .
|
|
|
+ make -j$(nproc)
|
|
|
+
|
|
|
+ - name: Run advanced no-lambda tests
|
|
|
run: |
|
|
|
- ./taskscheduler_tests
|
|
|
+ echo "=== Running Advanced No-Lambda Tests ==="
|
|
|
+ ./test_advanced_no_lambda
|