Compare commits

...

53 Commits

Author SHA1 Message Date
GitHub Actions 54075bcc5e Automation: update setup-beam version output to ea45c80 2026-06-28 16:35:41 +00:00
Jonatan Männchen ea45c8043f Remove lodash Dependency (#457)
NodeJS 24 contains RegExp.escape, no need for lodash.
2026-06-28 17:35:21 +01:00
GitHub Actions b4b8d851b6 Automation: update setup-beam version output to 20df794 2026-06-28 15:16:26 +00:00
dependabot[bot] 20df794ab3 Bump globals from 17.4.0 to 17.7.0 (#452)
Bumps [globals](https://github.com/sindresorhus/globals) from 17.4.0 to 17.7.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.4.0...v17.7.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 17.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:16:07 +01:00
GitHub Actions 9d5c5ca125 Automation: update setup-beam version output to ad42943 2026-06-28 15:14:47 +00:00
dependabot[bot] ad4294342c Bump prettier from 3.8.1 to 3.9.1 (#454)
Bumps [prettier](https://github.com/prettier/prettier) from 3.8.1 to 3.9.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.8.1...3.9.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:14:29 +01:00
GitHub Actions 135c095dff Automation: update setup-beam version output to a04cfbb 2026-06-28 15:13:05 +00:00
dependabot[bot] a04cfbb50e Bump eslint from 10.1.0 to 10.6.0 (#453)
Bumps [eslint](https://github.com/eslint/eslint) from 10.1.0 to 10.6.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.1.0...v10.6.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:12:05 +01:00
GitHub Actions cd1472f941 Automation: update setup-beam version output to c80fdc9 2026-06-28 15:09:08 +00:00
dependabot[bot] c80fdc938c Bump actions/checkout from 6.0.2 to 7.0.0 (#467)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 7.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6.0.2...v7.0.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-28 16:08:48 +01:00
GitHub Actions aecd7abd75 Automation: update setup-beam version output to 6e9312b 2026-06-28 14:53:40 +00:00
Paulo F. Oliveira 6e9312bce0 fix: broken tests (mostly out of stuff being outdated) (#468)
* Update rebar3's releases.json per current results

* Up rebar3 test versions

* Retire windows-2019

* Add "support" to win25-vs2026 next to win25

windows-2025-vs2026 label was previously a beta testing
tag but is now the production default

* Fix rebar3 test releases.json

* Bump per CI results

* Fix per CI results (I checked in releases.json)

* Adapt to Ubuntu 26.04 (no -arm)

* Consider Ubuntu ARM variants in execution

* Typo

* Bump it to the minimum expect value

* Bump it to the minimum expect value

* Tweak ARM tests: drop windows-11

* Fix per prior test results

* Try testing OTP to update README

* Improve guarantees on the README (via tests)

* Improve guarantees on the README (via tests)

Trust tests in intervals (if first Ok and last Ok the middle Ok)

* Add further constraints for testing (per README)

* Remove moving-target test

This is prone to fail for an issue with OTP's main
branch but it shouldn't affect the action, so we
remove it

* Respect Hex's boundaries

* Make it consistent (no need for .0 in versioning)

* Restrict it a bit

We keep the README as-is, since there's nothing preventing us
from thinking it works as stated, but we move our tests forward

* Make it easier to follow

* Fix it per stalled CI

* Fix it: no macos-16; it's macos-26

* Deprecate macos-13

Per https://github.blog/changelog/2025-07-11-upcoming-changes-to-macos-hosted-runners-macos-latest-migration-and-xcode-support-policy-updates/#macos-13-is-closing-down

* Make ImageOS support more explicit

* Move forward
2026-06-28 15:53:20 +01:00
GitHub Actions 3985c7c047 Automation: update setup-beam version output to 35f5255 2026-06-28 12:40:09 +00:00
github-actions[bot] 35f52551d2 Update 3rd party licenses (automation) (#469)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-28 13:39:52 +01:00
GitHub Actions 0510550330 Automation: update setup-beam version output to 9eabb2c 2026-06-28 11:42:59 +00:00
github-actions[bot] 9eabb2c115 Update 3rd party licenses (automation) (#459)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-28 12:42:40 +01:00
GitHub Actions e5f1a7b722 Automation: update setup-beam version output to 7a27046 2026-04-29 01:33:13 +00:00
github-actions[bot] 7a27046239 Update 3rd party licenses (automation) (#446)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-04-29 02:32:56 +01:00
GitHub Actions fc68ffb904 Automation: update setup-beam version output to 190c3a5 2026-03-30 09:54:16 +00:00
Mitchell Henke 190c3a5e7b Fix error that occurs when parsing TOML files that use dotted keys (#444)
* Add test for parsing TOML file with dotted keys

* Use smol-toml instead of toml for TOML parsing

* Run build-dist
2026-03-30 10:53:57 +01:00
GitHub Actions 92dab893ed Automation: update setup-beam version output to 5dfda65 2026-03-28 23:59:28 +00:00
Paulo F. Oliveira 5dfda65506 fix: address Prototype Pollution via parse() in NodeJS flatted (#445)
Address Prototype Pollution via parse() in NodeJS flatted
2026-03-28 23:59:07 +00:00
GitHub Actions ef385d6edc Automation: update setup-beam version output to bf3c3af 2026-03-27 12:34:17 +00:00
dependabot[bot] bf3c3af135 Bump picomatch from 4.0.3 to 4.0.4 in the npm_and_yarn group across 1 directory (#443)
Bump picomatch in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [picomatch](https://github.com/micromatch/picomatch).


Updates `picomatch` from 4.0.3 to 4.0.4
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 12:33:58 +00:00
GitHub Actions e7645e4102 Automation: update setup-beam version output to a36098e 2026-03-27 12:28:06 +00:00
dependabot[bot] a36098e741 Bump csv-parse from 6.1.0 to 6.2.1 (#440)
* Bump csv-parse from 6.1.0 to 6.2.1

Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 6.1.0 to 6.2.1.
- [Changelog](https://github.com/adaltas/node-csv/blob/master/packages/csv-parse/CHANGELOG.md)
- [Commits](https://github.com/adaltas/node-csv/commits/csv-parse@6.2.1/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot out: npm run build-dist

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-27 12:27:46 +00:00
GitHub Actions 87781dc68a Automation: update setup-beam version output to d5f3979 2026-03-27 12:20:31 +00:00
Levi Buzolic d5f3979a5f Support Node 24 runtime (#426)
Update the action runtime, engine constraint, and CI workflow pins from Node 20 to Node 24 per GitHub's guidance on the deprecation of Node 20 on GitHub Actions runners: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-03-27 12:20:13 +00:00
GitHub Actions 930b3281ba Automation: update setup-beam version output to 30056ca 2026-03-27 12:18:44 +00:00
github-actions[bot] 30056ca086 Update 3rd party licenses (automation) (#442)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-27 12:18:24 +00:00
GitHub Actions 1f3f354e6a Automation: update setup-beam version output to 3e49772 2026-03-27 12:11:39 +00:00
github-actions[bot] 3e49772722 Update 3rd party licenses (automation) (#436)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-27 12:11:17 +00:00
dependabot[bot] 2ac22cd739 Bump yauzl from 3.2.0 to 3.2.1 in the npm_and_yarn group across 1 directory (#437)
Bump yauzl in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [yauzl](https://github.com/thejoshwolfe/yauzl).


Updates `yauzl` from 3.2.0 to 3.2.1
- [Commits](https://github.com/thejoshwolfe/yauzl/compare/3.2.0...3.2.1)

---
updated-dependencies:
- dependency-name: yauzl
  dependency-version: 3.2.1
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 12:11:05 +00:00
GitHub Actions c4782c7b58 Automation: update setup-beam version output to 0afadf6 2026-03-27 12:10:54 +00:00
dependabot[bot] 0afadf6bdd Bump eslint from 10.0.3 to 10.1.0 (#439)
Bumps [eslint](https://github.com/eslint/eslint) from 10.0.3 to 10.1.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.0.3...v10.1.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-27 12:10:34 +00:00
GitHub Actions e539b1ee26 Automation: update setup-beam version output to c5f0656 2026-03-15 18:22:01 +00:00
github-actions[bot] c5f0656346 Update 3rd party licenses (automation) (#435)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-15 18:21:42 +00:00
GitHub Actions ee09b1e59b Automation: update setup-beam version output to f8b54b5 2026-03-14 20:10:39 +00:00
Paulo F. Oliveira f8b54b559e Run ARM-specific tests consistently (#434)
* Run ARM-specific test consistently

* Fix for builds.hex.pm

https://builds.hex.pm/builds/otp/arm64/ubuntu-<x>.04/builds.txt

file is only available when <x> >= 20.

* Fix for builds.hex.pm

https://builds.hex.pm/builds/otp/arm64/ubuntu-20.04/builds.txt

does not contain Erlang 19 any more...
2026-03-14 20:10:19 +00:00
GitHub Actions bf1ce74034 Automation: update setup-beam version output to 559a930 2026-03-14 16:57:33 +00:00
dependabot[bot] 559a930751 Bump undici from 6.23.0 to 6.24.0 in the npm_and_yarn group across 1 directory (#432)
* Bump undici in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [undici](https://github.com/nodejs/undici).


Updates `undici` from 6.23.0 to 6.24.0
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.23.0...v6.24.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 6.24.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

* Help Dependabot (exec: npm run build-dist)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-14 16:57:11 +00:00
GitHub Actions 1380ebe712 Automation: update setup-beam version output to 0a54959 2026-03-14 16:50:39 +00:00
Sebastian Weddmark Olsson 0a549596b0 Compatibility matrix strategy (#389)
* Compatibility matrix strategy

Example on how one can maintain a compatibility matrix

* v2 -> v4

Co-authored-by: Kian-Meng Ang <kianmeng.ang@gmail.com>

* ubuntu-18 not longer available

* Update README.md after review suggestions

* Link rebar3 compat

Apparently rebar3 has started to maintain a version compatability table themselves. Missing older versions though

| 3.10.0 | 17         |
| 3.11.1 | 18         |

* Tweak README change proposal

* Apply suggestions from code review

Apply changes to resolve linter warnings

Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>

---------

Co-authored-by: Kian-Meng Ang <kianmeng.ang@gmail.com>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-14 16:50:22 +00:00
GitHub Actions 3a3c94fd9e Automation: update setup-beam version output to cfafb69 2026-03-14 16:43:34 +00:00
Daniel Widgren cfafb69ddd feat: add Erlang problem matchers (#433)
* feat: add Erlang problem matchers for erlc, dialyzer, CT, and EUnit

Adds GitHub Actions problem matchers for Erlang tooling, matching the
existing Elixir matcher support. Covers erlc errors/warnings (which
also catches dialyzer output), Common Test failures, and EUnit failures.

Closes #390

* chore: rebuild dist bundle and format test file

* refactor: move Erlang matchers into installOTP function

Moves maybeEnableErlangProblemMatchers() call inside installOTP(),
between setOutput and endGroup, matching the Elixir pattern.

* refactor: extract generic maybeEnableProblemMatchers function

Replaces separate maybeEnableErlangProblemMatchers and
maybeEnableElixirProblemMatchers with a single generic
maybeEnableProblemMatchers(language) and a problemMatchersEnabled()
helper.

* fix: use static paths for ncc to resolve matcher JSON files

ncc cannot trace dynamic template literals, so the matcher JSON files
were not being copied to dist/. Use a static map of paths instead.
2026-03-14 16:43:14 +00:00
GitHub Actions b3cbb6afbf Automation: update setup-beam version output to 2abe6cd 2026-03-14 16:30:13 +00:00
peter madsen-mygdal 2abe6cda7a fix: download correct Gleam binary for macOS and Linux ARM64 (#428)
The Gleam installer had two arch-related bugs:

1. Darwin reused the Linux config (installOpts.darwin = installOpts.linux),
   downloading x86_64-unknown-linux-musl on macOS, causing ENOEXEC.

2. Linux hardcoded x86_64, downloading the wrong binary on ARM64 runners,
   causing 'Syntax error' when trying to execute an x86_64 ELF.

Add arch detection via getRunnerOSArchitecture() to both Linux and
Darwin download URLs, selecting the correct aarch64 or x86_64 binary.
Add a proper Darwin config that downloads apple-darwin archives.
2026-03-14 16:29:49 +00:00
GitHub Actions d55fdba43f Automation: update setup-beam version output to eb86ad6 2026-03-14 16:29:25 +00:00
peter madsen-mygdal eb86ad6523 feat: add macOS-26 to supported ImageOS mappings (#430)
Add macos26 to the ImageOSToContainer map so runners using
macOS-26 are recognized instead of throwing an error.

Update macos.yml

Update README.md
2026-03-14 16:28:58 +00:00
GitHub Actions af6da5da48 Automation: update setup-beam version output to f018c1e 2026-03-13 23:46:13 +00:00
peter madsen-mygdal f018c1e6d8 fix: use dynamic import in tests to prevent ESM hoisting race (#429)
Static ESM imports are hoisted above top-level statements, causing
setup-beam.js to evaluate its main() guard before process.env.NODE_ENV
is set to 'test'. This triggered core.setFailed() during module load,
setting process.exitCode=1 and failing the test file even though all
individual test cases passed.

Switch setup-beam.js to a dynamic await import() so that the env and
input setup runs first, ensuring the NODE_ENV='test' guard works
correctly.

Amp-Thread-ID: https://ampcode.com/threads/T-019ce36a-a18f-7494-ac0a-c094a84f06ad

Co-authored-by: Amp <amp@ampcode.com>
2026-03-13 23:45:53 +00:00
GitHub Actions d843ebb78b Automation: update setup-beam version output to c8e0954 2026-03-11 17:47:37 +00:00
github-actions[bot] c8e09547a7 Update 3rd party licenses (automation) (#425)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-11 17:47:17 +00:00
17 changed files with 2806 additions and 21718 deletions
+27 -13
View File
@@ -24,7 +24,7 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Version it!
run: |
# We expect a string such as const setupBeamVersion = 'undefined' in the code
@@ -45,10 +45,10 @@ jobs:
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
node-version: '24'
- run: npm run build-dist
- name: Check if build left artifacts
run: git diff --exit-code --ignore-space-at-eol
@@ -58,17 +58,22 @@ jobs:
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- uses: raven-actions/actionlint@v2.1.2
unit_tests_ubuntu:
name: Unit tests (Ubuntu)
runs-on: ubuntu-latest
strategy:
matrix:
os:
- ubuntu-24.04-arm # ARM64
- ubuntu-latest # x86_64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
node-version: '24'
- run: npm ci
- run: npm test
env:
@@ -84,12 +89,16 @@ jobs:
unit_tests_windows:
name: Unit tests (Windows)
runs-on: windows-latest
strategy:
matrix:
os:
- windows-latest # x86_64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
node-version: '24'
- run: npm install --production
- run: npm test
env:
@@ -105,12 +114,17 @@ jobs:
unit_tests_macos:
name: Unit tests (macOS)
runs-on: macos-latest
strategy:
matrix:
os:
- macos-latest # ARM64
- macos-15-intel # x86_64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- uses: actions/setup-node@v6.3.0
with:
node-version: '20'
node-version: '24'
- run: npm ci
- run: npm test
env:
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
install-rebar: [true, false]
install-hex: [true, false]
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
+21 -10
View File
@@ -16,6 +16,7 @@ on:
jobs:
integration_test:
name: >
OS ${{matrix.combo.os}},
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
rebar3 ${{matrix.combo.rebar3-version}}
@@ -24,6 +25,22 @@ jobs:
fail-fast: false
matrix:
combo:
# macOS 14 - per README
- otp-version: '25'
os: 'macos-14'
- otp-version: '29'
os: 'macos-14'
# macOS 15 - per README
- otp-version: '25'
os: 'macos-15'
- otp-version: '29'
os: 'macos-15'
# macOS 26 - per README
- otp-version: '25'
os: 'macos-26'
- otp-version: '29'
os: 'macos-26'
# macOS latest
- otp-version: '27'
elixir-version: 'v1.17.0'
rebar3-version: '3.23'
@@ -43,19 +60,13 @@ jobs:
elixir-version: '1.14.3'
os: 'macos-latest'
version-type: 'strict'
- otp-version: '25'
os: 'macos-15'
- otp-version: '26'
elixir-version: '1.16'
rebar3-version: '3.25'
os: 'macos-14'
- otp-version: '25.0'
elixir-version: 'v1.13.4-otp-25'
elixir-version: 'v1.16.3-otp-25'
rebar3-version: '3.18.0'
os: 'macos-latest'
version-type: 'strict'
- otp-version: '25.0'
elixir-version: 'v1.13.4'
elixir-version: 'v1.16.3'
rebar3-version: '3.18.0'
os: 'macos-latest'
version-type: 'strict'
@@ -65,7 +76,7 @@ jobs:
rebar3-version: 'latest'
os: 'macos-latest'
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -118,7 +129,7 @@ jobs:
rebar3-version: 3.24
os: macos-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
+19 -17
View File
@@ -16,6 +16,7 @@ on:
jobs:
integration_test:
name: >
OS ${{matrix.combo.os}},
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
Gleam ${{matrix.combo.gleam-version}},
@@ -25,15 +26,22 @@ jobs:
fail-fast: false
matrix:
combo:
- otp-version: '<26'
elixir-version: '<1.17'
# Ubuntu 22.04 - per README
- otp-version: '24.2'
os: 'ubuntu-22.04'
- otp-version: 'master'
elixir-version: '> 0'
- otp-version: '29'
os: 'ubuntu-22.04'
# Ubuntu 24.04 - per README
- otp-version: '24.3'
os: 'ubuntu-24.04'
- otp-version: 'master'
elixir-version: 'main'
- otp-version: '29'
os: 'ubuntu-24.04'
# Ubuntu 26.04 - per README
- otp-version: '26'
os: 'ubuntu-26.04'
- otp-version: '29'
os: 'ubuntu-26.04'
# Ubuntu latest
- otp-version: '27'
elixir-version: 'v1.17.0'
rebar3-version: '3.23'
@@ -53,19 +61,13 @@ jobs:
elixir-version: '1.14.3'
os: 'ubuntu-latest'
version-type: 'strict'
- otp-version: '25'
os: 'ubuntu-24.04'
- otp-version: '26'
elixir-version: '1.16'
rebar3-version: '3.25'
os: 'ubuntu-22.04'
- otp-version: '25.0'
elixir-version: 'v1.13.4-otp-25'
elixir-version: 'v1.16.2-otp-25'
rebar3-version: '3.18.0'
os: 'ubuntu-latest'
version-type: 'strict'
- otp-version: '25.0'
elixir-version: 'v1.13.4'
elixir-version: 'v1.16.3'
rebar3-version: '3.18.0'
os: 'ubuntu-latest'
version-type: 'strict'
@@ -80,13 +82,13 @@ jobs:
otp-version: false
os: 'ubuntu-latest'
disable_problem_matchers: true
- elixir-version: 'v1.13'
- elixir-version: 'v1.16'
otp-version: '24'
escript_packages: 'hex protobuf'
escript_script: 'protoc-gen-elixir --version'
os: 'ubuntu-latest'
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -154,7 +156,7 @@ jobs:
rebar3-version: 3.24
os: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -15,7 +15,7 @@ jobs:
name: Update 3rd party licenses
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- run:
./.github/workflows/update_3rd_party_licenses.sh
env:
+17 -14
View File
@@ -16,6 +16,7 @@ on:
jobs:
integration_test:
name: >
OS ${{matrix.combo.os}},
OTP ${{matrix.combo.otp-version}},
Elixir ${{matrix.combo.elixir-version}},
Gleam ${{matrix.combo.gleam-version}},
@@ -25,12 +26,20 @@ jobs:
fail-fast: false
matrix:
combo:
# Windows 2022 - per README
- otp-version: '26' # 21 is "so old", at this moment, we can't find it in latest 100
os: 'windows-2022'
- otp-version: '29'
os: 'windows-2022'
# Windows 2025 - per README
- otp-version: '26' # 21 is "so old", at this moment, we can't find it in latest 100
os: 'windows-2025'
- otp-version: '29'
os: 'windows-2025'
# Windows latest
- otp-version: '<26'
elixir-version: '<1.17'
os: 'ubuntu-22.04'
- otp-version: 'master'
elixir-version: '> 0'
os: 'ubuntu-24.04'
os: 'windows-latest'
- otp-version: '27'
elixir-version: 'v1.17.0'
rebar3-version: '3.23'
@@ -47,30 +56,24 @@ jobs:
elixir-version: '1.14.5'
os: 'windows-latest'
version-type: 'strict'
- otp-version: '24.0.2'
rebar3-version: '3.16'
os: 'windows-2022'
- otp-version: '23.0'
rebar3-version: '3.15'
os: 'windows-2022'
- elixir-version: 'v1.10'
otp-version: '23'
rebar3-version: '3.14'
os: 'windows-latest'
- elixir-version: 'v1.13'
- elixir-version: 'v1.16'
otp-version: '24'
rebar3-version: '3.15'
os: 'windows-latest'
- gleam-version: '1.9.0'
otp-version: '27'
os: 'windows-latest'
- elixir-version: 'v1.13'
- elixir-version: 'v1.16'
otp-version: '24'
escript_packages: 'hex protobuf'
escript_script: 'protoc-gen-elixir --version'
os: 'windows-latest'
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -137,7 +140,7 @@ jobs:
rebar3-version: 3.24
os: windows-latest
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
+55 -53
View File
@@ -312,30 +312,6 @@ THE SOFTWARE.
-----
The following software may be included in this product: @fastify/busboy. A copy of the source code may be downloaded from git+https://github.com/fastify/busboy.git. This software contains the following license and notice below:
Copyright Brian White. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
-----
The following software may be included in this product: @felipecrs/decompress-tarxz, @xhmikosr/decompress-tar, decompress, decompress-tar, decompress-tarbz2, decompress-targz, shebang-command. A copy of the source code may be downloaded from git+https://github.com/felipecrs/decompress-tarxz.git (@felipecrs/decompress-tarxz), git+https://github.com/XhmikosR/decompress-tar.git (@xhmikosr/decompress-tar), https://github.com/kevva/decompress.git (decompress), https://github.com/kevva/decompress-tar.git (decompress-tar), https://github.com/kevva/decompress-tarbz2.git (decompress-tarbz2), https://github.com/kevva/decompress-targz.git (decompress-targz), https://github.com/kevva/shebang-command.git (shebang-command). This software contains the following license and notice below:
MIT License
@@ -350,6 +326,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
-----
The following software may be included in this product: @ota-meshi/ast-token-store. A copy of the source code may be downloaded from git+https://github.com/ota-meshi/ast-token-store.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2026 Yosuke Ota
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: @tokenizer/inflate. A copy of the source code may be downloaded from https://github.com/Borewit/tokenizer-inflate.git. This software contains the following license and notice below:
Copyright (c) 2024, Borewit
@@ -1626,6 +1628,32 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----
The following software may be included in this product: diff-sequences. A copy of the source code may be downloaded from https://github.com/jestjs/jest.git. This software contains the following license and notice below:
MIT License
Copyright (c) Meta Platforms, Inc. and affiliates.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: dunder-proto, math-intrinsics. A copy of the source code may be downloaded from git+https://github.com/es-shims/dunder-proto.git (dunder-proto), git+https://github.com/es-shims/math-intrinsics.git (math-intrinsics). This software contains the following license and notice below:
MIT License
@@ -1747,32 +1775,6 @@ SOFTWARE.
-----
The following software may be included in this product: eslint-compat-utils. A copy of the source code may be downloaded from git+https://github.com/ota-meshi/eslint-compat-utils.git. This software contains the following license and notice below:
MIT License
Copyright (c) 2023 Yosuke Ota
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-----
The following software may be included in this product: eslint-plugin-yml, yaml-eslint-parser. A copy of the source code may be downloaded from git+https://github.com/ota-meshi/eslint-plugin-yml.git (eslint-plugin-yml), git+https://github.com/ota-meshi/yaml-eslint-parser.git (yaml-eslint-parser). This software contains the following license and notice below:
MIT License
@@ -2264,7 +2266,7 @@ The following software may be included in this product: fflate. A copy of the so
MIT License
Copyright (c) 2023 Arjun Barrett
Copyright (c) 2026 Arjun Barrett
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -3900,11 +3902,11 @@ IN THE SOFTWARE.
-----
The following software may be included in this product: strtok3. A copy of the source code may be downloaded from https://github.com/Borewit/strtok3.git. This software contains the following license and notice below:
The following software may be included in this product: strtok3. A copy of the source code may be downloaded from git+https://github.com/Borewit/strtok3.git. This software contains the following license and notice below:
MIT License
Copyright © 2025 Borewit
Copyright © 2026 Borewit
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+49 -12
View File
@@ -78,20 +78,25 @@ expect to be considered the latest.
This list presents the known working version combos between the target operating system
and Erlang/OTP.
| Operating system | Erlang/OTP | OTP Architecture | Status
|- |- | - |-
| `ubuntu-22.04` | 24.2 - 28 | x86_64, arm64 | ✅
| `ubuntu-24.04` | 24.3 - 28 | x86_64, arm64 | ✅
| `windows-2019` | 21\* - 25 | x86_64, x86 | ✅
| `windows-2022` | 21\* - 28 | x86_64, x86 | ✅
| `windows-2025` | 21\* - 28 | x86_64, x86 | ✅
| `macOS-13` | 25.0 - 28 | x86_64, arm64 | ✅
| `macOS-14` | 25.0 - 28 | x86_64, arm64 | ✅
| `macOS-15` | 25.0 - 28 | x86_64, arm64 | ✅
| Operating system | Erlang/OTP | OTP Architecture | Status
|- |- | - |-
| `ubuntu-22.04` | 24.2 - 29 | x86_64, arm64 | ✅
| `ubuntu-24.04` | 24.3 - 29 | x86_64, arm64 | ✅
| `ubuntu-26.04` | 26 - 29 | x86_64, arm64 | ✅
| `windows-2022` | 21\* - 29 | x86_64, x86 | ✅
| `windows-2025` | 21\* - 29 | x86_64, x86 | ✅
| `macOS-14` | 25 - 29 | x86_64, arm64 | ✅
| `macOS-15` | 25 - 29 | x86_64, arm64 | ✅
| `macOS-26` | 25 - 29 | x86_64, arm64 | ✅
**Note** \*: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3,
22.0, etc.
### Compatibility between Erlang/OTP and rebar3
Check [version compatibility](https://github.com/erlang/rebar3?tab=readme-ov-file#compatibility-between-rebar3-and-erlangotp)
in `erlang/rebar3`.
### Self-hosted runners
Self-hosted runners need to set env. variable `ImageOS` to one of the following, since the action
@@ -100,13 +105,17 @@ uses that to download assets:
| ImageOS | Operating system
|- |-
| `ubuntu22` | `ubuntu-22.04`
| `ubuntu22-arm64` | `ubuntu-22.04`
| `ubuntu24` | `ubuntu-24.04`
| `win19` | `windows-2019`
| `ubuntu24-arm64` | `ubuntu-24.04`
| `ubuntu26` | `ubuntu-26.04`
| `ubuntu26-arm64` | `ubuntu-26.04`
| `win22` | `windows-2022`
| `win25` | `windows-2025`
| `macos13` | `macOS-13`
| `win25-vs2026` | `windows-2025`
| `macos14` | `macOS-14`
| `macos15` | `macOS-15`
| `macos26` | `macOS-26`
as per the following example:
@@ -290,6 +299,34 @@ jobs:
- run: rebar3 ct
```
### Compatibility
To execute matrix testing with specific dependency versions, configure the environment matrix to
use pinned, compatible releases:
```yaml
test:
runs-on: ${{matrix.compat.os}}
name: Erlang/OTP ${{matrix.compat.otp}} / rebar3 ${{matrix.compat.rebar3}}
strategy:
matrix:
compat:
- otp: "26.2.5.5"
rebar3: "3.22.1"
os: ubuntu-24.04
- otp: "27.1.2"
rebar3: "3.22.1"
os: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
with:
otp-version: ${{matrix.compat.otp}}
rebar3-version: ${{matrix.compat.rebar3}}
version-type: strict
- run: rebar3 eunit
```
### Erlang/OTP + `rebar3`, on Windows
```yaml
+1 -1
View File
@@ -98,5 +98,5 @@ outputs:
description: The commit unique id of the execution action version
runs:
using: node20
using: node24
main: dist/index.js
+66
View File
@@ -0,0 +1,66 @@
{
"problemMatcher": [
{
"owner": "erlc-warning",
"severity": "warning",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): [wW]arning: (.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "erlc-error",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): (?![wW]arning)(.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "ct-failure",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+) failed on line (\\d+)$",
"file": 1,
"line": 2
},
{
"regexp": "^Reason: (.+)$",
"message": 1
}
]
},
{
"owner": "eunit-failure",
"severity": "error",
"pattern": [
{
"regexp": "^\\S+: .+\\.\\.\\.\\*failed\\*$"
},
{
"regexp": "^in function .+ \\((.+), line (\\d+)\\)$",
"file": 1,
"line": 2
},
{
"regexp": "^in call from .+$"
},
{
"regexp": "^\\*\\*error:(.+)$",
"message": 1
}
]
}
]
}
+1332 -21381
View File
File diff suppressed because it is too large Load Diff
+66
View File
@@ -0,0 +1,66 @@
{
"problemMatcher": [
{
"owner": "erlc-warning",
"severity": "warning",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): [wW]arning: (.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "erlc-error",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+):(\\d+):(\\d+): (?![wW]arning)(.+)$",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
]
},
{
"owner": "ct-failure",
"severity": "error",
"pattern": [
{
"regexp": "^(\\S+) failed on line (\\d+)$",
"file": 1,
"line": 2
},
{
"regexp": "^Reason: (.+)$",
"message": 1
}
]
},
{
"owner": "eunit-failure",
"severity": "error",
"pattern": [
{
"regexp": "^\\S+: .+\\.\\.\\.\\*failed\\*$"
},
{
"regexp": "^in function .+ \\((.+), line (\\d+)\\)$",
"file": 1,
"line": 2
},
{
"regexp": "^in call from .+$"
},
{
"regexp": "^\\*\\*error:(.+)$",
"message": 1
}
]
}
]
}
+78 -75
View File
@@ -10,24 +10,23 @@
"@actions/core": "3.0.0",
"@actions/exec": "3.0.0",
"@actions/tool-cache": "4.0.0",
"csv-parse": "6.1.0",
"lodash": "4.17.23",
"csv-parse": "6.2.1",
"semver": "7.7.4",
"toml": "3.0.0"
"smol-toml": "1.6.1"
},
"devDependencies": {
"@eslint/js": "10.0.1",
"@vercel/ncc": "0.38.4",
"eslint": "10.0.3",
"eslint": "10.6.0",
"eslint-plugin-yml": "3.3.1",
"globals": "17.4.0",
"globals": "17.7.0",
"markdownlint-cli": "0.48.0",
"prettier": "3.8.1",
"prettier": "3.9.1",
"shellcheck": "4.1.0",
"yarn": "1.22.22"
},
"engines": {
"node": ">=20"
"node": ">=24"
}
},
"node_modules/@actions/core": {
@@ -132,13 +131,13 @@
}
},
"node_modules/@eslint/config-array": {
"version": "0.23.3",
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.3.tgz",
"integrity": "sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==",
"version": "0.23.5",
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz",
"integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/object-schema": "^3.0.3",
"@eslint/object-schema": "^3.0.5",
"debug": "^4.3.1",
"minimatch": "^10.2.4"
},
@@ -147,22 +146,22 @@
}
},
"node_modules/@eslint/config-helpers": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
"integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz",
"integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^1.1.0"
"@eslint/core": "^1.2.1"
},
"engines": {
"node": "^20.19.0 || ^22.13.0 || >=24"
}
},
"node_modules/@eslint/core": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
"integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
"integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -194,9 +193,9 @@
}
},
"node_modules/@eslint/object-schema": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.3.tgz",
"integrity": "sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==",
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz",
"integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==",
"dev": true,
"license": "Apache-2.0",
"engines": {
@@ -651,9 +650,9 @@
"license": "MIT"
},
"node_modules/brace-expansion": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
"integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
"integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -839,9 +838,9 @@
}
},
"node_modules/csv-parse": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz",
"integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==",
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.2.1.tgz",
"integrity": "sha512-LRLMV+UCyfMokp8Wb411duBf1gaBKJfOfBWU9eHMJ+b+cJYZsNu3AFmjJf3+yPGd59Exz1TsMjaSFyxnYB9+IQ==",
"license": "MIT"
},
"node_modules/debug": {
@@ -1272,18 +1271,21 @@
}
},
"node_modules/eslint": {
"version": "10.0.3",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.3.tgz",
"integrity": "sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==",
"version": "10.6.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz",
"integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==",
"dev": true,
"license": "MIT",
"workspaces": [
"packages/*"
],
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.2",
"@eslint/config-array": "^0.23.3",
"@eslint/config-helpers": "^0.5.2",
"@eslint/core": "^1.1.1",
"@eslint/plugin-kit": "^0.6.1",
"@eslint/config-array": "^0.23.5",
"@eslint/config-helpers": "^0.6.0",
"@eslint/core": "^1.2.1",
"@eslint/plugin-kit": "^0.7.2",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
@@ -1294,7 +1296,7 @@
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^9.1.2",
"eslint-visitor-keys": "^5.0.1",
"espree": "^11.1.1",
"espree": "^11.2.0",
"esquery": "^1.7.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -1398,10 +1400,24 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint/node_modules/@eslint/plugin-kit": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz",
"integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^1.2.1",
"levn": "^0.4.1"
},
"engines": {
"node": "^20.19.0 || ^22.13.0 || >=24"
}
},
"node_modules/espree": {
"version": "11.1.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz",
"integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==",
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
"integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -1599,9 +1615,9 @@
}
},
"node_modules/flatted": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz",
"integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==",
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
"integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
"dev": true,
"license": "ISC"
},
@@ -1735,9 +1751,9 @@
}
},
"node_modules/globals": {
"version": "17.4.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz",
"integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==",
"version": "17.7.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-17.7.0.tgz",
"integrity": "sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2166,12 +2182,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
"version": "4.17.23",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"license": "MIT"
},
"node_modules/make-dir": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
@@ -3008,9 +3018,9 @@
"license": "MIT"
},
"node_modules/picomatch": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -3074,9 +3084,9 @@
}
},
"node_modules/prettier": {
"version": "3.8.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.1.tgz",
"integrity": "sha512-ppiDo2CSwexck1eyZUwJHg/N3nf1+6IRCv7W/VJ5vaLnVCmB7+3CdRfMwoCHBBX6xTrREDTksZ4OZl5SSf4zXA==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3312,10 +3322,9 @@
}
},
"node_modules/smol-toml": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz",
"integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==",
"dev": true,
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz",
"integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==",
"license": "BSD-3-Clause",
"engines": {
"node": ">= 18"
@@ -3531,12 +3540,6 @@
"url": "https://github.com/sponsors/Borewit"
}
},
"node_modules/toml": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz",
"integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==",
"license": "MIT"
},
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
@@ -3626,9 +3629,9 @@
}
},
"node_modules/undici": {
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
"integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
"version": "6.24.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.24.0.tgz",
"integrity": "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==",
"license": "MIT",
"engines": {
"node": ">=18.17"
@@ -3727,9 +3730,9 @@
}
},
"node_modules/yaml": {
"version": "2.8.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
"integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
"version": "2.8.3",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
"integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
"dev": true,
"license": "ISC",
"bin": {
@@ -3775,9 +3778,9 @@
}
},
"node_modules/yauzl": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz",
"integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==",
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.1.tgz",
"integrity": "sha512-k1isifdbpNSFEHFJ1ZY4YDewv0IH9FR61lDetaRMD3j2ae3bIXGV+7c+LHCqtQGofSd8PIyV4X6+dHMAnSr60A==",
"dev": true,
"license": "MIT",
"dependencies": {
+6 -7
View File
@@ -20,23 +20,22 @@
"@actions/core": "3.0.0",
"@actions/exec": "3.0.0",
"@actions/tool-cache": "4.0.0",
"csv-parse": "6.1.0",
"lodash": "4.17.23",
"csv-parse": "6.2.1",
"semver": "7.7.4",
"toml": "3.0.0"
"smol-toml": "1.6.1"
},
"devDependencies": {
"@eslint/js": "10.0.1",
"@vercel/ncc": "0.38.4",
"eslint": "10.0.3",
"eslint": "10.6.0",
"eslint-plugin-yml": "3.3.1",
"globals": "17.4.0",
"globals": "17.7.0",
"markdownlint-cli": "0.48.0",
"prettier": "3.8.1",
"prettier": "3.9.1",
"shellcheck": "4.1.0",
"yarn": "1.22.22"
},
"engines": {
"node": ">=20"
"node": ">=24"
}
}
+55 -21
View File
@@ -7,8 +7,7 @@ import { exec } from '@actions/exec'
import * as tc from '@actions/tool-cache'
import * as semver from 'semver'
import * as csv from 'csv-parse/sync'
import _ from 'lodash'
import toml from 'toml'
import toml from 'smol-toml'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
@@ -58,7 +57,7 @@ async function main() {
await maybeInstallRebar3(rebar3Spec)
// undefined is replaced by a function, post- main branch merge
const setupBeamVersion = '98c13a9'
const setupBeamVersion = 'ea45c80'
core.setOutput('setup-beam-version', setupBeamVersion)
}
@@ -80,6 +79,7 @@ async function installOTP(otpSpec) {
},
})
core.setOutput('otp-version', otpVersion)
maybeEnableProblemMatchers('erlang')
core.endGroup()
return otpVersion
@@ -101,7 +101,7 @@ async function maybeInstallElixir(elixirSpec) {
},
})
core.setOutput('elixir-version', elixirVersion)
maybeEnableElixirProblemMatchers()
maybeEnableProblemMatchers('elixir')
core.endGroup()
installed = true
@@ -110,14 +110,18 @@ async function maybeInstallElixir(elixirSpec) {
return installed
}
function maybeEnableElixirProblemMatchers() {
const disableProblemMatchers = getInput('disable_problem_matchers', false)
if (disableProblemMatchers === 'false') {
// path.join helps ncc figure this out
const elixirMatchers = path.join(
`${__dirname}/../matchers/elixir-matchers.json`,
)
core.info(`##[add-matcher]${elixirMatchers}`)
function problemMatchersEnabled() {
return getInput('disable_problem_matchers', false) === 'false'
}
// path.join with static strings helps ncc resolve and bundle the JSON files
function maybeEnableProblemMatchers(language) {
if (problemMatchersEnabled()) {
const matcherFiles = {
erlang: path.join(`${__dirname}/../matchers/erlang-matchers.json`),
elixir: path.join(`${__dirname}/../matchers/elixir-matchers.json`),
}
core.info(`##[add-matcher]${matcherFiles[language]}`)
}
}
@@ -275,7 +279,7 @@ async function getElixirVersion(exSpec0) {
if (!foundCombo) {
throw new Error(
`Requested Elixir / Erlang/OTP version (${exSpec0} / tried ${otpVersionsMajor}) not ` +
'found in version list (did you check Compatibility between Elixir and Erlang/OTP?).' +
'found in version list (did you check Compatibility between Elixir and Erlang/OTP?). ' +
'Elixir and Erlang/OTP compatibility can be found at: ' +
'https://hexdocs.pm/elixir/compatibility-and-deprecations.html',
)
@@ -373,9 +377,7 @@ async function getOTPVersions(osVersion) {
})
} else if (process.platform === 'win32') {
const otpArch = otpArchitecture()
const file_regex = new RegExp(
`^otp_win${_.escapeRegExp(otpArch)}_(.*).exe$`,
)
const file_regex = new RegExp(`^otp_win${RegExp.escape(otpArch)}_(.*).exe$`)
otpVersionsListings.forEach((otpVersionsListing) => {
otpVersionsListing
.map((x) => x.assets)
@@ -656,19 +658,30 @@ function getRunnerOSArchitecture() {
function getRunnerOSVersion() {
// List from https://github.com/actions/runner-images?tab=readme-ov-file#available-images
// at e065a395d52f491c58eb8fba8ab1dde2c7cfada1
// Not considered, at the moment (though it might be easy to adapt to...):
// - ubuntu-slim
// - all macOS intel, large, and xlarge variants
// - all win arm variants
const ImageOSToContainer = {
ubuntu22: 'ubuntu-22.04',
'ubuntu22-arm64': 'ubuntu-22.04',
ubuntu24: 'ubuntu-24.04',
win19: 'windows-2019',
'ubuntu24-arm64': 'ubuntu-24.04',
ubuntu26: 'ubuntu-26.04',
'ubuntu26-arm64': 'ubuntu-26.04',
win22: 'windows-2022',
win25: 'windows-2025',
macos13: 'macOS-13',
'win25-vs2026': 'windows-2025',
macos14: 'macOS-14',
macos15: 'macOS-15',
macos26: 'macOS-26',
}
const deprecatedImageOSToContainer = {
ubuntu18: 'ubuntu-18.04',
ubuntu20: 'ubuntu-20.04',
win19: 'windows-2019',
macos13: 'macOS-13',
}
const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS]
if (!containerFromEnvImageOS) {
@@ -966,7 +979,7 @@ async function install(toolName, opts) {
const otpArch = otpArchitecture()
return (
'https://github.com/erlang/otp/releases/download/' +
`OTP-${toolVersion}/otp_win${_.escapeRegExp(otpArch)}_${toolVersion}.exe`
`OTP-${toolVersion}/otp_win${otpArch}_${toolVersion}.exe`
)
},
extract: async () => ['file', 'otp.exe'],
@@ -1050,12 +1063,14 @@ async function install(toolName, opts) {
tool: 'Gleam',
linux: {
downloadToolURL: () => {
const arch = getRunnerOSArchitecture()
let gz
if (
versionSpec === 'nightly' ||
semver.gt(versionSpec, 'v0.22.1')
) {
gz = `gleam-${versionSpec}-x86_64-unknown-linux-musl.tar.gz`
const target = arch === 'arm64' ? 'aarch64' : 'x86_64'
gz = `gleam-${versionSpec}-${target}-unknown-linux-musl.tar.gz`
} else {
gz = `gleam-${versionSpec}-linux-amd64.tar.gz`
}
@@ -1119,7 +1134,26 @@ async function install(toolName, opts) {
},
},
}
installOpts.darwin = installOpts.linux
installOpts.darwin = {
downloadToolURL: () => {
const arch = getRunnerOSArchitecture()
let gz
if (versionSpec === 'nightly' || semver.gt(versionSpec, 'v0.22.1')) {
const target = arch === 'arm64' ? 'aarch64' : 'x86_64'
gz = `gleam-${versionSpec}-${target}-apple-darwin.tar.gz`
} else {
gz =
arch === 'arm64'
? `gleam-${versionSpec}-macos-arm64.tar.gz`
: `gleam-${versionSpec}-macos.tar.gz`
}
return `https://github.com/gleam-lang/gleam/releases/download/${versionSpec}/${gz}`
},
extract: installOpts.linux.extract,
postExtract: installOpts.linux.postExtract,
reportVersion: installOpts.linux.reportVersion,
}
break
case 'rebar3':
installOpts = {
+869 -72
View File
File diff suppressed because it is too large Load Diff
+143 -40
View File
@@ -1,3 +1,15 @@
import assert from 'node:assert'
import http from 'node:http'
import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path'
import { describe, it } from 'node:test'
import * as csv from 'csv-parse/sync'
import elixirMatchers from '../matchers/elixir-matchers.json' with { type: 'json' }
import erlangMatchers from '../matchers/erlang-matchers.json' with { type: 'json' }
const { problemMatcher } = elixirMatchers
const { problemMatcher: erlangProblemMatcher } = erlangMatchers
process.env.NODE_ENV = 'test'
simulateInput('otp-version', '25.1.2')
@@ -9,16 +21,7 @@ simulateInput('install-hex', 'true')
simulateInput('github-token', process.env.GITHUB_TOKEN)
simulateInput('hexpm-mirrors', 'https://builds.hex.pm', { multiline: true })
import assert from 'node:assert'
import http from 'node:http'
import fs from 'node:fs'
import os from 'node:os'
import path from 'node:path'
import { describe, it } from 'node:test'
import * as csv from 'csv-parse/sync'
import setupBeam from '../src/setup-beam.js'
import elixirMatchers from '../matchers/elixir-matchers.json' with { type: 'json' }
const { problemMatcher } = elixirMatchers
const { default: setupBeam } = await import('../src/setup-beam.js')
const matrix = {
otp: {
@@ -174,11 +177,8 @@ describe('.getOTPVersion(_) - Erlang', () => {
'https://repo.hex.pm, https://cdn.jsdelivr.net/hex',
{ multiline: true },
)
const previousRunnerArch = process.env.RUNNER_ARCH
if (process.platform === 'linux') {
process.env.RUNNER_ARCH = 'X64'
it('is Ok for known linux version', async () => {
before = simulateInput('version-type', 'strict')
spec = '27.0'
@@ -196,21 +196,21 @@ describe('.getOTPVersion(_) - Erlang', () => {
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
spec = '19.3.x'
osVersion = 'ubuntu-16.04'
expected = 'OTP-19.3.6.13'
spec = '20.3.x'
osVersion = 'ubuntu-20.04'
expected = 'OTP-20.3.8.26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
spec = '^19.3.6'
osVersion = 'ubuntu-16.04'
expected = 'OTP-19.3.6.13'
spec = '^20.3.8'
osVersion = 'ubuntu-20.04'
expected = 'OTP-20.3.8.26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
spec = '^19.3'
osVersion = 'ubuntu-18.04'
expected = 'OTP-19.3.6.13'
spec = '^20.3'
osVersion = 'ubuntu-20.04'
expected = 'OTP-20.3.8.26'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
@@ -273,7 +273,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
assert.deepStrictEqual(got, expected)
spec = '23.0'
osVersion = 'windows-2019'
osVersion = 'windows-2022'
expected = '23.0.4'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
@@ -294,7 +294,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
assert.deepStrictEqual(got, expected)
spec = '23.0'
osVersion = 'windows-2019'
osVersion = 'windows-2022'
expected = '23.0.4'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
@@ -306,6 +306,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
if (process.platform === 'linux') {
it('is main-... only if strict/maint-... is used as input', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
@@ -341,6 +342,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
it('is Ok for known linux ARM64 version', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
@@ -401,10 +403,13 @@ describe('.getOTPVersion(_) - Erlang', () => {
expected = 'master'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
process.env.RUNNER_ARCH = previousRunnerArch
})
it('is Ok for known linux AMD64 version', async () => {
const amd64Options = setupBeam.githubAMDRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
amd64Options[Math.floor(Math.random() * amd64Options.length)]
@@ -483,12 +488,15 @@ describe('.getOTPVersion(_) - Erlang', () => {
expected = 'master'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
process.env.RUNNER_ARCH = previousRunnerArch
})
}
if (process.platform === 'darwin') {
it('is main-... only if strict/maint-... is used as input', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
@@ -518,6 +526,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
it('is Ok for known macos ARM64 version', async () => {
const arm64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
arm64Options[Math.floor(Math.random() * arm64Options.length)]
@@ -528,10 +537,13 @@ describe('.getOTPVersion(_) - Erlang', () => {
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
process.env.RUNNER_ARCH = previousRunnerArch
})
it('is Ok for known macos AMD64 version', async () => {
const amd64Options = setupBeam.githubARMRunnerArchs()
const previousRunnerArch = process.env.RUNNER_ARCH
process.env.RUNNER_ARCH =
amd64Options[Math.floor(Math.random() * amd64Options.length)]
@@ -542,11 +554,12 @@ describe('.getOTPVersion(_) - Erlang', () => {
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
process.env.RUNNER_ARCH = previousRunnerArch
})
}
simulateInput('hexpm-mirrors', hexMirrors, { multiline: true })
process.env.RUNNER_ARCH = previousRunnerArch
})
describe('OTP arch-specific install', () => {
@@ -569,6 +582,7 @@ describe('OTP arch-specific install', () => {
`Fetching OTP Version with invalid Github runner architecture is supposed to fail`,
)
}
process.env.RUNNER_ARCH = previousRunnerArch
})
})
@@ -579,11 +593,8 @@ describe('.getOTPVersion(_) - Elixir', () => {
let spec
let otpVersion
let before
const previousRunnerArch = process.env.RUNNER_ARCH
if (process.platform === 'linux') {
process.env.RUNNER_ARCH = 'X64'
it('returns the expected value', async () => {
spec = '1.18.x'
otpVersion = 'OTP-27'
@@ -614,9 +625,9 @@ describe('.getOTPVersion(_) - Elixir', () => {
assert.deepStrictEqual(got, expected)
before = simulateInput('version-type', 'strict')
spec = '1.17'
spec = '1.19'
otpVersion = 'master'
expected = 'v1.17-otp-27'
expected = 'v1.19-otp-28'
await setupBeam.installOTP(otpVersion)
got = await setupBeam.getElixirVersion(spec, otpVersion)
assert.deepStrictEqual(got, expected)
@@ -641,8 +652,6 @@ describe('.getOTPVersion(_) - Elixir', () => {
simulateInput('version-type', before)
})
}
process.env.RUNNER_ARCH = previousRunnerArch
})
describe('.getOTPVersion(_) - Gleam', () => {
@@ -686,18 +695,18 @@ describe('.getOTPVersion(_) - rebar3', () => {
let spec
it('returns the expected value', async () => {
spec = '3.10.x'
expected = '3.10.0'
spec = '3.26.x'
expected = '3.26.0'
got = await setupBeam.getRebar3Version(spec)
assert.deepStrictEqual(got, expected)
spec = '3.11'
expected = '3.11.1'
spec = '3.25'
expected = '3.25.1'
got = await setupBeam.getRebar3Version(spec)
assert.deepStrictEqual(got, expected)
spec = '3.10'
expected = '3.10.0'
spec = '3.26'
expected = '3.26.0'
got = await setupBeam.getRebar3Version(spec)
assert.deepStrictEqual(got, expected)
})
@@ -963,7 +972,7 @@ describe('.getVersionFromSpec(_)', () => {
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = '3.23.0'
expected = '3.27.0'
got = setupBeam.getVersionFromSpec(spec, matrix.rebar3)
assert.deepStrictEqual(got, expected)
})
@@ -1031,7 +1040,9 @@ describe('mise.toml file', () => {
"erlang" = "${erlang}"
elixir = { version = "${elixir}", postinstall="mix deps.get" } # comment, with space and ref:
"not-gleam" = 0.23 # not picked up
"gleam" = "${gleam}" \n`
"gleam" = "${gleam}"
[env]
_.file = ".env"\n`
const filename = 'test/mise.toml'
if (process.platform === 'win32') {
// Force \r\n to test in Windows
@@ -1158,6 +1169,98 @@ describe("Elixir Mix matcher's", () => {
})
})
describe("Erlang matcher's", () => {
it('erlc errors are properly matched', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-error',
).pattern
const output = 'src/mymod.erl:42:5: head mismatch'
const match = output.match(matcher.regexp)
assert.equal(match[1], 'src/mymod.erl')
assert.equal(match[2], '42')
assert.equal(match[3], '5')
assert.equal(match[4], 'head mismatch')
})
it('erlc errors do not match warnings', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-error',
).pattern
const output = 'src/mymod.erl:42:5: Warning: variable X is unused'
const match = output.match(matcher.regexp)
assert.equal(match, null)
})
it('erlc warnings are properly matched', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-warning',
).pattern
const output = 'src/mymod.erl:10:3: Warning: variable X is unused'
const match = output.match(matcher.regexp)
assert.equal(match[1], 'src/mymod.erl')
assert.equal(match[2], '10')
assert.equal(match[3], '3')
assert.equal(match[4], 'variable X is unused')
})
it('dialyzer warnings are matched via erlc patterns', () => {
const [matcher] = erlangProblemMatcher.find(
({ owner }) => owner === 'erlc-warning',
).pattern
const output =
'src/mymod.erl:25:1: warning: Function foo/0 has no local return'
const match = output.match(matcher.regexp)
assert.equal(match[1], 'src/mymod.erl')
assert.equal(match[2], '25')
assert.equal(match[3], '1')
assert.equal(match[4], 'Function foo/0 has no local return')
})
it('CT failures are properly matched', () => {
const [filePattern, reasonPattern] = erlangProblemMatcher.find(
({ owner }) => owner === 'ct-failure',
).pattern
const firstOutput = 'test/mymod_SUITE.erl failed on line 55'
const secondOutput = 'Reason: {badmatch,{error,timeout}}'
const fileMatch = firstOutput.match(filePattern.regexp)
assert.equal(fileMatch[1], 'test/mymod_SUITE.erl')
assert.equal(fileMatch[2], '55')
const reasonMatch = secondOutput.match(reasonPattern.regexp)
assert.equal(reasonMatch[1], '{badmatch,{error,timeout}}')
})
it('EUnit failures are properly matched', () => {
const [headerPattern, funcPattern, callPattern, errorPattern] =
erlangProblemMatcher.find(
({ owner }) => owner === 'eunit-failure',
).pattern
const header = 'mymod_test: hello_test....*failed*'
const func =
'in function mymod_test:hello_test/0 (test/mymod_test.erl, line 12)'
const call = 'in call from mymod_test:hello_test/0'
const error = '**error:{badmatch,false}'
assert.ok(header.match(headerPattern.regexp))
const funcMatch = func.match(funcPattern.regexp)
assert.equal(funcMatch[1], 'test/mymod_test.erl')
assert.equal(funcMatch[2], '12')
assert.ok(call.match(callPattern.regexp))
const errorMatch = error.match(errorPattern.regexp)
assert.equal(errorMatch[1], '{badmatch,false}')
})
})
function unsimulateInput(key) {
return simulateInput(key, '')
}