github: ci: add tests
authorÁlvaro Fernández Rojas <[email protected]>
Fri, 14 Nov 2025 07:50:24 +0000 (08:50 +0100)
committerÁlvaro Fernández Rojas <[email protected]>
Fri, 14 Nov 2025 08:55:05 +0000 (09:55 +0100)
Build ubus with UNIT_TESTING and execute tests.

Signed-off-by: Álvaro Fernández Rojas <[email protected]>
.github/workflows/ci.yml
tests/CMakeLists.txt

index 3c7600dc1d6497f03085c60cb33a031617afef46..ce72df24330d423ab30e099004dc96cf53ff7d11 100644 (file)
@@ -153,3 +153,80 @@ jobs:
           echo "| :---: | :---: | :---: | :---: | :---: |" >> $GITHUB_STEP_SUMMARY
           echo "| basic | ${size_aarch64_basic} | ${size_arm_basic} | ${size_mips_basic} | ${size_x86_64_basic} |" >> $GITHUB_STEP_SUMMARY
           echo "| full | ${size_aarch64_full} | ${size_arm_full} | ${size_mips_full} | ${size_x86_64_full} |" >> $GITHUB_STEP_SUMMARY
+
+  tests:
+    name: Tests
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout ubus
+        uses: actions/checkout@v5
+
+      - name: Checkout json-c
+        uses: actions/checkout@v5
+        with:
+          repository: json-c/json-c
+          path: depends/json-c
+
+      - name: Checkout libubox
+        uses: actions/checkout@v5
+        with:
+          repository: openwrt/libubox
+          path: depends/libubox
+
+      - name: Install dependencies
+        run: |
+          sudo apt update
+          sudo apt install valgrind
+
+      - name: Prepare build
+        run: |
+          mkdir -p ${GITHUB_WORKSPACE}/build
+          mkdir -p ${GITHUB_WORKSPACE}/depends/lua
+          echo "${GITHUB_WORKSPACE}/build/bin" >> $GITHUB_PATH
+
+      - name: Build json-c
+        working-directory: depends/json-c
+        run: |
+          cmake \
+            -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
+            -DBUILD_SHARED_LIBS=OFF \
+            -DDISABLE_EXTRA_LIBS=ON \
+            -DBUILD_TESTING=OFF \
+            --install-prefix ${GITHUB_WORKSPACE}/build
+          make
+          make install
+
+      - name: Build lua
+        working-directory: depends/lua
+        run: |
+          wget -qO- https://www.lua.org/ftp/lua-${{ env.LUA_VERSION }}.tar.gz | \
+            tar zxvf - --strip-components=1
+          sed -i '/#define LUA_USE_READLINE/d' src/luaconf.h
+          sed -i 's/ -lreadline -lhistory -lncurses//g' src/Makefile
+          make linux install \
+            INSTALL_TOP=${GITHUB_WORKSPACE}/build
+
+      - name: Build libubox
+        working-directory: depends/libubox
+        run: |
+          cmake \
+            -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
+            -DBUILD_LUA=ON \
+            -DBUILD_EXAMPLES=OFF \
+            -DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua \
+            --install-prefix ${GITHUB_WORKSPACE}/build
+          make
+          make install
+
+      - name: Build ubus
+        run: |
+          cmake \
+            -DCMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/build \
+            -DBUILD_LUA=ON \
+            -DUNIT_TESTING=ON \
+            -DLUAPATH=${GITHUB_WORKSPACE}/build/lib/lua
+          make
+
+      - name: Test ubus
+        run: |
+          make test CTEST_OUTPUT_ON_FAILURE=1
index 5549a4079f1e90404983503c8d5fb6007fd59f36..f0900e9c4ff60e870459f2b531d8229b41b97111 100644 (file)
@@ -1,14 +1,16 @@
 ADD_SUBDIRECTORY(cram)
 
+FIND_LIBRARY(json_script_library NAMES json_script)
+
 MACRO(ADD_UNIT_TEST name)
   ADD_EXECUTABLE(${name} ${name}.c)
-  TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${json})
+  TARGET_LINK_LIBRARIES(${name} ${ubox_library} ${blob_library} ${json_script_library} ${json})
   TARGET_INCLUDE_DIRECTORIES(${name} PRIVATE ${PROJECT_SOURCE_DIR})
 ENDMACRO(ADD_UNIT_TEST)
 
 MACRO(ADD_UNIT_TEST_CPP name)
   ADD_EXECUTABLE(${name} ${name}.cpp)
-  TARGET_LINK_LIBRARIES(${name} ubox blobmsg_json json_script ${json})
+  TARGET_LINK_LIBRARIES(${name} ${ubox_library} ${blob_library} ${json_script_library} ${json})
   TARGET_INCLUDE_DIRECTORIES(${name} PRIVATE ${PROJECT_SOURCE_DIR})
 ENDMACRO(ADD_UNIT_TEST_CPP)