Skip to content

Merge pull request #772 from pguyot/w33/optimize-temp-stack #1500

Merge pull request #772 from pguyot/w33/optimize-temp-stack

Merge pull request #772 from pguyot/w33/optimize-temp-stack #1500

#
# 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/esp32/**'
- 'src/platforms/stm32/**'
- 'doc/**'
- 'LICENSES/**'
- '*.Md'
pull_request:
paths-ignore:
- 'src/platforms/esp32/**'
- 'src/platforms/stm32/**'
- 'doc/**'
- 'LICENSES/**'
- '*.Md'
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-22.04"
test_erlang_opts: "-s prime_smp"
otp: "24"
- os: "ubuntu-22.04"
test_erlang_opts: "-s prime_smp"
otp: "25"
- os: "ubuntu-22.04"
test_erlang_opts: "-s prime_smp"
otp: "26"
container: erlang:26
- os: "macos-latest"
otp: "23"
path_prefix: "/usr/local/opt/erlang@23/bin:"
cmake_opts: "-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
- os: "macos-latest"
otp: "24"
path_prefix: "/usr/local/opt/erlang@24/bin:"
cmake_opts: "-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
- os: "macos-latest"
otp: "25"
path_prefix: "/usr/local/opt/erlang@25/bin:"
cmake_opts: "-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
steps:
# Setup
- name: "Checkout repo"
uses: actions/checkout@v3
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
# Build
- name: "Build: create build dir"
run: mkdir build
- uses: actions/cache@v3
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