diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19c7587..f791248 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,65 +16,15 @@ jobs: cargo fmt -- --version cargo fmt --all -- --check - windows: - runs-on: windows-2019 - steps: - - uses: actions/checkout@v4 + build: + strategy: + matrix: + os: + - windows-2019 + - ubuntu-20.04 - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - target/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + runs-on: ${{ matrix.os }} - - name: Prepare test resources - run: | - cd tests - - (New-Object Net.WebClient).DownloadFile('https://github.com/Ortham/testing-plugins/archive/1.4.0.zip', "$PWD/1.4.0.zip") - 7z x 1.4.0.zip - mv testing-plugins-1.4.0 testing-plugins - - (New-Object Net.WebClient).DownloadFile('https://github.com/loot/libloot/releases/download/0.18.2/libloot-0.18.2-0-gb1a9e31_0.18.2-win32.7z', "$PWD/libloot_win32.7z") - 7z x libloot_win32.7z - mv libloot-0.18.2-0-gb1a9e31_0.18.2-win32 libloot_win32 - - (New-Object Net.WebClient).DownloadFile('https://github.com/loot/libloot/releases/download/0.18.2/libloot-0.18.2-0-gb1a9e31_0.18.2-win64.7z', "$PWD/libloot_win64.7z") - 7z x libloot_win64.7z - mv libloot-0.18.2-0-gb1a9e31_0.18.2-win64 libloot_win64 - - (New-Object Net.WebClient).DownloadFile('https://github.com/loot/loot-api-python/releases/download/4.0.2/loot_api_python-4.0.2-0-gd356ac2_master-python2.7-win32.7z', "$PWD/loot_api_python.7z") - 7z x loot_api_python.7z - mv loot_api_python-4.0.2-0-gd356ac2_master-python2.7-win32 loot_api_python - - cd .. - - - name: Build and run tests - run: cargo test --all --all-features - - # Need to rebuild the FFI wrapper so that its binary is given a filename - # without a hash. - - name: Build FFI wrapper - run: | - cargo build --manifest-path ffi/Cargo.toml - cbindgen ffi/ -o ffi/include/loot_condition_interpreter.h - - # Use bash because PowerShell doesn't fail if one command fails. - - name: Build and run C++ tests - shell: bash - run: | - mkdir ffi/build - cd ffi/build - cmake .. - cmake --build . - ctest - - linux: - runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 @@ -90,43 +40,51 @@ jobs: - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov + if: runner.os == 'Linux' - name: Prepare test resources + shell: bash run: | cd tests - wget https://github.com/Ortham/testing-plugins/archive/1.4.1.tar.gz - tar -xf 1.4.1.tar.gz - mv testing-plugins-1.4.1 testing-plugins + curl -sSfLO 'https://github.com/Ortham/testing-plugins/archive/1.4.0.zip' + 7z x 1.4.0.zip + mv testing-plugins-1.4.0 testing-plugins - wget https://github.com/loot/libloot/releases/download/0.18.2/libloot-0.18.2-0-gb1a9e31_0.18.2-win32.7z + curl -sSfLO 'https://github.com/loot/libloot/releases/download/0.18.2/libloot-0.18.2-0-gb1a9e31_0.18.2-win32.7z' 7z x libloot-0.18.2-0-gb1a9e31_0.18.2-win32.7z mv libloot-0.18.2-0-gb1a9e31_0.18.2-win32 libloot_win32 - wget https://github.com/loot/libloot/releases/download/0.18.2/libloot-0.18.2-0-gb1a9e31_0.18.2-win64.7z + curl -sSfLO 'https://github.com/loot/libloot/releases/download/0.18.2/libloot-0.18.2-0-gb1a9e31_0.18.2-win64.7z' 7z x libloot-0.18.2-0-gb1a9e31_0.18.2-win64.7z mv libloot-0.18.2-0-gb1a9e31_0.18.2-win64 libloot_win64 - wget https://github.com/loot/loot-api-python/releases/download/4.0.2/loot_api_python-4.0.2-0-gd356ac2_master-python2.7-win32.7z + curl -sSfLO 'https://github.com/loot/loot-api-python/releases/download/4.0.2/loot_api_python-4.0.2-0-gd356ac2_master-python2.7-win32.7z' 7z x loot_api_python-4.0.2-0-gd356ac2_master-python2.7-win32.7z mv loot_api_python-4.0.2-0-gd356ac2_master-python2.7-win32 loot_api_python cd .. + - name: Build and run tests + run: cargo test --workspace + if: runner.os != 'Linux' + - name: Build and run tests with code coverage run: cargo llvm-cov --workspace --lcov --output-path lcov.info + if: runner.os == 'Linux' - name: Upload code coverage to Coveralls uses: coverallsapp/github-action@v2 + if: runner.os == 'Linux' # Need to rebuild the FFI wrapper so that its binary is given a filename # without a hash. - name: Build FFI wrapper + shell: bash run: | cargo build --manifest-path ffi/Cargo.toml cbindgen ffi/ -o ffi/include/loot_condition_interpreter.h - # Use bash because PowerShell doesn't fail if one command fails. - name: Build and run C++ tests shell: bash run: |