cmake-action/.github/workflows/test.yml
Alfi Maulana ed7c2d179c
build: initialize JavaScript Action project (#69)
* build: initialize JavaScript action project

* chore(dependabot): check for npm package updates

* style: ignore `main` dir and `README.md` from being formatted

* ci: add Build workflow that contains Build Package job

* ci: add Test Package job in the Test workflow

* test: add an empty `main.test.ts` test

* chore: adjust Git attributes for `main/index.mjs` file

* docs(readme): add a build status badge
2023-11-20 18:25:22 +07:00

178 lines
5.0 KiB
YAML

name: test
on:
workflow_dispatch:
pull_request:
push:
branches: [latest, main]
jobs:
test-package:
name: Test Package
runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false
matrix:
os: [windows, ubuntu, macos]
env:
NODE_OPTIONS: --experimental-vm-modules
steps:
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Setup Node.js
uses: actions/setup-node@v4.0.0
with:
node-version: latest
- name: Cache deps
uses: actions/cache@v3.3.2
with:
path: .yarn
key: yarn-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
- name: Install deps
run: corepack enable && yarn install
- name: Test lib
run: yarn test
default-usage:
runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false
matrix:
os: [windows, ubuntu, macos]
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Move the test project to the working directory
run: mv test/* .
- name: Use the action
id: cmake-action
uses: ./
- name: Try to test the project
id: failed-step
continue-on-error: true
run: ctest --test-dir ${{ steps.cmake-action.outputs.build-dir }} --output-on-failure --no-tests=error -R hello_world ${{ matrix.os == 'windows' && '-C Debug' || '' }}
- name: Check on success
if: steps.failed-step.outcome == 'success'
run: exit 1
- name: Build and test the project
run: |
cmake --build ${{ steps.cmake-action.outputs.build-dir }}
ctest --test-dir ${{ steps.cmake-action.outputs.build-dir }} --output-on-failure --no-tests=error -R hello_world ${{ matrix.os == 'windows' && '-C Debug' || '' }}
specified-dir-usage:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Use the action with specified directories
id: cmake-action
uses: ./
with:
source-dir: test
build-dir: output
- name: Check if the default build directory does not exist
shell: bash
run: test ! -e build && test ! -e test/build
- name: Build and test the project
run: |
cmake --build ${{ steps.cmake-action.outputs.build-dir }}
ctest --test-dir ${{ steps.cmake-action.outputs.build-dir }} --output-on-failure --no-tests=error -R hello_world
run-build-usage:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Use the action with run build enabled
id: cmake-action
uses: ./
with:
source-dir: test
run-build: true
build-args: --target test_c --target test_cpp
- name: Test the project
run: ctest --test-dir ${{ steps.cmake-action.outputs.build-dir }} --output-on-failure --no-tests=error -R test
run-test-usage:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Use the action with run test enabled
uses: ./
with:
source-dir: test
run-test: true
test-args: -R hello_world
additional-flags-usage:
runs-on: ${{ matrix.compiler == 'msvc' && 'windows' || 'ubuntu' }}-latest
strategy:
fail-fast: false
matrix:
compiler: [gcc, msvc]
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Use the action with additional compiler flags
uses: ./
with:
source-dir: test
c-flags: ${{ matrix.compiler == 'msvc' && '/w /WX-' || '-Wno-unused-variable' }}
cxx-flags: ${{ matrix.compiler == 'msvc' && '/w /WX-' || '-Wno-unused-variable' }}
options: CHECK_SURPASS_WARNING=ON
run-build: true
build-args: --target test_c --target test_cpp
run-test: true
test-args: -R test ${{ matrix.compiler == 'msvc' && '-C Debug' || '' }}
specified-generator-and-compiler-usage:
runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false
matrix:
os: [windows, ubuntu, macos]
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Use the action with specified generator and compilers
uses: ./
with:
source-dir: test
generator: Ninja
c-compiler: clang
cxx-compiler: clang++
options: CHECK_USING_CLANG=ON
run-build: true
build-args: --target test_c --target test_cpp
run-test: true
test-args: -R test
specified-shell:
runs-on: windows-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Use the action with specified shell
uses: ./
with:
shell: bash
source-dir: test
run-build: true