Compare commits

...

146 Commits

Author SHA1 Message Date
dependabot[bot] 7364c3d019 Bump markdownlint-cli from 0.49.0 to 0.49.1
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.49.0 to 0.49.1.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.49.0...v0.49.1)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.49.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-20 11:02:46 +00:00
GitHub Actions 8736e92447 Automation: update setup-beam version output to f4f179b 2026-07-08 21:43:14 +00:00
github-actions[bot] f4f179b825 Update 3rd party licenses (automation) (#484)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-07-08 22:42:59 +01:00
GitHub Actions a228c4f190 Automation: update setup-beam version output to 730131f 2026-07-07 14:33:08 +00:00
github-actions[bot] 730131f5b9 Update 3rd party licenses (automation) (#483)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-07-07 09:32:48 -05:00
GitHub Actions 7782cf9cde Automation: update setup-beam version output to 324994a 2026-07-07 12:07:34 +00:00
dependabot[bot] 324994a2c5 Bump prettier from 3.9.1 to 3.9.4 (#481)
Bumps [prettier](https://github.com/prettier/prettier) from 3.9.1 to 3.9.4.
- [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.9.1...3.9.4)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.9.4
  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-07-07 07:07:14 -05:00
GitHub Actions 551a8c58c5 Automation: update setup-beam version output to 74e4a98 2026-07-07 11:58:09 +00:00
dependabot[bot] 74e4a9879b Bump @vercel/ncc from 0.44.0 to 0.44.1 (#480)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.44.0 to 0.44.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.44.0...0.44.1)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-version: 0.44.1
  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-07-07 06:57:53 -05:00
GitHub Actions 992182bb93 Automation: update setup-beam version output to 837c16f 2026-07-07 11:37:41 +00:00
dependabot[bot] 837c16fb56 Bump csv-parse from 7.0.0 to 7.0.1 (#479)
Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 7.0.0 to 7.0.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@7.0.1/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 7.0.1
  dependency-type: direct:production
  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-07-07 06:37:26 -05:00
GitHub Actions 50a47d8240 Automation: update setup-beam version output to 149ca49 2026-06-30 20:39:42 +00:00
John Downey 149ca49ab5 Add tests for arm64 Linux runner OS detection (#462)
Add tests for arm64 ImageOS OS detection
2026-06-30 21:39:23 +01:00
GitHub Actions 48f5ea24e9 Automation: update setup-beam version output to fa47191 2026-06-30 20:09:03 +00:00
John Downey fa471919e3 Add tests for Ubuntu 26 runners (#465)
Add test coverage for Ubuntu 26.04 runners
2026-06-30 21:08:45 +01:00
GitHub Actions b59f4962e3 Automation: update setup-beam version output to 3598349 2026-06-30 20:03:00 +00:00
github-actions[bot] 35983496a6 Update 3rd party licenses (automation) (#478)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-30 21:01:49 +01:00
GitHub Actions fad8771ace Automation: update setup-beam version output to c35be0e 2026-06-29 22:24:43 +00:00
dependabot[bot] c35be0e285 Bump undici from 6.24.0 to 6.27.0 in the npm_and_yarn group across 1 directory (#477)
* 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.24.0 to 6.27.0
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v6.24.0...v6.27.0)

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

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

* Help Renovate out (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-06-29 23:24:27 +01:00
GitHub Actions e6d7811738 Automation: update setup-beam version output to b153028 2026-06-29 22:19:34 +00:00
dependabot[bot] b15302821e Bump smol-toml from 1.6.1 to 1.7.0 (#474)
* Bump smol-toml from 1.6.1 to 1.7.0

Bumps [smol-toml](https://github.com/squirrelchat/smol-toml) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/squirrelchat/smol-toml/releases)
- [Commits](https://github.com/squirrelchat/smol-toml/compare/v1.6.1...v1.7.0)

---
updated-dependencies:
- dependency-name: smol-toml
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

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

* Help Renovate out (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-06-29 23:19:15 +01:00
GitHub Actions b0ba423105 Automation: update setup-beam version output to c648472 2026-06-29 22:17:42 +00:00
dependabot[bot] c648472e6f Bump csv-parse from 6.2.1 to 7.0.0 (#472)
* Bump csv-parse from 6.2.1 to 7.0.0

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

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* Help Renovate out (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-06-29 23:17:25 +01:00
GitHub Actions 3809396843 Automation: update setup-beam version output to f8797dd 2026-06-29 22:03:47 +00:00
github-actions[bot] f8797dd823 Update 3rd party licenses (automation) (#476)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-06-29 23:01:01 +01:00
dependabot[bot] a433e6bd12 Bump markdownlint-cli from 0.48.0 to 0.49.0 (#470)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.48.0 to 0.49.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.48.0...v0.49.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.49.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-29 23:00:35 +01:00
dependabot[bot] e0a7f48cee Bump @vercel/ncc from 0.38.4 to 0.44.0 (#471)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.38.4 to 0.44.0.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.38.4...0.44.0)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-version: 0.44.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-29 23:00:27 +01:00
dependabot[bot] c21f568d4c Bump eslint-plugin-yml from 3.3.1 to 3.5.0 (#473)
Bumps [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) from 3.3.1 to 3.5.0.
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v3.3.1...v3.5.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-yml
  dependency-version: 3.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-29 23:00:16 +01:00
dependabot[bot] fe26b2283c Bump raven-actions/actionlint from 2.1.2 to 2.2.0 (#475)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.2 to 2.2.0.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.2...v2.2.0)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.2.0
  dependency-type: direct:production
  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-29 23:00:00 +01:00
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
GitHub Actions 9d5b75ddfd Automation: update setup-beam version output to 98c13a9 2026-03-09 22:41:35 +00:00
Dino Kovač 98c13a9ed3 Support mise.toml (#415)
* add support for mise.toml version file type

* changes from review

* Keep versioning consistent

* fix default value for version-file-type input

* Use single `version-file`, autodetect type

* Update src/setup-beam.js

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

* Improve log output for mise version files

* Rebuild dist

* Run build-dist

* add support for mise.toml version file type

* changes from review

* Keep versioning consistent

* fix default value for version-file-type input

* Use single `version-file`, autodetect type

* Update src/setup-beam.js

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

* Improve log output for mise version files

* Rebuild dist

* Run build-dist

---------

Co-authored-by: Michael Ruoss <michael.ruoss@cradle.bio>
Co-authored-by: Michael Ruoss <michael@michaelruoss.ch>
Co-authored-by: Paulo F. Oliveira <paulo.ferraz.oliveira@gmail.com>
2026-03-09 22:41:15 +00:00
GitHub Actions 0f13bcf18a Automation: update setup-beam version output to c3137f5 2026-03-09 22:19:29 +00:00
dependabot[bot] c3137f5cd5 Bump globals from 17.3.0 to 17.4.0 (#421)
* Bump globals from 17.3.0 to 17.4.0

Bumps [globals](https://github.com/sindresorhus/globals) from 17.3.0 to 17.4.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v17.3.0...v17.4.0)

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

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

* Prevent Cannot access 'isStrictVersion' before initialization

---------

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-09 22:19:11 +00:00
GitHub Actions 4cbacdb2a9 Automation: update setup-beam version output to 687000a 2026-03-09 22:10:23 +00:00
dependabot[bot] 687000ab96 Bump @actions/core from 1.11.1 to 3.0.0 (#419)
* Bump @actions/core from 1.11.1 to 3.0.0

Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.11.1 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* 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-09 22:09:48 +00:00
dependabot[bot] 9ba6605098 Bump eslint-plugin-yml from 1.18.0 to 3.3.1 (#418)
* Bump eslint-plugin-yml from 1.18.0 to 3.3.1

Bumps [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) from 1.18.0 to 3.3.1.
- [Release notes](https://github.com/ota-meshi/eslint-plugin-yml/releases)
- [Changelog](https://github.com/ota-meshi/eslint-plugin-yml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ota-meshi/eslint-plugin-yml/compare/v1.18.0...v3.3.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-yml
  dependency-version: 3.3.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

* Help Dependabot

---------

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-09 22:09:38 +00:00
GitHub Actions 722d91de6e Automation: update setup-beam version output to f79887d 2026-03-09 17:46:19 +00:00
dependabot[bot] f79887d1ba Bump eslint from 10.0.1 to 10.0.3 (#420)
Bumps [eslint](https://github.com/eslint/eslint) from 10.0.1 to 10.0.3.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v10.0.1...v10.0.3)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.0.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-03-09 17:44:31 +00:00
dependabot[bot] 30a0896082 Bump markdownlint-cli from 0.47.0 to 0.48.0 (#422)
Bumps [markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli) from 0.47.0 to 0.48.0.
- [Release notes](https://github.com/igorshubovych/markdownlint-cli/releases)
- [Commits](https://github.com/igorshubovych/markdownlint-cli/compare/v0.47.0...v0.48.0)

---
updated-dependencies:
- dependency-name: markdownlint-cli
  dependency-version: 0.48.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-09 17:44:08 +00:00
dependabot[bot] 41c0004487 Bump actions/setup-node from 6.2.0 to 6.3.0 (#423)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  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-09 17:43:59 +00:00
dependabot[bot] 9fc15d548d Bump raven-actions/actionlint from 2.1.1 to 2.1.2 (#424)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.1 to 2.1.2.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.1...v2.1.2)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.2
  dependency-type: direct:production
  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-03-09 17:43:51 +00:00
GitHub Actions 19003af5f4 Automation: update setup-beam version output to 53a564f 2026-03-07 14:40:30 +00:00
github-actions[bot] 53a564f4bb Update 3rd party licenses (automation) (#417)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-07 14:40:09 +00:00
GitHub Actions 6ee130ce6b Automation: update setup-beam version output to 11a1f27 2026-03-06 20:46:44 +00:00
github-actions[bot] 11a1f27b1e Update 3rd party licenses (automation) (#416)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-06 20:46:21 +00:00
GitHub Actions 83bf0e8bac Automation: update setup-beam version output to 47d6c3c 2026-03-03 17:18:10 +00:00
github-actions[bot] 47d6c3c4af Update 3rd party licenses (automation) (#414)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-03 11:17:49 -06:00
GitHub Actions 0d2a6cb44d Automation: update setup-beam version output to 0f6ba5d 2026-03-03 04:07:24 +00:00
dependabot[bot] 0f6ba5d884 Bump @actions/tool-cache from 2.0.2 to 4.0.0 (#407)
* Bump @actions/tool-cache from 2.0.2 to 4.0.0

Bumps [@actions/tool-cache](https://github.com/actions/toolkit/tree/HEAD/packages/tool-cache) from 2.0.2 to 4.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/tool-cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/@actions/cache@4.0.0/packages/tool-cache)

---
updated-dependencies:
- dependency-name: "@actions/tool-cache"
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* Help Dependabot

---------

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-03 04:07:06 +00:00
GitHub Actions 58166ce788 Automation: update setup-beam version output to 4a07ed8 2026-03-03 03:58:51 +00:00
dependabot[bot] 4a07ed84ac Bump @actions/exec from 1.1.1 to 3.0.0 (#405)
* Bump @actions/exec from 1.1.1 to 3.0.0

Bumps [@actions/exec](https://github.com/actions/toolkit/tree/HEAD/packages/exec) from 1.1.1 to 3.0.0.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/exec/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/exec)

---
updated-dependencies:
- dependency-name: "@actions/exec"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* Modernize JS somewhat

---------

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-03 03:58:30 +00:00
GitHub Actions de78da9a9d Automation: update setup-beam version output to 9928a16 2026-03-02 23:18:44 +00:00
github-actions[bot] 9928a16c11 Update 3rd party licenses (automation) (#413)
Update 3rd party licenses

Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-02 23:18:00 +00:00
GitHub Actions 3964390c66 Automation: update setup-beam version output to 1dacaf8 2026-03-02 23:14:32 +00:00
Paulo F. Oliveira 1dacaf8a01 Fix for license update automation (#412) 2026-03-02 23:14:13 +00:00
GitHub Actions fa8ba5f70e Automation: update setup-beam version output to daf8797 2026-03-02 22:09:05 +00:00
Paulo F. Oliveira daf8797d04 Update 3rd party licenses (#411)
Co-authored-by: GitHub Actions <actions@user.noreply.github.com>
2026-03-02 22:08:40 +00:00
GitHub Actions de72677f00 Automation: update setup-beam version output to 334f76c 2026-03-02 21:59:55 +00:00
dependabot[bot] 334f76ce04 Bump semver from 7.7.2 to 7.7.4 (#406)
* Bump semver from 7.7.2 to 7.7.4

Bumps [semver](https://github.com/npm/node-semver) from 7.7.2 to 7.7.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.7.2...v7.7.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-version: 7.7.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

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

* Help Dependabot

---------

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-02 21:59:33 +00:00
GitHub Actions 86b5ecbf21 Automation: update setup-beam version output to b8fc6e4 2026-03-02 21:34:07 +00:00
dependabot[bot] b8fc6e435e Bump @eslint/js from 9.38.0 to 10.0.1 (#404)
* Bump @eslint/js from 9.38.0 to 10.0.1

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.38.0 to 10.0.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v10.0.1/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 10.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

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

* Help Dependabot

---------

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-02 21:33:26 +00:00
GitHub Actions e7fda7af4e Automation: update setup-beam version output to a50e3e2 2026-03-02 21:22:09 +00:00
dependabot[bot] a50e3e2f89 Bump prettier from 3.6.2 to 3.8.1 (#408)
Bumps [prettier](https://github.com/prettier/prettier) from 3.6.2 to 3.8.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.6.2...3.8.1)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.8.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-03-02 21:21:18 +00:00
dependabot[bot] 7bc1e4ca67 Bump actions/setup-node from 6.1.0 to 6.2.0 (#409)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6.1.0...v6.2.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.2.0
  dependency-type: direct:production
  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-02 21:21:10 +00:00
dependabot[bot] baf2bc3313 Bump raven-actions/actionlint from 2.1.0 to 2.1.1 (#410)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.1.0 to 2.1.1.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.1.0...v2.1.1)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.1
  dependency-type: direct:production
  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-03-02 21:21:02 +00:00
GitHub Actions 3580539cee Automation: update setup-beam version output to fe5485f 2026-02-28 14:47:15 +00:00
dependabot[bot] fe5485f1f6 Bump @eslint/js from 9.31.0 to 9.38.0 (#393)
* Bump @eslint/js from 9.31.0 to 9.38.0

Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.31.0 to 9.38.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v9.38.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.38.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

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

* Help Dependabot out (?)

* Address vulnerabilities with markdownlint-cli

* Do the bump proposed by the PR

* Go back to a working, albeit apparently vulnerable, version

---------

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-02-28 14:46:57 +00:00
GitHub Actions 98de8ffa90 Automation: update setup-beam version output to 6c5fe27 2026-02-28 14:28:14 +00:00
dependabot[bot] 6c5fe278e7 Bump the npm_and_yarn group across 1 directory with 2 updates (#403)
* Bump the npm_and_yarn group across 1 directory with 2 updates

Bumps the npm_and_yarn group with 2 updates in the / directory: [lodash](https://github.com/lodash/lodash) and [glob](https://github.com/isaacs/node-glob).


Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

Removes `glob`

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: direct:production
  dependency-group: npm_and_yarn
- dependency-name: glob
  dependency-version: 
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

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

* Commit `npm run build-dist`'s results

---------

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-02-28 14:27:55 +00:00
GitHub Actions 36214a49c0 Automation: update setup-beam version output to 972bec8 2026-02-28 14:19:09 +00:00
dependabot[bot] 972bec8037 Bump actions/checkout from 4.2.2 to 6.0.1 (#399)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 6.0.1.
- [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/v4.2.2...v6.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.1
  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-02-28 14:18:53 +00:00
GitHub Actions 10e998534e Automation: update setup-beam version output to 542d9a8 2026-02-28 14:07:57 +00:00
Paulo F. Oliveira 542d9a8e62 Improve output (around "Requested ... version") when we know input (#368)
Improve output when we know input
2026-02-28 14:07:39 +00:00
GitHub Actions b764149ef2 Automation: update setup-beam version output to cba803d 2026-02-28 13:59:20 +00:00
dependabot[bot] cba803d7b7 Bump @vercel/ncc from 0.38.3 to 0.38.4 (#387)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.38.3 to 0.38.4.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.38.3...0.38.4)

---
updated-dependencies:
- dependency-name: "@vercel/ncc"
  dependency-version: 0.38.4
  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-02-28 13:58:54 +00:00
dependabot[bot] eda66a8458 Bump globals from 16.3.0 to 16.4.0 (#383)
Bumps [globals](https://github.com/sindresorhus/globals) from 16.3.0 to 16.4.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.3.0...v16.4.0)

---
updated-dependencies:
- dependency-name: globals
  dependency-version: 16.4.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-02-28 13:58:43 +00:00
GitHub Actions cf0aea912f Automation: update setup-beam version output to 13b647e 2026-02-28 13:36:13 +00:00
dependabot[bot] 13b647ed24 Bump shellcheck from 3.1.0 to 4.1.0 (#376)
Bumps [shellcheck](https://github.com/gunar/shellcheck) from 3.1.0 to 4.1.0.
- [Release notes](https://github.com/gunar/shellcheck/releases)
- [Changelog](https://github.com/gunar/shellcheck/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gunar/shellcheck/compare/v3.1.0...v4.1.0)

---
updated-dependencies:
- dependency-name: shellcheck
  dependency-version: 4.1.0
  dependency-type: direct:development
  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-02-28 13:35:39 +00:00
dependabot[bot] d6f6c371de Bump eslint from 9.31.0 to 9.38.0 (#394)
Bumps [eslint](https://github.com/eslint/eslint) from 9.31.0 to 9.38.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.31.0...v9.38.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.38.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-02-28 13:34:45 +00:00
dependabot[bot] 905cf79e7d Bump js-yaml from 4.1.0 to 4.1.1 in the npm_and_yarn group across 1 directory (#396)
Bump js-yaml in the npm_and_yarn group across 1 directory

Bumps the npm_and_yarn group with 1 update in the / directory: [js-yaml](https://github.com/nodeca/js-yaml).


Updates `js-yaml` from 4.1.0 to 4.1.1
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.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-02-28 13:34:31 +00:00
GitHub Actions 4f85a51ca2 Automation: update setup-beam version output to fc1fdd6 2026-02-28 13:34:23 +00:00
dependabot[bot] fc1fdd6f00 Bump actions/setup-node from 4.4.0 to 6.1.0 (#400)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 6.1.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4.4.0...v6.1.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.1.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-02-28 13:34:07 +00:00
dependabot[bot] da184bc66d Bump raven-actions/actionlint from 2.0.1 to 2.1.0 (#401)
Bumps [raven-actions/actionlint](https://github.com/raven-actions/actionlint) from 2.0.1 to 2.1.0.
- [Release notes](https://github.com/raven-actions/actionlint/releases)
- [Commits](https://github.com/raven-actions/actionlint/compare/v2.0.1...v2.1.0)

---
updated-dependencies:
- dependency-name: raven-actions/actionlint
  dependency-version: 2.1.0
  dependency-type: direct:production
  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-02-28 13:33:52 +00:00
GitHub Actions 566deebc64 Automation: update setup-beam version output to b94e7d3 2025-10-01 11:13:33 +00:00
Loïc Hoguin b94e7d372a Allow for Windows'25 container (#388) 2025-10-01 13:12:32 +02:00
GitHub Actions 033f103421 Automation: update setup-beam version output to 9afaa6e 2025-07-21 17:28:20 +00:00
dependabot[bot] 9afaa6e45f Bump csv-parse from 6.0.0 to 6.1.0 (#366)
---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.1.0
  dependency-type: direct:production
  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>
2025-07-21 18:28:00 +01:00
GitHub Actions 4168d0bf3c Automation: update setup-beam version output to 8c38699 2025-07-15 00:44:26 +00:00
dependabot[bot] 8c38699ca8 Bump @eslint/js from 9.30.1 to 9.31.0 (#363)
Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.30.1 to 9.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.31.0/packages/js)

---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 9.31.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>
2025-07-15 01:44:10 +01:00
GitHub Actions df4a3eca5d Automation: update setup-beam version output to db4f13c 2025-07-15 00:43:33 +00:00
dependabot[bot] db4f13ce18 Bump csv-parse from 5.6.0 to 6.0.0 (#364)
* Bump csv-parse from 5.6.0 to 6.0.0

Bumps [csv-parse](https://github.com/adaltas/node-csv/tree/HEAD/packages/csv-parse) from 5.6.0 to 6.0.0.
- [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.0.0/packages/csv-parse)

---
updated-dependencies:
- dependency-name: csv-parse
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

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

* Help Dependabot: push `npm run build-dist`'s results

---------

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>
2025-07-15 01:43:16 +01:00
GitHub Actions 1df7f7a827 Automation: update setup-beam version output to f350bf9 2025-07-14 18:59:45 +00:00
dependabot[bot] f350bf9e05 Bump eslint from 9.30.1 to 9.31.0 (#365)
Bumps [eslint](https://github.com/eslint/eslint) from 9.30.1 to 9.31.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.30.1...v9.31.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.31.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>
2025-07-14 19:59:29 +01:00
20 changed files with 38556 additions and 32538 deletions
+38 -18
View File
@@ -24,7 +24,7 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v4.2.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@v4.2.2
- uses: actions/setup-node@v4.4.0
- 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,19 +58,26 @@ jobs:
runs-on: ubuntu-latest
if: github.ref != 'refs/heads/main'
steps:
- uses: actions/checkout@v4.2.2
- uses: raven-actions/actionlint@v2.0.1
- uses: actions/checkout@v7.0.0
- uses: raven-actions/actionlint@v2.2.0
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@v4.2.2
- uses: actions/setup-node@v4.4.0
- 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:
NODE_ENV: test
- name: .tool-versions test
id: setup-beam
uses: ./
@@ -82,14 +89,20 @@ 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@v4.2.2
- uses: actions/setup-node@v4.4.0
- 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:
NODE_ENV: test
- name: .tool-versions test
id: setup-beam
uses: ./
@@ -101,11 +114,18 @@ 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@v4.2.2
- uses: actions/setup-node@v4.4.0
- 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:
NODE_ENV: test
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
install-rebar: [true, false]
install-hex: [true, false]
steps:
- uses: actions/checkout@v4.2.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@v4.2.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@v4.2.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@v4.2.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@v4.2.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
@@ -3,6 +3,7 @@ name: Update 3rd party licenses (automation)
permissions:
contents: write
pull-requests: write
on:
schedule:
@@ -14,7 +15,7 @@ jobs:
name: Update 3rd party licenses
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.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@v4.2.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@v4.2.2
- uses: actions/checkout@v7.0.0
- name: Use erlef/setup-beam
id: setup-beam
uses: ./
+4 -2
View File
@@ -1,2 +1,4 @@
node_modules/**
test/.tool-versions
/node_modules
/test/.tool-versions
/test/mise.toml
/dist/package.json
+1169 -6963
View File
File diff suppressed because it is too large Load Diff
+58 -20
View File
@@ -78,19 +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 | ✅
| `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
@@ -99,12 +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`
| `macos13` | `macOS-13`
| `win25` | `windows-2025`
| `win25-vs2026` | `windows-2025`
| `macos14` | `macOS-14`
| `macos15` | `macOS-15`
| `macos26` | `macOS-26`
as per the following example:
@@ -139,23 +150,22 @@ e.g. `${{steps.setup-beam.outputs.erlang-version}}`
### Version file
A version file is specified via input `version-file` (e.g.`.tool-versions`). This
allows not having to use YML input for versions, though the action does check (and
A version file is specified via input `version-file` (e.g. `.tool-versions` or `mise.toml`).
The file type is inferred from the filename: files ending in `.toml` are parsed as
[mise](https://mise.jdx.dev/configuration.html#tools-dev-tools) configuration, and all others
are parsed as [`.tool-versions`](https://asdf-vm.com/manage/configuration.html) (asdf format).
This allows not having to use YML input for versions, though the action does check (and
will exit with error) if both inputs are set.
**Note**: if you're using a version file, option `version-type` is checked to be `strict`,
and will make the action exit with error otherwise.
The following version file formats are supported:
- `.tool-versions`, as specified by [asdf: Configuration](https://asdf-vm.com/manage/configuration.html)
Supported version elements are the same as the ones defined for the YML portion of the action,
with the following correspondence.
#### `.tool-versions` format
#### `.tool-versions` / `mise.toml` format
| YML | `.tool-versions`
| YML | Version file key
|- |-
| `otp-version` | `erlang`
| `elixir-version` | `elixir`
@@ -289,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
@@ -297,7 +335,7 @@ on: push
jobs:
test:
runs-on: windows-2022
runs-on: windows-2025
steps:
- uses: actions/checkout@v4
- uses: erlef/setup-beam@v1
+4 -2
View File
@@ -69,7 +69,9 @@ inputs:
required: false
version-file:
description: a versions file (e.g. as used by `asdf`), which defines inputs
description: >-
a versions file (e.g. `.tool-versions` as used by `asdf`, or `mise.toml`
as used by `mise`), which defines inputs
default: ''
required: false
@@ -96,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
}
]
}
]
}
+34389 -24321
View File
File diff suppressed because one or more lines are too long
+19 -22
View File
@@ -1,30 +1,27 @@
import js from '@eslint/js'
import globals from 'globals'
import { defineConfig } from 'eslint/config'
import eslintPluginYml from 'eslint-plugin-yml'
import yml from 'eslint-plugin-yml'
import * as yamlParser from 'yaml-eslint-parser'
export default defineConfig([
...eslintPluginYml.configs['flat/recommended'],
export default [
js.configs.recommended,
{
extends: ['js/recommended'],
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
globals: globals.node,
},
},
{
files: ['**/*.yml'],
languageOptions: {
parser: yamlParser,
},
plugins: {
js,
yml,
},
languageOptions: {
ecmaVersion: 2022,
globals: {
...globals.node,
},
rules: {
...yml.configs.recommended.rules,
},
},
{
extends: eslintPluginYml.configs['flat/recommended'],
files: ['*.yml'],
languageOptions: {
parserOptions: {
parser: 'yaml-eslint-parser',
defaultYAMLVersion: '1.2',
},
},
},
])
]
+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
}
]
}
]
}
+1322 -968
View File
File diff suppressed because it is too large Load Diff
+16 -15
View File
@@ -1,5 +1,6 @@
{
"name": "setup-beam",
"type": "module",
"license": "MIT",
"private": true,
"scripts": {
@@ -16,25 +17,25 @@
"build-dist": "npm run clean-dist && npm install && npm run build && npm run format && npm run lint"
},
"dependencies": {
"@actions/core": "1.11.1",
"@actions/exec": "1.1.1",
"@actions/tool-cache": "2.0.2",
"csv-parse": "5.6.0",
"semver": "7.7.2",
"lodash": "4.17.21"
"@actions/core": "3.0.0",
"@actions/exec": "3.0.0",
"@actions/tool-cache": "4.0.0",
"csv-parse": "7.0.1",
"semver": "7.7.4",
"smol-toml": "1.7.0"
},
"devDependencies": {
"@vercel/ncc": "0.38.3",
"eslint": "9.30.1",
"@eslint/js": "9.30.1",
"globals": "16.3.0",
"markdownlint-cli": "0.45.0",
"prettier": "3.6.2",
"shellcheck": "3.1.0",
"eslint-plugin-yml": "1.18.0",
"@eslint/js": "10.0.1",
"@vercel/ncc": "0.44.1",
"eslint": "10.6.0",
"eslint-plugin-yml": "3.5.0",
"globals": "17.7.0",
"markdownlint-cli": "0.49.1",
"prettier": "3.9.4",
"shellcheck": "4.1.0",
"yarn": "1.22.22"
},
"engines": {
"node": ">=20"
"node": ">=24"
}
}
+128 -53
View File
@@ -1,14 +1,18 @@
const core = require('@actions/core')
const { exec } = require('@actions/exec')
const tc = require('@actions/tool-cache')
const path = require('path')
const semver = require('semver')
const fs = require('fs')
const os = require('os')
const csv = require('csv-parse/sync')
const _ = require('lodash')
import path from 'node:path'
import fs from 'node:fs'
import os from 'node:os'
import { fileURLToPath } from 'node:url'
import * as core from '@actions/core'
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 toml from 'smol-toml'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const MAX_HTTP_RETRIES = 3
const APPS = ['erlang', 'elixir', 'gleam', 'rebar']
if (process.env.NODE_ENV !== 'test') {
main().catch((err) => {
@@ -53,7 +57,7 @@ async function main() {
await maybeInstallRebar3(rebar3Spec)
// undefined is replaced by a function, post- main branch merge
const setupBeamVersion = 'fceaea9'
const setupBeamVersion = 'f4f179b'
core.setOutput('setup-beam-version', setupBeamVersion)
}
@@ -75,6 +79,7 @@ async function installOTP(otpSpec) {
},
})
core.setOutput('otp-version', otpVersion)
maybeEnableProblemMatchers('erlang')
core.endGroup()
return otpVersion
@@ -96,7 +101,7 @@ async function maybeInstallElixir(elixirSpec) {
},
})
core.setOutput('elixir-version', elixirVersion)
maybeEnableElixirProblemMatchers()
maybeEnableProblemMatchers('elixir')
core.endGroup()
installed = true
@@ -105,16 +110,18 @@ async function maybeInstallElixir(elixirSpec) {
return installed
}
function maybeEnableElixirProblemMatchers() {
const disableProblemMatchers = getInput('disable_problem_matchers', false)
if (disableProblemMatchers === 'false') {
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]}`)
}
}
@@ -191,11 +198,21 @@ async function getOTPVersion(otpSpec0, osVersion) {
}
function requestedVersionFor(tool, version, originListing, mirrors) {
return (
`Requested ${tool} version (${version}) not found in version list, ` +
`at ${originListing}${mirrors ? `, with mirrors ${mirrors}` : ''}; ` +
"should you be using option 'version-type': 'strict'?"
)
const isVersionTypeStrict = isStrictVersion()
let versionType = 'loose'
if (isVersionTypeStrict) {
versionType = 'strict'
}
let ret =
`Requested ${versionType} ${tool} version (${version}) not found in version list, ` +
`at ${originListing}${mirrors ? `, with mirrors ${mirrors}` : ''}.`
if (!isVersionTypeStrict) {
ret = `${ret} Should you be using option 'version-type': 'strict'?`
}
return ret
}
const knownBranches = ['main', 'master', 'maint']
@@ -262,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',
)
@@ -360,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)
@@ -566,7 +581,7 @@ function getVersionFromSpec(spec0, versions0) {
}
function maybeCoerced(v) {
let ret = null
let ret
try {
if (!isRC(v)) {
ret = semver.coerce(v).version
@@ -643,18 +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',
macos13: 'macOS-13',
win25: 'windows-2025',
'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) {
@@ -790,28 +817,14 @@ alongside ${alternativeName}=${alternativeValue} \
return input
}
function parseVersionFile(versionFilePath0) {
const versionFilePath = path.resolve(
process.env.GITHUB_WORKSPACE,
versionFilePath0,
)
if (!fs.existsSync(versionFilePath)) {
throw new Error(
`The specified version file, ${versionFilePath0}, does not exist`,
)
}
core.startGroup(`Parsing version file at ${versionFilePath0}`)
function parseToolVersionsFile(versionFilePath) {
const appVersions = new Map()
const versions = fs.readFileSync(versionFilePath, 'utf8')
// For the time being we parse .tool-versions
// If we ever start parsing something else, this should
// become default in a new option named e.g. version-file-type
versions.split(/\r?\n/).forEach((line) => {
const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/)
if (appVersion) {
const app = appVersion[1]
if (['erlang', 'elixir', 'gleam', 'rebar'].includes(app)) {
if (APPS.includes(app)) {
const [, , , version] = appVersion
core.info(`Consuming ${app} at version ${version}`)
appVersions.set(app, version)
@@ -828,6 +841,46 @@ function parseVersionFile(versionFilePath0) {
return appVersions
}
function parseMiseTomlFile(versionFilePath) {
const appVersions = new Map()
const miseToml = fs.readFileSync(versionFilePath, 'utf8')
const miseTomlParsed = toml.parse(miseToml)
for (const app in miseTomlParsed.tools) {
if (APPS.includes(app)) {
const appVersion = miseTomlParsed.tools[app]
const version =
typeof appVersion == 'object' ? appVersion.version : appVersion
core.info(`Consuming ${app} at version ${version}`)
appVersions.set(app, version)
}
}
return appVersions
}
function parseVersionFile(versionFilePath0) {
const versionFilePath = path.resolve(
process.env.GITHUB_WORKSPACE,
versionFilePath0,
)
if (!fs.existsSync(versionFilePath)) {
throw new Error(
`The specified version file, ${versionFilePath0}, does not exist`,
)
}
if (versionFilePath0.endsWith('.toml')) {
core.startGroup(
`Parsing ${path.basename(versionFilePath0)} file at ${versionFilePath0}`,
)
return parseMiseTomlFile(versionFilePath)
}
core.startGroup(`Parsing .tool-versions file at ${versionFilePath0}`)
return parseToolVersionsFile(versionFilePath)
}
function debugLog(groupName, message) {
const group = `Debugging for ${groupName}`
core.debug(
@@ -926,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'],
@@ -1010,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`
}
@@ -1079,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 = {
@@ -1226,12 +1300,13 @@ function debugLoggingEnabled() {
return !!process.env.RUNNER_DEBUG
}
module.exports = {
export default {
get,
getElixirVersion,
getGleamVersion,
getOTPVersion,
getRebar3Version,
getRunnerOSVersion,
getVersionFromSpec,
githubAMDRunnerArchs,
githubARMRunnerArchs,
+99
View File
@@ -0,0 +1,99 @@
OTP-26.0 8c0ea6bd3306cfd6ca19730d180a2a93a716e1ee 2026-04-24T21:11:44Z 9210a9e4b3f12cf32dd2f42857dc980e2776d52505c0c34858ef6d50a186dd22
OTP-26.0.1 b54b86ad4f1253f46fd4552a73923756660c1d53 2026-04-24T21:10:25Z f1c399db68ea5885434201dd48313bebdccf2222e68268b09214dd3401400faa
OTP-26.0.2 d051172925a5c84b2f21850a188a533f885f201c 2026-04-24T21:08:41Z d0260e2f76ddfffa46dfd5090cfb6464eed2aa3f09dfb032b01cd2882a760e10
OTP-26.1 e962af35263618665c1df57df5135c0c703ad502 2026-04-24T20:58:59Z 623ea1623afbb19feeb257fdc92d17a82a35a8ecea32925c0c89a2a6d3dd9853
OTP-26.1.1 2bdd30b872ab91dc376998d2c417f2a8b514d1aa 2026-04-24T20:42:54Z 68eb1802931e87c70c9ea8bcc6de68062785cd6c67abc0696f2e07803403f12c
OTP-26.1.2 c41d424db42ba84b72f3e25167470c3555723d87 2026-04-24T20:41:58Z 6851172f8d6bbeed99e9aeb73dc0e8df4cdfb69ec4275ccfbd6c85d402786608
OTP-26.2 7fc0898502cb3370b7c6d523a7393cd101808493 2026-04-24T20:40:23Z 8c0f14ec76b26ca0a8bc7fe1d536b3edc7513ab48096d5c09452953140a01f61
OTP-26.2.1 ca8b893f9d5bdd0957b78514ba523032e762c644 2026-04-24T20:29:53Z 7569ff704e74b681825dd14577ec4784a43822da84e2590fc93d13160cd71716
OTP-26.2.2 b83df13eec5446beab06dd24315d37a5b0633fd2 2026-04-24T20:13:25Z 85c443095df61087f288601af92af7c07f7190570a4aa55eee9114a2d00ccf2b
OTP-26.2.3 928d03e6da416208fce7b9a7dbbfbb4f25d26c37 2026-04-24T20:12:42Z 067b97c62cc5bc4753dedc7e63f1b6503bc02e89d67eda49c1c23ba9e54beaa4
OTP-26.2.4 e26c5206dc98ec1b8f978fceaa61fd1354266ccb 2026-04-24T20:11:19Z f6a83da7f5fab9285d1c3e5731dcd65b6a93a5f7285fe4ef08e9c2347d241b30
OTP-26.2.5 412bff5196fc0ab88a61fe37ca30e5226fc7872d 2026-04-24T20:00:51Z 53ab42240cbacaa9e33682527abf7991cde3653401a2216f0f83e26cb50a9f8b
OTP-26.2.5.1 858efd5b35b572c71a8010ad323c4127eef5bc29 2026-04-24T19:43:57Z 833b9a2e7955e3d09d872ba821fa8eb1fbad55e63ef119209e93bd445d82f90d
OTP-26.2.5.10 f607645b971572b03f9f45551b1804f41fac8fa7 2026-04-24T18:43:56Z c0023d40d000daddd979b494172c0ba51c33857082e598d962448ed3c617f568
OTP-26.2.5.11 9f6c4eb54823324d1e6f8cb95c15feb09f09044e 2026-04-24T18:43:17Z 500f8aa1a0784c17715e6bcc10ea9761cc56ad196c335e4c90909e0e4a05c075
OTP-26.2.5.12 7335f79eeaa0094c274dab2aa2ced9e138027c75 2026-04-24T18:31:47Z 1c6deef6d752ed7b838820b973be5078f2f110daa9208c9a29a59709787126da
OTP-26.2.5.13 0ac548b57c0491196c27e39518b5f6acf9326c1e 2026-04-24T18:14:48Z 325b0c25d2981d064edce1188c7583e02f89b366a22571299461b62b323f6cea
OTP-26.2.5.14 c1ce39f1f7bafa253514a8fa646dc00112b066bb 2026-04-24T18:14:10Z 0aa90ffab8371e2f32114564254eb2c706aefa6163107739301e7373db4a3dc0
OTP-26.2.5.15 4d9b61940e8d4dd00059306983022e3114fdf245 2026-04-24T18:13:42Z b25e8597f9e9fa21c7ccdcea268370ef0eec3897be46975cb128c34072d3ddb9
OTP-26.2.5.16 ce72bbc20a4236d69ac716624ccb799921ac5903 2026-04-24T18:02:15Z 84b96e04576832cbebcc98bae783152efb290d09913de160ab926b00a0e0dc9e
OTP-26.2.5.17 3532818e19647ae5675396eb501400783e5ca693 2026-04-24T17:45:04Z 15b674046eefa090491609f151f9d7f9c3eb355d38bbd4bf34108f09c373cae2
OTP-26.2.5.18 8c304e09e4d9301f56f6d7b2c4c9f60b4f9d9425 2026-04-24T17:44:16Z 795ca3e87bda7564182f9f5a9c1450c00f719d64e26ce5e2dca905ecb83e5437
OTP-26.2.5.19 cdb375af6b456946b1ff3fc993d122018f20b031 2026-04-24T17:43:44Z 33603c379bef7f41a459bfea2c308d885f38118fc67430fd1745fbd22a3b72b7
OTP-26.2.5.2 c1805ad6200cec57bf86640fb9a1c715db515b78 2026-04-24T19:43:13Z 18d7bafd68d9030144632674e2d2c08285d6c5ce3ae210af4e8642f83d8f5e37
OTP-26.2.5.20 e5d6d95c9aac559b59b78c66eb558ee54bd4e006 2026-04-24T17:33:05Z f11bea66d601ff23affb32158d18b209e6e475a063706572c3be835e6edd9fdc
OTP-26.2.5.21 c9ce879f4ca194adc5393f52b2c4cd57b3c3d89d 2026-05-31T16:45:05Z 98897de6d71ef8c5542c822598a538f3269a32c56d819fdb69858fbe7329e403
OTP-26.2.5.3 84152c2c9d85128d3cce471f645f154c34132d82 2026-04-24T19:42:01Z ea3e17728b77b1cd7c7386e0fe5fe927f26f772e595930f09bc70abde6365115
OTP-26.2.5.4 b6e7e233d0b781728e745dc04f4cb2645c6632ec 2026-04-24T19:31:30Z 753f5b0fcb908fa0b7a1e00234feea24ae71e5ed9f73284b501ae089f202ce59
OTP-26.2.5.5 57f154f5ceb592ffa5360f7e338577fa04aa0d5f 2026-04-24T19:14:05Z 6e16453c2e32f7c8e81f26a0aa7ba6bd2cbeeaaebe8c174518cce813d4938931
OTP-26.2.5.6 51548614b588c667a4230c17e2b187474dd70d63 2026-04-24T19:13:25Z 1867dc3687b07bac702247c02cd8284d0b5175ebf0aa3b069f86394cbdfabc4a
OTP-26.2.5.7 3b059b6caf4e087c8c207ae7012bb50736fdf18c 2026-04-24T19:12:19Z 6259f7e5dcfe4fa0808ae09a06d43492c8b8f21215ca07a1e510ed4e01e2859c
OTP-26.2.5.8 a7a875106c7af7f094b04a765e93dd90522ef7da 2026-04-24T19:01:05Z 2f5c1866af6bab64e4c49c05536e0acd687545809368c0bc7859af7c90477d0d
OTP-26.2.5.9 a2da0bad3f2d49dc1878f46f2d2961144ae0e0cb 2026-04-24T18:44:30Z 600704ad8c34abf66cda2e013ce4e386c8439d63b4c4d1522b74286a5ceea7b0
OTP-27.0 601a012837ea0a5c8095bf24223132824177124d 2026-04-24T17:05:00Z 98ad5cbd4a74cee15697b8cf973afd6c39264d104206aab6bc4864cad97c37cd
OTP-27.0-rc1 b74bd21d5cb52e0fdc5ea321439c428783feea23 2026-04-24T17:15:43Z 587a51911d99d2696c020a9dd73fedd37172c955a3c3b5e700614a601df35f43
OTP-27.0-rc2 e651174c569694c92b1794ddd0a1a4a199610091 2026-04-24T17:14:33Z 5c8928cd68e1c86b65a7f771201d0135aa2616ea28aecd9fba03b5e4ccc7ae4f
OTP-27.0-rc3 5df3992d695da4d7e8777cf7605279ce9d131f1c 2026-04-24T17:14:17Z 62604f6c2a4345f452f82122aee67afd5d366c4a04cb9aa52cd3ad18ce5b32ea
OTP-27.0.1 ee9628e7ed09ef02e767994a6da5b7a225316aaa 2026-04-24T17:02:00Z a854f39d318ba6133c41ba9275b2d1613e85bc8446086998dd927c7ff8d22fa9
OTP-27.1 9ae2ef54fc6dacb5bfbe2dc6fc6f2522d57ce1fb 2026-04-24T17:00:08Z 80df8276b9d03827cab3b9989d08acf6f98dc65f025deae0554de377f3472618
OTP-27.1.1 f4d130fd3512875ee95ce05b30f77e7c7689915f 2026-04-24T17:00:04Z b6a9963e6c02e5cf6338248ef20328c0a6974f8ecfc3ecc606656bead6567451
OTP-27.1.2 44ffe8811dfcf3d2fe04d530c6e8fac5ca384e02 2026-04-24T16:51:20Z 6a7ebd11ebc4998c658eb1738c4f91ae262809814dc22705d5a2e19118935ae2
OTP-27.1.3 800613cca84970750658b294ddd7977843b3bc5d 2026-04-24T16:47:44Z 50ed511fb2a63cecdbaff83377119e63a93b8ae4276322fadf5204a112696920
OTP-27.2 6bf99d64a0df3feceb25c166c3a3cb3f80594f59 2026-04-24T16:45:54Z b44c23696d0e97d440a0565f9a8c8438c44908efa008e7642bfd7402390a0b12
OTP-27.2.1 4726e39654c7a7412f7c2f66c7eb567c978a9947 2026-04-24T16:45:47Z 38282ac000f0278d99cbe379b4f7f67e3ddda96e2be3eea5cce2b7e3eac34c6d
OTP-27.2.2 8a4e04e9c48d94ef1216b0426fa71ccfdd78f7d3 2026-04-24T16:37:48Z 1935890b96e104a4545b50ba3184c74a7820438425966ea6637ca6777f981804
OTP-27.2.3 b6ab3a385ec72e346a44807d53e2109a51cde613 2026-04-24T16:34:00Z bde8c6311cc8242481dad5f1e3f33c920a1be71885fa8e779d9a006fb8cc0764
OTP-27.2.4 fc23816894479e0da3a22faaf90c16db3071ade5 2026-04-24T16:31:37Z a560882f429d425c2acc96c634b8ae05eb7b317beca0981e2b8f6ae1a324cb79
OTP-27.3 05737d130706c7189a8e6750d9c2252d2cc7987e 2026-04-24T16:31:34Z 8375d270d91a93fb00c4bb472fe3865575b76d7b602c373080c8c7e345d19734
OTP-27.3.1 76266a91989378ce53159eee4bd16773e248f5f3 2026-04-24T16:24:17Z ef2a695e00f6fb661d59592448574a9e44e763252d957a48afeaeabf966adf78
OTP-27.3.2 7b8942ef7b540bbd1393999e56d0e96b6ab3c276 2026-04-24T16:20:13Z c3c94d3abeea1438abf957bc2b707b1cefdef6b6e3f807440be7eb961d74dde5
OTP-27.3.3 10e20b1dbe39b056fab430e50b08cb4f3696ae87 2026-04-24T21:22:04Z bce0743ff5eac77d07217f8c2e624b703c44c2e83d987f3202f7bb9e69348dfa
OTP-27.3.4 c388a2d1b3f9918652276d4798692dd4d8ef97fc 2026-04-24T16:17:08Z e3325746961fb1280848038ff06c4cfc2b903cf793f9113303aaf8e43f6e2c7e
OTP-27.3.4.1 9b7b5431260e05a16eec3ecd530a232d0995d932 2026-04-24T16:03:35Z 40475e473e5d9e45edce59ec13442ee43062ad8a0380280253d10312623df9c1
OTP-27.3.4.10 0aa261a7765c9698aabc7f7c5be878a8850a9c5f 2026-04-24T15:30:13Z c8d7b7d8a0a0a338304b6919bb1b4934bf553fcf8bf7a7e5719634f4077492d0
OTP-27.3.4.11 c0ce26bb20ab5fcd6e214fa285aec5a409772e61 2026-04-24T15:30:00Z ebccce035c0b3d890f72ae6868a7bbbbc8530147158df206bff12a448793cc16
OTP-27.3.4.12 a2394acad3e3b8fa74d40905cb79bac2ab68258a 2026-05-31T15:52:31Z 6ea6ce3c3195a5a8b190a1f96b8f2b78d9ec3383218e37ef68a7882c5531335b
OTP-27.3.4.13 f835a5a32aeeb70778c958b5c01a401973e8fbe2 2026-06-10T13:08:02Z 8f4feb43f4370f8d2e47ceaa572fdeb20c726b831c3eb4a4b3fdc241e9db9884
OTP-27.3.4.2 ccff5995c5adf4b5f54adee7ba1a5948053384f9 2026-04-24T16:10:44Z e14df30b6e0422f64b5ac4896c2d4957ec7a87e3c23bf3f1f1a4407e28a3e040
OTP-27.3.4.3 940ec0f6f0370ecf5cd93cae31fd91f4651ddca6 2026-04-24T16:04:51Z d2f8046e4be2f4be98af4eeb584fb17affe9421e1a4a0b7d7ae938f20253abb7
OTP-27.3.4.4 3a2e1c435fe547a93b1a8c27c2554da72b49f16d 2026-04-24T16:07:12Z 371ec67c2ae4e389737c0d16a44288103407f075a6a4aef9afd02ba43eae6040
OTP-27.3.4.5 36239aebc3bc6b873da9ea519c41fb3befbc518d 2026-04-24T15:49:38Z aab9a6bac28cf7c1d3800f8201d02953753415119716ca6a80b103ffd9d22160
OTP-27.3.4.6 f1b17a1fb4d2bc74501608852547f8d9b504f7e3 2026-04-24T15:52:26Z a278a261c37fd3f32d8c04240e99d258103857d6af15fd7ad201c6aa0a1ffd1a
OTP-27.3.4.7 e56f9815d9f9389768afa2bc45c7233a7db838fd 2026-04-24T15:47:46Z c03da29e8eae9fe36c74976c13bd027f0eeea7713a7dd8c96bb823f1674b2131
OTP-27.3.4.8 61633c62611720cc27f92026d075a1f2862ce522 2026-04-24T15:50:33Z a8c645b6720463f4fea2d13e2c5f677a628c6fac6480d7588ae3d63d2dc8a0d6
OTP-27.3.4.9 4aa809ae4eb4a20ad89c23837376acf179877f39 2026-04-24T15:43:28Z 1d00d44c7ea910e6f828dffef1d386cc86c18f98e0260c72bfb23c54dc915e04
OTP-28.0 9e6f6742c4d9e9915ee8af0dcb7d97cf1f836116 2026-04-24T21:19:07Z b54d35fc7df5f9045694f7d855126effca8b5fc440df7b9ecd269a7eb0b37a98
OTP-28.0-rc1 74ed6b0ed20da257f11fc64399a1c8dd4f967fe7 2026-04-24T15:28:16Z 25591d8a6e3b97b8a8fa39e46015084b5fbab99a359be6fd28477f4ef4149cd8
OTP-28.0-rc2 b7c33191648c8b280c3bc8baf5434b125e88f0ef 2026-04-24T15:16:49Z 95cd0eb89ce5e27f1fe2a190d569e2cb875558ed8a3cecbe0a0045b33f5c993f
OTP-28.0-rc3 feae4e669818cb794a1755036c1b11f672634f8f 2026-04-24T15:16:46Z ba9e38b3d3299cd80a0a14770d3c167e0575a721638e2d68232443868aa0999e
OTP-28.0-rc4 56f63ad95cd71ee00b535e6db4e8be180baa6066 2026-04-24T15:15:45Z 016dc114bf08f7c7698c472603c47d70ef56d8cf147dd9d2f6b7aca6958e9fbf
OTP-28.0.1 d9454dbccbaaad4b8796095c8e653b71b066dfaf 2026-04-24T15:03:16Z 7329d39b4008ecb35769a2f8cb5f92832c465767d5bc8131caa7708fb00acbd1
OTP-28.0.2 d04f6a0b261cf23e316e48e2febe14b30c592dc5 2026-04-24T15:03:05Z bd8ed588c263d5f7f27371718265582cd9d87e04d8a3c72e87831601132d4420
OTP-28.0.3 756621cebe01ec43df61d9627380ca7e1e301c9b 2026-04-24T15:02:47Z 0ad74c4a455cad900aa56bde2c04dc4dfa46c0c0217afc440786f83547ba6df0
OTP-28.0.4 eec5ff40a2ae2c3b3c6d952709ba4f16a6769024 2026-04-24T14:47:33Z 19aa151e9e2a610fddc018066ffd7ec98162a8a021184f70a2771127e665ca58
OTP-28.1 34316363201de07437e14e79ef559fde7becb0ee 2026-04-24T14:47:30Z c9728fc7975d03e8a3299ed6e564c62dd9a2d130420f6066d1c2f179f01c390e
OTP-28.1.1 b2e2bc472deeb5deb6fcddf7406364e42f6c3d0a 2026-04-24T14:47:26Z 07514587f9187cc75abf7759310332e95a4b6ac9b2fa0e2de919f3b8bb9c1406
OTP-28.2 dff037f64e8eaa0a591866e967ee2b7164329376 2026-04-24T14:47:14Z b0cd18e0d5e09ba12e37cd5944ec8c6aceb0266583fb4209f144bcac4494ba44
OTP-28.3 ab489c0b260c637a9487f8753909ea94dacbbec2 2026-04-24T14:31:40Z 401b8ef30f50587488f884da7d1f61d67638d71cad4496fea2d196479124e9c5
OTP-28.3.1 aa5b1d3366762ff8f420f2aa6a52604b481530c9 2026-04-24T14:31:36Z 04e88c160c3b55eea59175798b52745e111ba36649cbc6d35f947e8e8b413a33
OTP-28.3.2 b74eae92e1dee97d57a9ab3ea3c36e8b701a9ca6 2026-04-24T14:31:29Z ea8be9b0a374602b080570eb0244720d643ecb54ff7611a9f3945c116087d2c6
OTP-28.3.3 dfd646eef0dd6b1f3674a7b6c7c7ff944939139b 2026-04-24T14:31:21Z 34b0dd70b1eb74b9de0ed82f69b6db664f6d90e603cfcfa3d3c060f65b7777bc
OTP-28.4 927bcc220b923ba1fef574618e82a3b7a2a4471d 2026-04-24T14:16:07Z 257e53beb1143154a80a7c2454261d6abd824b09629d79b99eb4588804247557
OTP-28.4.1 c8fca7e34e4db5d977ccf292cc2490ddb05b5879 2026-04-24T14:15:55Z 73eba3639b9873c267b7f4df62078d6f22b146882fd6d5241dbab3be9e0b616c
OTP-28.4.2 002fa5032baa0f6a8c4587c81f60e3273775a4d1 2026-04-24T14:15:52Z 1e25cfb65127e2e94913482a2486d38b5ce44c59b1c2858689df9de31a5ddcbd
OTP-28.4.3 359d91e66ffdede8f7855565087d324581c28f2e 2026-04-24T14:15:47Z 81d53e2ec4230b521b2f66ac64458e66cd634b2f205ee59e72ea54733644f0d0
OTP-28.5 f4506ee46d68694a1d23ca81c314092fd83e8f85 2026-04-24T14:00:14Z 6deadb6b6252376aaac89e5c837c72ec24c44bf3025856ade71d3c14afe66014
OTP-28.5.0.1 5770157eabdd4e8b0b83d64fd8b207c0150c2b64 2026-05-31T15:14:41Z 9fa866ad9abea5807b77919c27be3bbbe3806b4998abf6350d06e42068e290ec
OTP-28.5.0.2 4567096bddd1ecddb7c973019ca7e769f486aa8f 2026-06-10T10:54:11Z 01b02af31fb20937b146cf68a2a3ee5b129c45be5f74e65b101058d5650c1dc8
OTP-29.0 550d7b7898706c7822362c42e7b93120c1d1f29a 2026-05-13T09:41:44Z d20385dfafb49ef36303858c7577de8d8931102b6482fcbbdd83991638c122bd
OTP-29.0-rc1 04f1ebb18053d48f18e2a52e6ebe09b5f3d25580 2026-04-24T14:00:36Z b0a44585175f50d1170e0dd5606b3a502bbd82ce8d61daebe294b6c97812408b
OTP-29.0-rc2 92322002e7287640f7615fed89a677505b44bfdd 2026-04-24T14:00:19Z b952e731d7ee6d51822d2d261c809a2d4464efd1a87463bcf2c7f4495e7431e6
OTP-29.0-rc3 7721ab7462a426c107964b0f1e47207475e085e3 2026-04-24T13:59:40Z 83ecffb614710e05867ba28175e2b9e90d0b68157bf8c1c83793d7d75d5b6d97
OTP-29.0.1 f26c7e590c5d1b3afa0dee38093442df117822e3 2026-05-31T14:36:40Z 05b41f99f8d4eeb6944d0201054bc38edb293503353f676df3afbf1042475486
OTP-29.0.2 36b336d7675edfb976768465c5067bc8bc16ee9a 2026-06-10T08:39:21Z 905919b09cf6c27decdabc4367af81a9ed248acd340a4b80fa55c3df14489093
maint d31b060b5c25715a47cc3611be7ef017c341bcd5 2026-06-11T13:02:03Z dd981f09ae93c4030de6a33f65b655e3257cfe15477d6a83c61d79317e298905
maint-27 f835a5a32aeeb70778c958b5c01a401973e8fbe2 2026-06-10T13:02:32Z 4e3ea4facd9f5f8023628412f35a4ec13991cb5879093de99692002b187a94ff
maint-28 4567096bddd1ecddb7c973019ca7e769f486aa8f 2026-06-10T10:48:53Z 0656c4606790a6d84faef3b1c46cba705de9e6a7dea4787d3fdeb0dc3d738721
maint-29 36b336d7675edfb976768465c5067bc8bc16ee9a 2026-06-10T08:33:37Z 3d7b337c4b2ba12d797c493154a79ee32ae7a8f156b14f943b9216b47e77af4f
master 56f75c4dd241431978e6e13788822e4c1a18b0f7 2026-06-11T13:02:03Z 493650afcdeead215e8a10c16605a430e64c24fc4476ba90aa69cf5e0f314279
+869 -72
View File
File diff suppressed because it is too large Load Diff
+249 -39
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,15 +21,7 @@ simulateInput('install-hex', 'true')
simulateInput('github-token', process.env.GITHUB_TOKEN)
simulateInput('hexpm-mirrors', 'https://builds.hex.pm', { multiline: true })
const assert = require('assert')
const http = require('http')
const fs = require('fs')
const os = require('os')
const path = require('path')
const setupBeam = require('../src/setup-beam')
const { problemMatcher } = require('../matchers/elixir-matchers.json')
const { describe, it } = require('node:test')
const csv = require('csv-parse/sync')
const { default: setupBeam } = await import('../src/setup-beam.js')
const matrix = {
otp: {
@@ -25,6 +29,7 @@ const matrix = {
'ubuntu-20.04': parseBuild('test/otp/ubuntu-20.04/builds.txt'),
'ubuntu-22.04': parseBuild('test/otp/ubuntu-22.04/builds.txt'),
'ubuntu-24.04': parseBuild('test/otp/ubuntu-24.04/builds.txt'),
'ubuntu-26.04': parseBuild('test/otp/ubuntu-26.04/builds.txt'),
windows: parseReleases('test/otp/releases.json'),
'macos-aarch64': parseCsv('test/otp/macos/aarch64-apple-darwin.csv'),
'macos-x86_64': parseCsv('test/otp/macos/x86_64-apple-darwin.csv'),
@@ -173,11 +178,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'
@@ -187,6 +189,14 @@ describe('.getOTPVersion(_) - Erlang', () => {
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = '27.0'
osVersion = 'ubuntu-26.04'
expected = 'OTP-27.0'
got = await setupBeam.getOTPVersion(spec, osVersion)
assert.deepStrictEqual(got, expected)
simulateInput('version-type', before)
before = simulateInput('version-type', 'strict')
spec = '25.3.2.1'
osVersion = 'ubuntu-20.04'
@@ -195,21 +205,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)
@@ -272,7 +282,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)
@@ -293,7 +303,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)
@@ -305,6 +315,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)]
@@ -340,6 +351,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)]
@@ -400,10 +412,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)]
@@ -482,12 +497,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)]
@@ -517,6 +535,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)]
@@ -527,10 +546,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)]
@@ -541,11 +563,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', () => {
@@ -568,21 +591,57 @@ describe('OTP arch-specific install', () => {
`Fetching OTP Version with invalid Github runner architecture is supposed to fail`,
)
}
process.env.RUNNER_ARCH = previousRunnerArch
})
})
describe('.getRunnerOSVersion(_)', () => {
it('maps x86 ImageOS values to their container', async () => {
const previousImageOS = process.env.ImageOS
process.env.ImageOS = 'ubuntu22'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-22.04')
process.env.ImageOS = 'ubuntu24'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-24.04')
process.env.ImageOS = previousImageOS
})
it('maps arm64 ImageOS variants to the same container as x86', async () => {
const previousImageOS = process.env.ImageOS
process.env.ImageOS = 'ubuntu22-arm64'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-22.04')
process.env.ImageOS = 'ubuntu24-arm64'
assert.strictEqual(setupBeam.getRunnerOSVersion(), 'ubuntu-24.04')
process.env.ImageOS = previousImageOS
})
it('throws for genuinely unknown ImageOS values', async () => {
const previousImageOS = process.env.ImageOS
process.env.ImageOS = 'plan9'
assert.throws(
() => setupBeam.getRunnerOSVersion(),
/Tried to map a target OS/,
)
process.env.ImageOS = previousImageOS
})
})
describe('.getOTPVersion(_) - Elixir', () => {
let got
let expected
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'
@@ -613,9 +672,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)
@@ -640,8 +699,6 @@ describe('.getOTPVersion(_) - Elixir', () => {
simulateInput('version-type', before)
})
}
process.env.RUNNER_ARCH = previousRunnerArch
})
describe('.getOTPVersion(_) - Gleam', () => {
@@ -685,18 +742,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)
})
@@ -936,6 +993,16 @@ describe('.getVersionFromSpec(_)', () => {
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-24.04'])
assert.deepStrictEqual(got, expected)
spec = '> 0'
expected = 'OTP-29.0.2'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-26.04'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = 'OTP-29.0.2'
got = setupBeam.getVersionFromSpec(spec, matrix.otp['ubuntu-26.04'])
assert.deepStrictEqual(got, expected)
spec = 'latest'
expected = '27.0-rc3'
got = setupBeam.getVersionFromSpec(spec, matrix.otp.windows)
@@ -962,13 +1029,13 @@ 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)
})
})
describe('version file', () => {
describe('.tool-versions file', () => {
const otpVersion = unsimulateInput('otp-version')
const elixirVersion = unsimulateInput('elixir-version')
const gleamVersion = unsimulateInput('gleam-version')
@@ -1017,6 +1084,57 @@ gleam ${gleam} \n`
simulateInput('gleam-version', gleamVersion)
})
describe('mise.toml file', () => {
const otpVersion = unsimulateInput('otp-version')
const elixirVersion = unsimulateInput('elixir-version')
const gleamVersion = unsimulateInput('gleam-version')
it('is parsed correctly', async () => {
const erlang = '27.3.4.1'
const elixir = '1.18.4'
const gleam = '1.9.1'
let miseToml = `[tools]
"erlang" = "${erlang}"
elixir = { version = "${elixir}", postinstall="mix deps.get" } # comment, with space and ref:
"not-gleam" = 0.23 # not picked up
"gleam" = "${gleam}"
[env]
_.file = ".env"\n`
const filename = 'test/mise.toml'
if (process.platform === 'win32') {
// Force \r\n to test in Windows
miseToml = miseToml.replace(/\n/g, '\r\n')
}
fs.writeFileSync(filename, miseToml)
process.env.GITHUB_WORKSPACE = ''
const appVersions = setupBeam.parseVersionFile(filename)
assert.strictEqual(appVersions.get('erlang'), erlang)
assert.strictEqual(appVersions.get('elixir'), elixir)
const absoluteFilename = path.join(os.tmpdir(), 'mise.toml')
fs.writeFileSync(absoluteFilename, miseToml)
process.env.GITHUB_WORKSPACE = process.cwd()
const absoluteAppVersions = setupBeam.parseVersionFile(absoluteFilename)
assert.strictEqual(absoluteAppVersions.get('erlang'), erlang)
assert.strictEqual(absoluteAppVersions.get('elixir'), elixir)
assert.ok(async () => {
await setupBeam.install('otp', { toolVersion: erlang })
})
assert.ok(async () => {
await setupBeam.install('elixir', { toolVersion: elixir })
})
assert.ok(async () => {
await setupBeam.install('gleam', { toolVersion: gleam })
})
})
simulateInput('otp-version', otpVersion)
simulateInput('elixir-version', elixirVersion)
simulateInput('gleam-version', gleamVersion)
})
describe('.get(_)', () => {
it('retries as expected', async () => {
let attempt = 0
@@ -1108,6 +1226,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, '')
}