Skip to content

Forward port changes from v0.6 release branch #3067

Forward port changes from v0.6 release branch

Forward port changes from v0.6 release branch #3067

#
# Copyright 2022 Paul Guyot <[email protected]>
#
# 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/rp2/**'
- 'src/platforms/stm32/**'
- 'doc/**'
- 'LICENSES/**'
- '*.Md'
- '*.md'
pull_request:
paths-ignore:
- 'src/platforms/emscripten/**'
- 'src/platforms/esp32/**'
- 'src/platforms/rp2/**'
- '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-24.04"
test_erlang_opts: "-s prime_smp"
container: erlang:21
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
container: erlang:22
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
container: erlang:23
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
container: erlang:24
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
container: erlang:25
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
otp: "26"
container: erlang:26
- os: "ubuntu-24.04"
test_erlang_opts: "-s prime_smp"
otp: "27"
container: erlang:27
# This is ARM64
- os: "macos-14"
otp: "25"
path_prefix: "/opt/homebrew/opt/erlang@24/bin:"
- os: "macos-14"
otp: "26"
path_prefix: "/opt/homebrew/opt/erlang@25/bin:"
- os: "macos-14"
otp: "27"
path_prefix: "/opt/homebrew/opt/erlang@26/bin:"
steps:
# Setup
- name: "Checkout repo"
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: "Install deps (container)"
if: runner.os == 'Linux'
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 rebar3
# 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