mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-29 11:10:48 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc68ffb904 | ||
|
|
190c3a5e7b | ||
|
|
92dab893ed | ||
|
|
5dfda65506 | ||
|
|
ef385d6edc | ||
|
|
bf3c3af135 | ||
|
|
e7645e4102 | ||
|
|
a36098e741 | ||
|
|
87781dc68a | ||
|
|
d5f3979a5f | ||
|
|
930b3281ba | ||
|
|
30056ca086 | ||
|
|
1f3f354e6a | ||
|
|
3e49772722 | ||
|
|
2ac22cd739 | ||
|
|
c4782c7b58 | ||
|
|
0afadf6bdd | ||
|
|
e539b1ee26 | ||
|
|
c5f0656346 | ||
|
|
ee09b1e59b | ||
|
|
f8b54b559e | ||
|
|
bf1ce74034 | ||
|
|
559a930751 | ||
|
|
1380ebe712 | ||
|
|
0a549596b0 | ||
|
|
3a3c94fd9e | ||
|
|
cfafb69ddd | ||
|
|
b3cbb6afbf | ||
|
|
2abe6cda7a | ||
|
|
d55fdba43f | ||
|
|
eb86ad6523 | ||
|
|
af6da5da48 | ||
|
|
f018c1e6d8 | ||
|
|
d843ebb78b | ||
|
|
c8e09547a7 |
@@ -48,7 +48,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v6.0.2
|
- uses: actions/checkout@v6.0.2
|
||||||
- uses: actions/setup-node@v6.3.0
|
- uses: actions/setup-node@v6.3.0
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '24'
|
||||||
- run: npm run build-dist
|
- run: npm run build-dist
|
||||||
- name: Check if build left artifacts
|
- name: Check if build left artifacts
|
||||||
run: git diff --exit-code --ignore-space-at-eol
|
run: git diff --exit-code --ignore-space-at-eol
|
||||||
@@ -63,12 +63,17 @@ jobs:
|
|||||||
|
|
||||||
unit_tests_ubuntu:
|
unit_tests_ubuntu:
|
||||||
name: 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:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.2
|
- uses: actions/checkout@v6.0.2
|
||||||
- uses: actions/setup-node@v6.3.0
|
- uses: actions/setup-node@v6.3.0
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '24'
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm test
|
- run: npm test
|
||||||
env:
|
env:
|
||||||
@@ -84,12 +89,17 @@ jobs:
|
|||||||
|
|
||||||
unit_tests_windows:
|
unit_tests_windows:
|
||||||
name: Unit tests (Windows)
|
name: Unit tests (Windows)
|
||||||
runs-on: windows-latest
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- windows-11-arm # ARM64
|
||||||
|
- windows-latest # x86_64
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.2
|
- uses: actions/checkout@v6.0.2
|
||||||
- uses: actions/setup-node@v6.3.0
|
- uses: actions/setup-node@v6.3.0
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '24'
|
||||||
- run: npm install --production
|
- run: npm install --production
|
||||||
- run: npm test
|
- run: npm test
|
||||||
env:
|
env:
|
||||||
@@ -105,12 +115,17 @@ jobs:
|
|||||||
|
|
||||||
unit_tests_macos:
|
unit_tests_macos:
|
||||||
name: 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:
|
steps:
|
||||||
- uses: actions/checkout@v6.0.2
|
- uses: actions/checkout@v6.0.2
|
||||||
- uses: actions/setup-node@v6.3.0
|
- uses: actions/setup-node@v6.3.0
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '24'
|
||||||
- run: npm ci
|
- run: npm ci
|
||||||
- run: npm test
|
- run: npm test
|
||||||
env:
|
env:
|
||||||
|
|||||||
@@ -45,6 +45,9 @@ jobs:
|
|||||||
version-type: 'strict'
|
version-type: 'strict'
|
||||||
- otp-version: '25'
|
- otp-version: '25'
|
||||||
os: 'macos-15'
|
os: 'macos-15'
|
||||||
|
- otp-version: '27'
|
||||||
|
elixir-version: '1.18'
|
||||||
|
os: 'macos-26'
|
||||||
- otp-version: '26'
|
- otp-version: '26'
|
||||||
elixir-version: '1.16'
|
elixir-version: '1.16'
|
||||||
rebar3-version: '3.25'
|
rebar3-version: '3.25'
|
||||||
|
|||||||
+81
-52
@@ -312,30 +312,6 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: @fastify/busboy. A copy of the source code may be downloaded from git+https://github.com/fastify/busboy.git. This software contains the following license and notice below:
|
|
||||||
|
|
||||||
Copyright Brian White. All rights reserved.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to
|
|
||||||
deal in the Software without restriction, including without limitation the
|
|
||||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
||||||
IN THE SOFTWARE.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
The following software may be included in this product: @felipecrs/decompress-tarxz, @xhmikosr/decompress-tar, decompress, decompress-tar, decompress-tarbz2, decompress-targz, shebang-command. A copy of the source code may be downloaded from git+https://github.com/felipecrs/decompress-tarxz.git (@felipecrs/decompress-tarxz), git+https://github.com/XhmikosR/decompress-tar.git (@xhmikosr/decompress-tar), https://github.com/kevva/decompress.git (decompress), https://github.com/kevva/decompress-tar.git (decompress-tar), https://github.com/kevva/decompress-tarbz2.git (decompress-tarbz2), https://github.com/kevva/decompress-targz.git (decompress-targz), https://github.com/kevva/shebang-command.git (shebang-command). This software contains the following license and notice below:
|
The following software may be included in this product: @felipecrs/decompress-tarxz, @xhmikosr/decompress-tar, decompress, decompress-tar, decompress-tarbz2, decompress-targz, shebang-command. A copy of the source code may be downloaded from git+https://github.com/felipecrs/decompress-tarxz.git (@felipecrs/decompress-tarxz), git+https://github.com/XhmikosR/decompress-tar.git (@xhmikosr/decompress-tar), https://github.com/kevva/decompress.git (decompress), https://github.com/kevva/decompress-tar.git (decompress-tar), https://github.com/kevva/decompress-tarbz2.git (decompress-tarbz2), https://github.com/kevva/decompress-targz.git (decompress-targz), https://github.com/kevva/shebang-command.git (shebang-command). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -350,6 +326,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: @ota-meshi/ast-token-store. A copy of the source code may be downloaded from git+https://github.com/ota-meshi/ast-token-store.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 Yosuke Ota
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: @tokenizer/inflate. A copy of the source code may be downloaded from https://github.com/Borewit/tokenizer-inflate.git. This software contains the following license and notice below:
|
The following software may be included in this product: @tokenizer/inflate. A copy of the source code may be downloaded from https://github.com/Borewit/tokenizer-inflate.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
Copyright (c) 2024, Borewit
|
Copyright (c) 2024, Borewit
|
||||||
@@ -1626,6 +1628,32 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: diff-sequences. A copy of the source code may be downloaded from https://github.com/jestjs/jest.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: dunder-proto, math-intrinsics. A copy of the source code may be downloaded from git+https://github.com/es-shims/dunder-proto.git (dunder-proto), git+https://github.com/es-shims/math-intrinsics.git (math-intrinsics). This software contains the following license and notice below:
|
The following software may be included in this product: dunder-proto, math-intrinsics. A copy of the source code may be downloaded from git+https://github.com/es-shims/dunder-proto.git (dunder-proto), git+https://github.com/es-shims/math-intrinsics.git (math-intrinsics). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -1747,32 +1775,6 @@ SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: eslint-compat-utils. A copy of the source code may be downloaded from git+https://github.com/ota-meshi/eslint-compat-utils.git. This software contains the following license and notice below:
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2023 Yosuke Ota
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
The following software may be included in this product: eslint-plugin-yml, yaml-eslint-parser. A copy of the source code may be downloaded from git+https://github.com/ota-meshi/eslint-plugin-yml.git (eslint-plugin-yml), git+https://github.com/ota-meshi/yaml-eslint-parser.git (yaml-eslint-parser). This software contains the following license and notice below:
|
The following software may be included in this product: eslint-plugin-yml, yaml-eslint-parser. A copy of the source code may be downloaded from git+https://github.com/ota-meshi/eslint-plugin-yml.git (eslint-plugin-yml), git+https://github.com/ota-meshi/yaml-eslint-parser.git (yaml-eslint-parser). This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
@@ -3900,11 +3902,11 @@ IN THE SOFTWARE.
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: strtok3. A copy of the source code may be downloaded from https://github.com/Borewit/strtok3.git. This software contains the following license and notice below:
|
The following software may be included in this product: strtok3. A copy of the source code may be downloaded from git+https://github.com/Borewit/strtok3.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright © 2025 Borewit
|
Copyright © 2026 Borewit
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -4018,6 +4020,33 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
The following software may be included in this product: toml. A copy of the source code may be downloaded from git://github.com/BinaryMuse/toml-node.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
|
Copyright (c) 2012 Michelle Tilley
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
The following software may be included in this product: tslib. A copy of the source code may be downloaded from https://github.com/Microsoft/tslib.git. This software contains the following license and notice below:
|
The following software may be included in this product: tslib. A copy of the source code may be downloaded from https://github.com/Microsoft/tslib.git. This software contains the following license and notice below:
|
||||||
|
|
||||||
Copyright (c) Microsoft Corporation.
|
Copyright (c) Microsoft Corporation.
|
||||||
|
|||||||
@@ -88,10 +88,16 @@ and Erlang/OTP.
|
|||||||
| `macOS-13` | 25.0 - 28 | x86_64, arm64 | ✅
|
| `macOS-13` | 25.0 - 28 | x86_64, arm64 | ✅
|
||||||
| `macOS-14` | 25.0 - 28 | x86_64, arm64 | ✅
|
| `macOS-14` | 25.0 - 28 | x86_64, arm64 | ✅
|
||||||
| `macOS-15` | 25.0 - 28 | x86_64, arm64 | ✅
|
| `macOS-15` | 25.0 - 28 | x86_64, arm64 | ✅
|
||||||
|
| `macOS-26` | 25.0 - 28 | x86_64, arm64 | ✅
|
||||||
|
|
||||||
**Note** \*: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3,
|
**Note** \*: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3,
|
||||||
22.0, etc.
|
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
|
||||||
|
|
||||||
Self-hosted runners need to set env. variable `ImageOS` to one of the following, since the action
|
Self-hosted runners need to set env. variable `ImageOS` to one of the following, since the action
|
||||||
@@ -107,6 +113,7 @@ uses that to download assets:
|
|||||||
| `macos13` | `macOS-13`
|
| `macos13` | `macOS-13`
|
||||||
| `macos14` | `macOS-14`
|
| `macos14` | `macOS-14`
|
||||||
| `macos15` | `macOS-15`
|
| `macos15` | `macOS-15`
|
||||||
|
| `macos26` | `macOS-26`
|
||||||
|
|
||||||
as per the following example:
|
as per the following example:
|
||||||
|
|
||||||
@@ -290,6 +297,34 @@ jobs:
|
|||||||
- run: rebar3 ct
|
- 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
|
### Erlang/OTP + `rebar3`, on Windows
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|||||||
+1
-1
@@ -98,5 +98,5 @@ outputs:
|
|||||||
description: The commit unique id of the execution action version
|
description: The commit unique id of the execution action version
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: node20
|
using: node24
|
||||||
main: dist/index.js
|
main: dist/index.js
|
||||||
|
|||||||
Vendored
+66
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Vendored
+1314
-4100
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Generated
+40
-47
@@ -10,15 +10,15 @@
|
|||||||
"@actions/core": "3.0.0",
|
"@actions/core": "3.0.0",
|
||||||
"@actions/exec": "3.0.0",
|
"@actions/exec": "3.0.0",
|
||||||
"@actions/tool-cache": "4.0.0",
|
"@actions/tool-cache": "4.0.0",
|
||||||
"csv-parse": "6.1.0",
|
"csv-parse": "6.2.1",
|
||||||
"lodash": "4.17.23",
|
"lodash": "4.17.23",
|
||||||
"semver": "7.7.4",
|
"semver": "7.7.4",
|
||||||
"toml": "3.0.0"
|
"smol-toml": "1.6.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "10.0.1",
|
"@eslint/js": "10.0.1",
|
||||||
"@vercel/ncc": "0.38.4",
|
"@vercel/ncc": "0.38.4",
|
||||||
"eslint": "10.0.3",
|
"eslint": "10.1.0",
|
||||||
"eslint-plugin-yml": "3.3.1",
|
"eslint-plugin-yml": "3.3.1",
|
||||||
"globals": "17.4.0",
|
"globals": "17.4.0",
|
||||||
"markdownlint-cli": "0.48.0",
|
"markdownlint-cli": "0.48.0",
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
"yarn": "1.22.22"
|
"yarn": "1.22.22"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=24"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/core": {
|
"node_modules/@actions/core": {
|
||||||
@@ -147,13 +147,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/config-helpers": {
|
"node_modules/@eslint/config-helpers": {
|
||||||
"version": "0.5.2",
|
"version": "0.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.3.tgz",
|
||||||
"integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
|
"integrity": "sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint/core": "^1.1.0"
|
"@eslint/core": "^1.1.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^20.19.0 || ^22.13.0 || >=24"
|
"node": "^20.19.0 || ^22.13.0 || >=24"
|
||||||
@@ -651,9 +651,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "5.0.4",
|
"version": "5.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
|
||||||
"integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
|
"integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -839,9 +839,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/csv-parse": {
|
"node_modules/csv-parse": {
|
||||||
"version": "6.1.0",
|
"version": "6.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.2.1.tgz",
|
||||||
"integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==",
|
"integrity": "sha512-LRLMV+UCyfMokp8Wb411duBf1gaBKJfOfBWU9eHMJ+b+cJYZsNu3AFmjJf3+yPGd59Exz1TsMjaSFyxnYB9+IQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/debug": {
|
"node_modules/debug": {
|
||||||
@@ -1272,16 +1272,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "10.0.3",
|
"version": "10.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.1.0.tgz",
|
||||||
"integrity": "sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ==",
|
"integrity": "sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.8.0",
|
"@eslint-community/eslint-utils": "^4.8.0",
|
||||||
"@eslint-community/regexpp": "^4.12.2",
|
"@eslint-community/regexpp": "^4.12.2",
|
||||||
"@eslint/config-array": "^0.23.3",
|
"@eslint/config-array": "^0.23.3",
|
||||||
"@eslint/config-helpers": "^0.5.2",
|
"@eslint/config-helpers": "^0.5.3",
|
||||||
"@eslint/core": "^1.1.1",
|
"@eslint/core": "^1.1.1",
|
||||||
"@eslint/plugin-kit": "^0.6.1",
|
"@eslint/plugin-kit": "^0.6.1",
|
||||||
"@humanfs/node": "^0.16.6",
|
"@humanfs/node": "^0.16.6",
|
||||||
@@ -1294,7 +1294,7 @@
|
|||||||
"escape-string-regexp": "^4.0.0",
|
"escape-string-regexp": "^4.0.0",
|
||||||
"eslint-scope": "^9.1.2",
|
"eslint-scope": "^9.1.2",
|
||||||
"eslint-visitor-keys": "^5.0.1",
|
"eslint-visitor-keys": "^5.0.1",
|
||||||
"espree": "^11.1.1",
|
"espree": "^11.2.0",
|
||||||
"esquery": "^1.7.0",
|
"esquery": "^1.7.0",
|
||||||
"esutils": "^2.0.2",
|
"esutils": "^2.0.2",
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
@@ -1399,9 +1399,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/espree": {
|
"node_modules/espree": {
|
||||||
"version": "11.1.1",
|
"version": "11.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
|
||||||
"integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==",
|
"integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1599,9 +1599,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/flatted": {
|
"node_modules/flatted": {
|
||||||
"version": "3.3.4",
|
"version": "3.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
|
||||||
"integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==",
|
"integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
@@ -3008,9 +3008,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
|
||||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
"integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -3312,10 +3312,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/smol-toml": {
|
"node_modules/smol-toml": {
|
||||||
"version": "1.6.0",
|
"version": "1.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz",
|
||||||
"integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==",
|
"integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==",
|
||||||
"dev": true,
|
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 18"
|
"node": ">= 18"
|
||||||
@@ -3531,12 +3530,6 @@
|
|||||||
"url": "https://github.com/sponsors/Borewit"
|
"url": "https://github.com/sponsors/Borewit"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/toml": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "2.8.1",
|
"version": "2.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||||
@@ -3626,9 +3619,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici": {
|
"node_modules/undici": {
|
||||||
"version": "6.23.0",
|
"version": "6.24.0",
|
||||||
"resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz",
|
"resolved": "https://registry.npmjs.org/undici/-/undici-6.24.0.tgz",
|
||||||
"integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==",
|
"integrity": "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.17"
|
"node": ">=18.17"
|
||||||
@@ -3727,9 +3720,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yaml": {
|
"node_modules/yaml": {
|
||||||
"version": "2.8.2",
|
"version": "2.8.3",
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz",
|
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
|
||||||
"integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==",
|
"integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -3775,9 +3768,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yauzl": {
|
"node_modules/yauzl": {
|
||||||
"version": "3.2.0",
|
"version": "3.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.1.tgz",
|
||||||
"integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==",
|
"integrity": "sha512-k1isifdbpNSFEHFJ1ZY4YDewv0IH9FR61lDetaRMD3j2ae3bIXGV+7c+LHCqtQGofSd8PIyV4X6+dHMAnSr60A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
+4
-4
@@ -20,15 +20,15 @@
|
|||||||
"@actions/core": "3.0.0",
|
"@actions/core": "3.0.0",
|
||||||
"@actions/exec": "3.0.0",
|
"@actions/exec": "3.0.0",
|
||||||
"@actions/tool-cache": "4.0.0",
|
"@actions/tool-cache": "4.0.0",
|
||||||
"csv-parse": "6.1.0",
|
"csv-parse": "6.2.1",
|
||||||
"lodash": "4.17.23",
|
"lodash": "4.17.23",
|
||||||
"semver": "7.7.4",
|
"semver": "7.7.4",
|
||||||
"toml": "3.0.0"
|
"smol-toml": "1.6.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "10.0.1",
|
"@eslint/js": "10.0.1",
|
||||||
"@vercel/ncc": "0.38.4",
|
"@vercel/ncc": "0.38.4",
|
||||||
"eslint": "10.0.3",
|
"eslint": "10.1.0",
|
||||||
"eslint-plugin-yml": "3.3.1",
|
"eslint-plugin-yml": "3.3.1",
|
||||||
"globals": "17.4.0",
|
"globals": "17.4.0",
|
||||||
"markdownlint-cli": "0.48.0",
|
"markdownlint-cli": "0.48.0",
|
||||||
@@ -37,6 +37,6 @@
|
|||||||
"yarn": "1.22.22"
|
"yarn": "1.22.22"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=20"
|
"node": ">=24"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+40
-13
@@ -8,7 +8,7 @@ import * as tc from '@actions/tool-cache'
|
|||||||
import * as semver from 'semver'
|
import * as semver from 'semver'
|
||||||
import * as csv from 'csv-parse/sync'
|
import * as csv from 'csv-parse/sync'
|
||||||
import _ from 'lodash'
|
import _ from 'lodash'
|
||||||
import toml from 'toml'
|
import toml from 'smol-toml'
|
||||||
|
|
||||||
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
@@ -58,7 +58,7 @@ async function main() {
|
|||||||
await maybeInstallRebar3(rebar3Spec)
|
await maybeInstallRebar3(rebar3Spec)
|
||||||
|
|
||||||
// undefined is replaced by a function, post- main branch merge
|
// undefined is replaced by a function, post- main branch merge
|
||||||
const setupBeamVersion = '98c13a9'
|
const setupBeamVersion = '190c3a5'
|
||||||
core.setOutput('setup-beam-version', setupBeamVersion)
|
core.setOutput('setup-beam-version', setupBeamVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,6 +80,7 @@ async function installOTP(otpSpec) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
core.setOutput('otp-version', otpVersion)
|
core.setOutput('otp-version', otpVersion)
|
||||||
|
maybeEnableProblemMatchers('erlang')
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
return otpVersion
|
return otpVersion
|
||||||
@@ -101,7 +102,7 @@ async function maybeInstallElixir(elixirSpec) {
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
core.setOutput('elixir-version', elixirVersion)
|
core.setOutput('elixir-version', elixirVersion)
|
||||||
maybeEnableElixirProblemMatchers()
|
maybeEnableProblemMatchers('elixir')
|
||||||
core.endGroup()
|
core.endGroup()
|
||||||
|
|
||||||
installed = true
|
installed = true
|
||||||
@@ -110,14 +111,18 @@ async function maybeInstallElixir(elixirSpec) {
|
|||||||
return installed
|
return installed
|
||||||
}
|
}
|
||||||
|
|
||||||
function maybeEnableElixirProblemMatchers() {
|
function problemMatchersEnabled() {
|
||||||
const disableProblemMatchers = getInput('disable_problem_matchers', false)
|
return getInput('disable_problem_matchers', false) === 'false'
|
||||||
if (disableProblemMatchers === 'false') {
|
}
|
||||||
// path.join helps ncc figure this out
|
|
||||||
const elixirMatchers = path.join(
|
// path.join with static strings helps ncc resolve and bundle the JSON files
|
||||||
`${__dirname}/../matchers/elixir-matchers.json`,
|
function maybeEnableProblemMatchers(language) {
|
||||||
)
|
if (problemMatchersEnabled()) {
|
||||||
core.info(`##[add-matcher]${elixirMatchers}`)
|
const matcherFiles = {
|
||||||
|
erlang: path.join(`${__dirname}/../matchers/erlang-matchers.json`),
|
||||||
|
elixir: path.join(`${__dirname}/../matchers/elixir-matchers.json`),
|
||||||
|
}
|
||||||
|
core.info(`##[add-matcher]${matcherFiles[language]}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -665,6 +670,7 @@ function getRunnerOSVersion() {
|
|||||||
macos13: 'macOS-13',
|
macos13: 'macOS-13',
|
||||||
macos14: 'macOS-14',
|
macos14: 'macOS-14',
|
||||||
macos15: 'macOS-15',
|
macos15: 'macOS-15',
|
||||||
|
macos26: 'macOS-26',
|
||||||
}
|
}
|
||||||
const deprecatedImageOSToContainer = {
|
const deprecatedImageOSToContainer = {
|
||||||
ubuntu18: 'ubuntu-18.04',
|
ubuntu18: 'ubuntu-18.04',
|
||||||
@@ -1050,12 +1056,14 @@ async function install(toolName, opts) {
|
|||||||
tool: 'Gleam',
|
tool: 'Gleam',
|
||||||
linux: {
|
linux: {
|
||||||
downloadToolURL: () => {
|
downloadToolURL: () => {
|
||||||
|
const arch = getRunnerOSArchitecture()
|
||||||
let gz
|
let gz
|
||||||
if (
|
if (
|
||||||
versionSpec === 'nightly' ||
|
versionSpec === 'nightly' ||
|
||||||
semver.gt(versionSpec, 'v0.22.1')
|
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 {
|
} else {
|
||||||
gz = `gleam-${versionSpec}-linux-amd64.tar.gz`
|
gz = `gleam-${versionSpec}-linux-amd64.tar.gz`
|
||||||
}
|
}
|
||||||
@@ -1119,7 +1127,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
|
break
|
||||||
case 'rebar3':
|
case 'rebar3':
|
||||||
installOpts = {
|
installOpts = {
|
||||||
|
|||||||
+132
-29
@@ -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'
|
process.env.NODE_ENV = 'test'
|
||||||
|
|
||||||
simulateInput('otp-version', '25.1.2')
|
simulateInput('otp-version', '25.1.2')
|
||||||
@@ -9,16 +21,7 @@ simulateInput('install-hex', 'true')
|
|||||||
simulateInput('github-token', process.env.GITHUB_TOKEN)
|
simulateInput('github-token', process.env.GITHUB_TOKEN)
|
||||||
simulateInput('hexpm-mirrors', 'https://builds.hex.pm', { multiline: true })
|
simulateInput('hexpm-mirrors', 'https://builds.hex.pm', { multiline: true })
|
||||||
|
|
||||||
import assert from 'node:assert'
|
const { default: setupBeam } = await import('../src/setup-beam.js')
|
||||||
import http from 'node:http'
|
|
||||||
import fs from 'node:fs'
|
|
||||||
import os from 'node:os'
|
|
||||||
import path from 'node:path'
|
|
||||||
import { describe, it } from 'node:test'
|
|
||||||
import * as csv from 'csv-parse/sync'
|
|
||||||
import setupBeam from '../src/setup-beam.js'
|
|
||||||
import elixirMatchers from '../matchers/elixir-matchers.json' with { type: 'json' }
|
|
||||||
const { problemMatcher } = elixirMatchers
|
|
||||||
|
|
||||||
const matrix = {
|
const matrix = {
|
||||||
otp: {
|
otp: {
|
||||||
@@ -174,11 +177,8 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
'https://repo.hex.pm, https://cdn.jsdelivr.net/hex',
|
'https://repo.hex.pm, https://cdn.jsdelivr.net/hex',
|
||||||
{ multiline: true },
|
{ multiline: true },
|
||||||
)
|
)
|
||||||
const previousRunnerArch = process.env.RUNNER_ARCH
|
|
||||||
|
|
||||||
if (process.platform === 'linux') {
|
if (process.platform === 'linux') {
|
||||||
process.env.RUNNER_ARCH = 'X64'
|
|
||||||
|
|
||||||
it('is Ok for known linux version', async () => {
|
it('is Ok for known linux version', async () => {
|
||||||
before = simulateInput('version-type', 'strict')
|
before = simulateInput('version-type', 'strict')
|
||||||
spec = '27.0'
|
spec = '27.0'
|
||||||
@@ -196,21 +196,21 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', before)
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
spec = '19.3.x'
|
spec = '20.3.x'
|
||||||
osVersion = 'ubuntu-16.04'
|
osVersion = 'ubuntu-20.04'
|
||||||
expected = 'OTP-19.3.6.13'
|
expected = 'OTP-20.3.8.26'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '^19.3.6'
|
spec = '^20.3.8'
|
||||||
osVersion = 'ubuntu-16.04'
|
osVersion = 'ubuntu-20.04'
|
||||||
expected = 'OTP-19.3.6.13'
|
expected = 'OTP-20.3.8.26'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
spec = '^19.3'
|
spec = '^20.3'
|
||||||
osVersion = 'ubuntu-18.04'
|
osVersion = 'ubuntu-20.04'
|
||||||
expected = 'OTP-19.3.6.13'
|
expected = 'OTP-20.3.8.26'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
@@ -306,6 +306,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
if (process.platform === 'linux') {
|
if (process.platform === 'linux') {
|
||||||
it('is main-... only if strict/maint-... is used as input', async () => {
|
it('is main-... only if strict/maint-... is used as input', async () => {
|
||||||
const arm64Options = setupBeam.githubARMRunnerArchs()
|
const arm64Options = setupBeam.githubARMRunnerArchs()
|
||||||
|
const previousRunnerArch = process.env.RUNNER_ARCH
|
||||||
process.env.RUNNER_ARCH =
|
process.env.RUNNER_ARCH =
|
||||||
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
||||||
|
|
||||||
@@ -341,6 +342,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
|
|
||||||
it('is Ok for known linux ARM64 version', async () => {
|
it('is Ok for known linux ARM64 version', async () => {
|
||||||
const arm64Options = setupBeam.githubARMRunnerArchs()
|
const arm64Options = setupBeam.githubARMRunnerArchs()
|
||||||
|
const previousRunnerArch = process.env.RUNNER_ARCH
|
||||||
process.env.RUNNER_ARCH =
|
process.env.RUNNER_ARCH =
|
||||||
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
||||||
|
|
||||||
@@ -401,10 +403,13 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
expected = 'master'
|
expected = 'master'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
|
process.env.RUNNER_ARCH = previousRunnerArch
|
||||||
})
|
})
|
||||||
|
|
||||||
it('is Ok for known linux AMD64 version', async () => {
|
it('is Ok for known linux AMD64 version', async () => {
|
||||||
const amd64Options = setupBeam.githubAMDRunnerArchs()
|
const amd64Options = setupBeam.githubAMDRunnerArchs()
|
||||||
|
const previousRunnerArch = process.env.RUNNER_ARCH
|
||||||
process.env.RUNNER_ARCH =
|
process.env.RUNNER_ARCH =
|
||||||
amd64Options[Math.floor(Math.random() * amd64Options.length)]
|
amd64Options[Math.floor(Math.random() * amd64Options.length)]
|
||||||
|
|
||||||
@@ -483,12 +488,15 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
expected = 'master'
|
expected = 'master'
|
||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
|
|
||||||
|
process.env.RUNNER_ARCH = previousRunnerArch
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.platform === 'darwin') {
|
if (process.platform === 'darwin') {
|
||||||
it('is main-... only if strict/maint-... is used as input', async () => {
|
it('is main-... only if strict/maint-... is used as input', async () => {
|
||||||
const arm64Options = setupBeam.githubARMRunnerArchs()
|
const arm64Options = setupBeam.githubARMRunnerArchs()
|
||||||
|
const previousRunnerArch = process.env.RUNNER_ARCH
|
||||||
process.env.RUNNER_ARCH =
|
process.env.RUNNER_ARCH =
|
||||||
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
||||||
|
|
||||||
@@ -518,6 +526,7 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
|
|
||||||
it('is Ok for known macos ARM64 version', async () => {
|
it('is Ok for known macos ARM64 version', async () => {
|
||||||
const arm64Options = setupBeam.githubARMRunnerArchs()
|
const arm64Options = setupBeam.githubARMRunnerArchs()
|
||||||
|
const previousRunnerArch = process.env.RUNNER_ARCH
|
||||||
process.env.RUNNER_ARCH =
|
process.env.RUNNER_ARCH =
|
||||||
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
arm64Options[Math.floor(Math.random() * arm64Options.length)]
|
||||||
|
|
||||||
@@ -528,10 +537,13 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', before)
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
|
process.env.RUNNER_ARCH = previousRunnerArch
|
||||||
})
|
})
|
||||||
|
|
||||||
it('is Ok for known macos AMD64 version', async () => {
|
it('is Ok for known macos AMD64 version', async () => {
|
||||||
const amd64Options = setupBeam.githubARMRunnerArchs()
|
const amd64Options = setupBeam.githubARMRunnerArchs()
|
||||||
|
const previousRunnerArch = process.env.RUNNER_ARCH
|
||||||
process.env.RUNNER_ARCH =
|
process.env.RUNNER_ARCH =
|
||||||
amd64Options[Math.floor(Math.random() * amd64Options.length)]
|
amd64Options[Math.floor(Math.random() * amd64Options.length)]
|
||||||
|
|
||||||
@@ -542,11 +554,12 @@ describe('.getOTPVersion(_) - Erlang', () => {
|
|||||||
got = await setupBeam.getOTPVersion(spec, osVersion)
|
got = await setupBeam.getOTPVersion(spec, osVersion)
|
||||||
assert.deepStrictEqual(got, expected)
|
assert.deepStrictEqual(got, expected)
|
||||||
simulateInput('version-type', before)
|
simulateInput('version-type', before)
|
||||||
|
|
||||||
|
process.env.RUNNER_ARCH = previousRunnerArch
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
simulateInput('hexpm-mirrors', hexMirrors, { multiline: true })
|
simulateInput('hexpm-mirrors', hexMirrors, { multiline: true })
|
||||||
process.env.RUNNER_ARCH = previousRunnerArch
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('OTP arch-specific install', () => {
|
describe('OTP arch-specific install', () => {
|
||||||
@@ -569,6 +582,7 @@ describe('OTP arch-specific install', () => {
|
|||||||
`Fetching OTP Version with invalid Github runner architecture is supposed to fail`,
|
`Fetching OTP Version with invalid Github runner architecture is supposed to fail`,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
process.env.RUNNER_ARCH = previousRunnerArch
|
process.env.RUNNER_ARCH = previousRunnerArch
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@@ -579,11 +593,8 @@ describe('.getOTPVersion(_) - Elixir', () => {
|
|||||||
let spec
|
let spec
|
||||||
let otpVersion
|
let otpVersion
|
||||||
let before
|
let before
|
||||||
const previousRunnerArch = process.env.RUNNER_ARCH
|
|
||||||
|
|
||||||
if (process.platform === 'linux') {
|
if (process.platform === 'linux') {
|
||||||
process.env.RUNNER_ARCH = 'X64'
|
|
||||||
|
|
||||||
it('returns the expected value', async () => {
|
it('returns the expected value', async () => {
|
||||||
spec = '1.18.x'
|
spec = '1.18.x'
|
||||||
otpVersion = 'OTP-27'
|
otpVersion = 'OTP-27'
|
||||||
@@ -641,8 +652,6 @@ describe('.getOTPVersion(_) - Elixir', () => {
|
|||||||
simulateInput('version-type', before)
|
simulateInput('version-type', before)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
process.env.RUNNER_ARCH = previousRunnerArch
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('.getOTPVersion(_) - Gleam', () => {
|
describe('.getOTPVersion(_) - Gleam', () => {
|
||||||
@@ -1031,7 +1040,9 @@ describe('mise.toml file', () => {
|
|||||||
"erlang" = "${erlang}"
|
"erlang" = "${erlang}"
|
||||||
elixir = { version = "${elixir}", postinstall="mix deps.get" } # comment, with space and ref:
|
elixir = { version = "${elixir}", postinstall="mix deps.get" } # comment, with space and ref:
|
||||||
"not-gleam" = 0.23 # not picked up
|
"not-gleam" = 0.23 # not picked up
|
||||||
"gleam" = "${gleam}" \n`
|
"gleam" = "${gleam}"
|
||||||
|
[env]
|
||||||
|
_.file = ".env"\n`
|
||||||
const filename = 'test/mise.toml'
|
const filename = 'test/mise.toml'
|
||||||
if (process.platform === 'win32') {
|
if (process.platform === 'win32') {
|
||||||
// Force \r\n to test in Windows
|
// Force \r\n to test in Windows
|
||||||
@@ -1158,6 +1169,98 @@ describe("Elixir Mix matcher's", () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("Erlang matcher's", () => {
|
||||||
|
it('erlc errors are properly matched', () => {
|
||||||
|
const [matcher] = erlangProblemMatcher.find(
|
||||||
|
({ owner }) => owner === 'erlc-error',
|
||||||
|
).pattern
|
||||||
|
|
||||||
|
const output = 'src/mymod.erl:42:5: head mismatch'
|
||||||
|
const match = output.match(matcher.regexp)
|
||||||
|
assert.equal(match[1], 'src/mymod.erl')
|
||||||
|
assert.equal(match[2], '42')
|
||||||
|
assert.equal(match[3], '5')
|
||||||
|
assert.equal(match[4], 'head mismatch')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('erlc errors do not match warnings', () => {
|
||||||
|
const [matcher] = erlangProblemMatcher.find(
|
||||||
|
({ owner }) => owner === 'erlc-error',
|
||||||
|
).pattern
|
||||||
|
|
||||||
|
const output = 'src/mymod.erl:42:5: Warning: variable X is unused'
|
||||||
|
const match = output.match(matcher.regexp)
|
||||||
|
assert.equal(match, null)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('erlc warnings are properly matched', () => {
|
||||||
|
const [matcher] = erlangProblemMatcher.find(
|
||||||
|
({ owner }) => owner === 'erlc-warning',
|
||||||
|
).pattern
|
||||||
|
|
||||||
|
const output = 'src/mymod.erl:10:3: Warning: variable X is unused'
|
||||||
|
const match = output.match(matcher.regexp)
|
||||||
|
assert.equal(match[1], 'src/mymod.erl')
|
||||||
|
assert.equal(match[2], '10')
|
||||||
|
assert.equal(match[3], '3')
|
||||||
|
assert.equal(match[4], 'variable X is unused')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('dialyzer warnings are matched via erlc patterns', () => {
|
||||||
|
const [matcher] = erlangProblemMatcher.find(
|
||||||
|
({ owner }) => owner === 'erlc-warning',
|
||||||
|
).pattern
|
||||||
|
|
||||||
|
const output =
|
||||||
|
'src/mymod.erl:25:1: warning: Function foo/0 has no local return'
|
||||||
|
const match = output.match(matcher.regexp)
|
||||||
|
assert.equal(match[1], 'src/mymod.erl')
|
||||||
|
assert.equal(match[2], '25')
|
||||||
|
assert.equal(match[3], '1')
|
||||||
|
assert.equal(match[4], 'Function foo/0 has no local return')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('CT failures are properly matched', () => {
|
||||||
|
const [filePattern, reasonPattern] = erlangProblemMatcher.find(
|
||||||
|
({ owner }) => owner === 'ct-failure',
|
||||||
|
).pattern
|
||||||
|
|
||||||
|
const firstOutput = 'test/mymod_SUITE.erl failed on line 55'
|
||||||
|
const secondOutput = 'Reason: {badmatch,{error,timeout}}'
|
||||||
|
|
||||||
|
const fileMatch = firstOutput.match(filePattern.regexp)
|
||||||
|
assert.equal(fileMatch[1], 'test/mymod_SUITE.erl')
|
||||||
|
assert.equal(fileMatch[2], '55')
|
||||||
|
|
||||||
|
const reasonMatch = secondOutput.match(reasonPattern.regexp)
|
||||||
|
assert.equal(reasonMatch[1], '{badmatch,{error,timeout}}')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('EUnit failures are properly matched', () => {
|
||||||
|
const [headerPattern, funcPattern, callPattern, errorPattern] =
|
||||||
|
erlangProblemMatcher.find(
|
||||||
|
({ owner }) => owner === 'eunit-failure',
|
||||||
|
).pattern
|
||||||
|
|
||||||
|
const header = 'mymod_test: hello_test....*failed*'
|
||||||
|
const func =
|
||||||
|
'in function mymod_test:hello_test/0 (test/mymod_test.erl, line 12)'
|
||||||
|
const call = 'in call from mymod_test:hello_test/0'
|
||||||
|
const error = '**error:{badmatch,false}'
|
||||||
|
|
||||||
|
assert.ok(header.match(headerPattern.regexp))
|
||||||
|
|
||||||
|
const funcMatch = func.match(funcPattern.regexp)
|
||||||
|
assert.equal(funcMatch[1], 'test/mymod_test.erl')
|
||||||
|
assert.equal(funcMatch[2], '12')
|
||||||
|
|
||||||
|
assert.ok(call.match(callPattern.regexp))
|
||||||
|
|
||||||
|
const errorMatch = error.match(errorPattern.regexp)
|
||||||
|
assert.equal(errorMatch[1], '{badmatch,false}')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
function unsimulateInput(key) {
|
function unsimulateInput(key) {
|
||||||
return simulateInput(key, '')
|
return simulateInput(key, '')
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user