Skip to content

Add support for eunit module #1583

Add support for eunit module

Add support for eunit module #1583

#
# Copyright 2022 Paul Guyot <pguyot@kallisys.net>
#
# SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
#
name: Run tests with BEAM
on:
push:
paths-ignore:
- 'src/platforms/emscripten/**'
- 'src/platforms/esp32/**'
- 'src/platforms/rp2040/**'
- 'src/platforms/stm32/**'
- 'doc/**'
- 'LICENSES/**'
- '*.Md'
- '*.md'
pull_request:
paths-ignore:
- 'src/platforms/emscripten/**'
- 'src/platforms/esp32/**'
- 'src/platforms/rp2040/**'
- 'src/platforms/stm32/**'
- 'doc/**'
- 'LICENSES/**'
- '*.Md'
- '*.md'
concurrency:
group: ${{ github.workflow }}-${{ github.ref != 'refs/heads/main' && github.ref || github.run_id }}
cancel-in-progress: true
jobs:
run-tests:
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
include:
- os: "ubuntu-20.04"
test_erlang_opts: "-s prime_smp"
otp: "21"
- os: "ubuntu-20.04"
test_erlang_opts: "-s prime_smp"
otp: "22"
- os: "ubuntu-20.04"
test_erlang_opts: "-s prime_smp"
otp: "23"
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
otp: "24"
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
otp: "25"
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp,test_gc"
otp: "26"
container: erlang:26
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp,test_gc"
otp: "27"
container: erlang:27
# This is ARM64
- os: "macos-14"
otp: "24"
path_prefix: "/opt/homebrew/opt/erlang@24/bin:"
- os: "macos-14"
otp: "25"
path_prefix: "/opt/homebrew/opt/erlang@25/bin:"
- os: "macos-14"
otp: "26"
path_prefix: "/opt/homebrew/opt/erlang@26/bin:"
steps:
# Setup
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: 'recursive'
- uses: erlef/setup-beam@v1
if: runner.os == 'Linux' && matrix.container == ''
with:
otp-version: ${{ matrix.otp }}
- name: "Install deps (Linux)"
if: runner.os == 'Linux' && matrix.container == ''
run: |
sudo apt update -y
sudo apt install -y cmake gperf zlib1g-dev ninja-build
- name: "Install deps (container)"
if: runner.os == 'Linux' && matrix.container != ''
run: |
apt update -y
apt install -y cmake gperf zlib1g-dev ninja-build
- name: "Install deps (macOS)"
if: runner.os == 'macOS'
run: brew install gperf erlang@${{ matrix.otp }} ninja mbedtls
# Build
- name: "Build: create build dir"
run: mkdir build
- uses: actions/cache@v4
id: cache
with:
path: 'build/tests/**/*.beam'
key: ${{ matrix.otp }}-${{ hashFiles('**/run-tests-with-beam.yaml', 'tests/**/*.erl') }}
- name: "Build: run cmake"
working-directory: build
run: |
export PATH="${{ matrix.path_prefix }}$PATH"
cmake -G Ninja ${{ matrix.cmake_opts }} ..
- name: "Touch files to benefit from cache"
working-directory: build
run: |
# git clone will use more recent timestamps than cached beam files
# touch them so we can benefit from the cache and avoid costly beam file rebuild.
find . -name '*.beam' -exec touch {} \;
- name: "Build: run ninja"
working-directory: build
run: |
export PATH="${{ matrix.path_prefix }}$PATH"
ninja
# Test
- name: "Test: test-erlang with BEAM"
timeout-minutes: 10
working-directory: build
run: |
export PATH="${{ matrix.path_prefix }}$PATH"
./tests/test-erlang -b ${{ matrix.test_erlang_opts }}
# Test
- name: "Test: estdlib/ with BEAM"
timeout-minutes: 10
working-directory: build
run: |
export PATH="${{ matrix.path_prefix }}$PATH"
erl -pa tests/libs/estdlib/ -pa tests/libs/estdlib/beams/ -pa libs/etest/src/beams -s tests -s init stop -noshell
# Test
- name: "Run tests/libs/etest/test_eunit with OTP eunit"
timeout-minutes: 10
working-directory: build
run: |
export PATH="${{ matrix.path_prefix }}$PATH"
erl -pa tests/libs/etest/beams -s test_eunit test -s init stop -noshell