Merge pull request #41 from mukesh-2096/consolidate-tests #24
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: TidesDB Lua CI | |
| on: | |
| push: | |
| branches: [ "master" ] | |
| pull_request: | |
| branches: [ "master" ] | |
| workflow_dispatch: | |
| jobs: | |
| build-and-test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-latest | |
| name: Linux x64 | |
| - os: macos-latest | |
| name: macOS x64 | |
| - os: windows-latest | |
| name: Windows x64 | |
| runs-on: ${{ matrix.os }} | |
| name: ${{ matrix.name }} | |
| steps: | |
| - name: Checkout tidesdb-lua repo | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: tidesdb/tidesdb-lua | |
| path: tidesdb-lua | |
| - name: Checkout tidesdb repo | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: tidesdb/tidesdb | |
| path: tidesdb | |
| - name: Install dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt update | |
| sudo apt install -y libzstd-dev liblz4-dev libsnappy-dev build-essential cmake pkg-config luajit libluajit-5.1-dev | |
| - name: Install dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: brew install zstd lz4 snappy luajit | |
| - name: Setup MSYS2 (Windows) | |
| if: runner.os == 'Windows' | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: MINGW64 | |
| update: true | |
| install: >- | |
| mingw-w64-x86_64-gcc | |
| mingw-w64-x86_64-cmake | |
| mingw-w64-x86_64-make | |
| mingw-w64-x86_64-zstd | |
| mingw-w64-x86_64-lz4 | |
| mingw-w64-x86_64-snappy | |
| mingw-w64-x86_64-luajit | |
| - name: Configure and build TidesDB (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| cd tidesdb | |
| cmake -S . -B build -DTIDESDB_BUILD_TESTS=OFF -DTIDESDB_WITH_SANITIZER=OFF | |
| cmake --build build --config Release | |
| sudo cmake --install build | |
| sudo ldconfig | |
| - name: Configure and build TidesDB (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| cd tidesdb | |
| export HOMEBREW_PREFIX=$(brew --prefix) | |
| cmake -S . -B build \ | |
| -DTIDESDB_BUILD_TESTS=OFF \ | |
| -DTIDESDB_WITH_SANITIZER=OFF \ | |
| -DCMAKE_PREFIX_PATH="${HOMEBREW_PREFIX}" | |
| cmake --build build --config Release | |
| sudo cmake --install build | |
| - name: Create CMake config files for MSYS2 packages (Windows) | |
| if: runner.os == 'Windows' | |
| shell: msys2 {0} | |
| run: | | |
| MINGW_PREFIX_WIN=$(cygpath -m /mingw64) | |
| mkdir -p /mingw64/lib/cmake/lz4 | |
| mkdir -p /mingw64/lib/cmake/zstd | |
| mkdir -p /mingw64/lib/cmake/Snappy | |
| mkdir -p /mingw64/lib/cmake/PThreads4W | |
| cat > /mingw64/lib/cmake/lz4/lz4-config.cmake << EOF | |
| if(NOT TARGET lz4::lz4) | |
| add_library(lz4::lz4 SHARED IMPORTED) | |
| set_target_properties(lz4::lz4 PROPERTIES | |
| IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/liblz4.dll" | |
| IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/liblz4.dll.a" | |
| INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include" | |
| ) | |
| endif() | |
| EOF | |
| cat > /mingw64/lib/cmake/zstd/zstd-config.cmake << EOF | |
| if(NOT TARGET zstd::libzstd_shared) | |
| add_library(zstd::libzstd_shared SHARED IMPORTED) | |
| set_target_properties(zstd::libzstd_shared PROPERTIES | |
| IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libzstd.dll" | |
| IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libzstd.dll.a" | |
| INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include" | |
| ) | |
| endif() | |
| EOF | |
| cat > /mingw64/lib/cmake/Snappy/Snappy-config.cmake << EOF | |
| if(NOT TARGET Snappy::snappy) | |
| add_library(Snappy::snappy SHARED IMPORTED) | |
| set_target_properties(Snappy::snappy PROPERTIES | |
| IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libsnappy.dll" | |
| IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libsnappy.dll.a" | |
| INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include" | |
| ) | |
| endif() | |
| EOF | |
| cat > /mingw64/lib/cmake/PThreads4W/PThreads4W-config.cmake << EOF | |
| if(NOT TARGET PThreads4W::PThreads4W) | |
| add_library(PThreads4W::PThreads4W SHARED IMPORTED) | |
| set_target_properties(PThreads4W::PThreads4W PROPERTIES | |
| IMPORTED_LOCATION "${MINGW_PREFIX_WIN}/bin/libwinpthread-1.dll" | |
| IMPORTED_IMPLIB "${MINGW_PREFIX_WIN}/lib/libpthread.dll.a" | |
| INTERFACE_INCLUDE_DIRECTORIES "${MINGW_PREFIX_WIN}/include" | |
| ) | |
| endif() | |
| EOF | |
| - name: Configure and build TidesDB (Windows) | |
| if: runner.os == 'Windows' | |
| shell: msys2 {0} | |
| run: | | |
| cd tidesdb | |
| cmake -G "MinGW Makefiles" \ | |
| -DCMAKE_MAKE_PROGRAM=mingw32-make \ | |
| -DCMAKE_PREFIX_PATH=/mingw64 \ | |
| -DTIDESDB_WITH_SANITIZER=OFF \ | |
| -DTIDESDB_BUILD_TESTS=OFF \ | |
| -DBUILD_SHARED_LIBS=ON \ | |
| -S . -B build | |
| cmake --build build --config Release | |
| cmake --install build --prefix /mingw64 | |
| cp build/libtidesdb.dll /mingw64/bin/ | |
| - name: Run Lua tests (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| cd tidesdb-lua | |
| export LUA_PATH="./src/?.lua;./src/?/init.lua;;" | |
| luajit tests/test_tidesdb.lua | |
| - name: Run Lua tests (macOS) | |
| if: runner.os == 'macOS' | |
| run: | | |
| cd tidesdb-lua | |
| export LUA_PATH="./src/?.lua;./src/?/init.lua;;" | |
| luajit tests/test_tidesdb.lua | |
| - name: Run Lua tests (Windows) | |
| if: runner.os == 'Windows' | |
| shell: msys2 {0} | |
| run: | | |
| export PATH="/mingw64/bin:/mingw64/lib:$PATH" | |
| cd tidesdb-lua | |
| export LUA_PATH="./src/?.lua;./src/?/init.lua;;" | |
| luajit tests/test_tidesdb.lua |