neiam
/action-setup-beam
action-setup-beam
public · Issues · Pulls · Labels · Forks · Compare · Actions queued
Log in to mark this repository.
Improve on "Add Windows to the mix" (#52)
d8a37f5 · Paulo F. Oliveira · 2021-07-08 14:35
Message
{commit_body(@commit)}
Files changed
renamed
.github/workflows/ci.yml → .github/workflows/action.yml
+12
−2
| 1 | 1 | --- |
| 2 | −name: ci | |
| 2 | +name: action | |
| 3 | 3 | |
| 4 | 4 | on: |
| 5 | 5 | push: |
| 11 | 11 | |
| 12 | 12 | jobs: |
| 13 | 13 | check_integrity: |
| 14 | − name: Make sure expected pre-release actions are performed | |
| 14 | + name: Expected local npm actions | |
| 15 | 15 | runs-on: ubuntu-latest |
| 16 | 16 | steps: |
| 17 | 17 | - uses: actions/checkout@v2 |
| 30 | 30 | - run: npm run licenses |
| 31 | 31 | - name: Check if build left artifacts |
| 32 | 32 | run: git diff --exit-code |
| 33 | + | |
| 34 | + unit_test: | |
| 35 | + name: Unit tests | |
| 36 | + runs-on: ubuntu-latest | |
| 37 | + steps: | |
| 38 | + - uses: actions/checkout@v2 | |
| 39 | + - uses: actions/setup-node@v1 | |
| 40 | + with: {node-version: '12'} | |
| 41 | + - run: npm ci | |
| 42 | + - run: npm test |
renamed
.github/workflows/test.yml → .github/workflows/ubuntu.yml
+5
−57
| 1 | 1 | --- |
| 2 | −name: test | |
| 2 | +name: ubuntu | |
| 3 | 3 | |
| 4 | 4 | on: |
| 5 | 5 | push: |
| 10 | 10 | - main |
| 11 | 11 | |
| 12 | 12 | jobs: |
| 13 | − unit_test: | |
| 14 | − name: Pre-release unit tests | |
| 15 | − runs-on: ubuntu-latest | |
| 16 | − steps: | |
| 17 | − - uses: actions/checkout@v2 | |
| 18 | − - uses: actions/setup-node@v1 | |
| 19 | − with: {node-version: '12'} | |
| 20 | − - run: npm ci | |
| 21 | − - run: npm test | |
| 22 | − | |
| 23 | − integration_test_ubuntu: | |
| 13 | + integration_test: | |
| 24 | 14 | name: > |
| 25 | − Pre-release integration tests | |
| 26 | − (Ubuntu ${{matrix.combo.os}}, | |
| 27 | − Erlang/OTP ${{matrix.combo.otp-version}}, | |
| 28 | − Elixir ${{matrix.combo.elixir-version}}, | |
| 29 | − rebar3 ${{matrix.combo.rebar3-version}}) | |
| 15 | + OTP ${{matrix.combo.otp-version}}, | |
| 16 | + Elixir ${{matrix.combo.elixir-version}}, | |
| 17 | + rebar3 ${{matrix.combo.rebar3-version}} | |
| 30 | 18 | runs-on: ${{matrix.combo.os}} |
| 31 | 19 | strategy: |
| 32 | 20 | fail-fast: false |
| 138 | 126 | cd test-projects/rebar3 |
| 139 | 127 | rebar3 ct |
| 140 | 128 | if: ${{matrix.combo.rebar3-version}} |
| 141 | − | |
| 142 | − integration_test_windows: | |
| 143 | − name: > | |
| 144 | − Pre-release integration tests | |
| 145 | − (Windows ${{matrix.combo.os}}, | |
| 146 | − Erlang/OTP ${{matrix.combo.otp-version}}, | |
| 147 | − rebar3 ${{matrix.combo.rebar3-version}}) | |
| 148 | − runs-on: ${{matrix.combo.os}} | |
| 149 | − strategy: | |
| 150 | − fail-fast: false | |
| 151 | − matrix: | |
| 152 | − combo: | |
| 153 | − - otp-version: '24.0.2' | |
| 154 | − rebar3-version: '3.16' | |
| 155 | − os: 'windows-2019' | |
| 156 | − - otp-version: '23.0' | |
| 157 | − rebar3-version: '3.15' | |
| 158 | − os: 'windows-2019' | |
| 159 | − - otp-version: '24.0.2' | |
| 160 | − rebar3-version: '3.16' | |
| 161 | − os: 'windows-2016' | |
| 162 | − - otp-version: '23.0' | |
| 163 | − rebar3-version: '3.15' | |
| 164 | − os: 'windows-2016' | |
| 165 | − steps: | |
| 166 | − - uses: actions/checkout@v2 | |
| 167 | − - name: Use erlef/setup-beam | |
| 168 | − id: setup-beam | |
| 169 | − uses: ./ | |
| 170 | − with: | |
| 171 | − otp-version: ${{matrix.combo.otp-version}} | |
| 172 | − rebar3-version: ${{matrix.combo.rebar3-version}} | |
| 173 | − - name: Erlang/OTP version (action) | |
| 174 | − run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}" | |
| 175 | − - name: rebar3 version (action) | |
| 176 | − run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}" | |
| 177 | − - name: Run rebar3 project tests | |
| 178 | − run: | | |
| 179 | − cd test-projects/rebar3 | |
| 180 | − rebar3 ct |
added
.github/workflows/windows.yml
+87
−0
| 1 | +--- | |
| 2 | +name: windows | |
| 3 | + | |
| 4 | +on: | |
| 5 | + push: | |
| 6 | + branches: | |
| 7 | + - main | |
| 8 | + pull_request: | |
| 9 | + branches: | |
| 10 | + - main | |
| 11 | + | |
| 12 | +jobs: | |
| 13 | + integration_test: | |
| 14 | + name: > | |
| 15 | + OTP ${{matrix.combo.otp-version}}, | |
| 16 | + Elixir ${{matrix.combo.elixir-version}}, | |
| 17 | + rebar3 ${{matrix.combo.rebar3-version}} | |
| 18 | + runs-on: ${{matrix.combo.os}} | |
| 19 | + strategy: | |
| 20 | + fail-fast: false | |
| 21 | + matrix: | |
| 22 | + combo: | |
| 23 | + - otp-version: '24.0.2' | |
| 24 | + rebar3-version: '3.16' | |
| 25 | + os: 'windows-2019' | |
| 26 | + - otp-version: '23.0' | |
| 27 | + rebar3-version: '3.15' | |
| 28 | + os: 'windows-2019' | |
| 29 | + - otp-version: '24.0.2' | |
| 30 | + rebar3-version: '3.16' | |
| 31 | + os: 'windows-2016' | |
| 32 | + - otp-version: '23.0' | |
| 33 | + rebar3-version: '3.15' | |
| 34 | + os: 'windows-2016' | |
| 35 | + - otp-version: '22.3' | |
| 36 | + rebar3-version: '3.15' | |
| 37 | + os: 'windows-2016' | |
| 38 | + - otp-version: '22.0' | |
| 39 | + rebar3-version: '3.15' | |
| 40 | + os: 'windows-2016' | |
| 41 | + - otp-version: '21.3' | |
| 42 | + rebar3-version: '3.15' | |
| 43 | + os: 'windows-2016' | |
| 44 | + - otp-version: '21.0' | |
| 45 | + rebar3-version: '3.15' | |
| 46 | + os: 'windows-2016' | |
| 47 | + - elixir-version: 'v1.10' | |
| 48 | + otp-version: '23' | |
| 49 | + rebar3-version: '3.14' | |
| 50 | + os: 'windows-latest' | |
| 51 | + - elixir-version: 'v1.11' | |
| 52 | + otp-version: '24' | |
| 53 | + rebar3-version: '3.15' | |
| 54 | + os: 'windows-latest' | |
| 55 | + steps: | |
| 56 | + - uses: actions/checkout@v2 | |
| 57 | + - name: Use erlef/setup-beam | |
| 58 | + id: setup-beam | |
| 59 | + uses: ./ | |
| 60 | + with: | |
| 61 | + otp-version: ${{matrix.combo.otp-version}} | |
| 62 | + elixir-version: ${{matrix.combo.elixir-version}} | |
| 63 | + rebar3-version: ${{matrix.combo.rebar3-version}} | |
| 64 | + - name: Erlang/OTP version (action) | |
| 65 | + run: echo "Erlang/OTP ${{steps.setup-beam.outputs.otp-version}}" | |
| 66 | + - name: Elixir version (action) | |
| 67 | + run: echo "Elixir ${{steps.setup-beam.outputs.elixir-version}}" | |
| 68 | + if: ${{matrix.combo.elixir-version}} | |
| 69 | + - name: rebar3 version (action) | |
| 70 | + run: echo "rebar3 ${{steps.setup-beam.outputs.rebar3-version}}" | |
| 71 | + - name: mix version and help (CLI) | |
| 72 | + run: | | |
| 73 | + mix -v | |
| 74 | + mix help local.rebar | |
| 75 | + mix help local.hex | |
| 76 | + if: ${{matrix.combo.elixir-version}} | |
| 77 | + - name: Run Mix project tests | |
| 78 | + run: | | |
| 79 | + cd test-projects/mix | |
| 80 | + mix deps.get | |
| 81 | + mix test | |
| 82 | + if: ${{matrix.combo.elixir-version}} | |
| 83 | + - name: Run rebar3 project tests | |
| 84 | + run: | | |
| 85 | + cd test-projects/rebar3 | |
| 86 | + rebar3 ct | |
| 87 | + if: ${{matrix.combo.rebar3-version}} |
modified
README.md
+28
−23
| 1 | 1 | <!-- markdownlint-disable MD013 --> |
| 2 | −# setup-beam [![GitHub Actions Test][test-img]][test] [![GitHub Actions CI][ci-img]][ci] | |
| 2 | +# setup-beam [![GitHub Actions][action-img]][action] [![GitHub Actions][ubuntu-img]][ubuntu] [![GitHub Actions][windows-img]][windows] | |
| 3 | 3 | |
| 4 | −[test]: https://github.com/erlef/setup-beam | |
| 5 | −[test-img]: https://github.com/erlef/setup-beam/workflows/test/badge.svg | |
| 6 | −[ci]: https://github.com/erlef/setup-beam | |
| 7 | −[ci-img]: https://github.com/erlef/setup-beam/workflows/ci/badge.svg | |
| 4 | +[action]: https://github.com/erlef/setup-beam | |
| 5 | +[action-img]: https://github.com/erlef/setup-beam/workflows/action/badge.svg | |
| 6 | +[ubuntu]: https://github.com/erlef/setup-beam | |
| 7 | +[ubuntu-img]: https://github.com/erlef/setup-beam/workflows/ubuntu/badge.svg | |
| 8 | +[windows]: https://github.com/erlef/setup-beam | |
| 9 | +[windows-img]: https://github.com/erlef/setup-beam/workflows/windows/badge.svg | |
| 8 | 10 | |
| 9 | 11 | This action sets up an Erlang/OTP environment for use in a GitHub Actions |
| 10 | 12 | workflow by: |
| 14 | 16 | - optionally, installing `rebar3` |
| 15 | 17 | - optionally, installing `hex` |
| 16 | 18 | |
| 17 | −**Note** Currently, this action only supports Actions' `ubuntu-` runtimes. | |
| 19 | +**Note** Currently, this action only supports Actions' `ubuntu-` and `windows-` runtimes. | |
| 18 | 20 | |
| 19 | 21 | ## Usage |
| 20 | 22 |
| 23 | 25 | **Note**: The Erlang/OTP release version specification is [relatively |
| 24 | 26 | complex](http://erlang.org/doc/system_principles/versions.html#version-scheme). |
| 25 | 27 | For best results, we recommend specifying exact Erlang/OTP, Elixir versions, and |
| 26 | −`rebar3` versions. | |
| 28 | +`rebar3` versions, and setting option `version-type` to `strict`. | |
| 27 | 29 | However, values like `22.x`, or even `>22`, are also accepted, and we attempt to resolve them |
| 28 | −according to semantic versioning rules. | |
| 30 | +according to semantic versioning rules. This implicitly means `version-type` is `loose`, | |
| 31 | +which is also the default value for this option. | |
| 29 | 32 | |
| 30 | 33 | Additionally, it is recommended that one specifies Erlang/OTP, Elixir and `rebar3` versions |
| 31 | 34 | using YAML strings, as these examples do, so that numbers like `23.0` don't |
| 35 | 38 | specifier (`1.11.0-rc.0`). Pre-release versions are opt-in, so `1.11.x` will |
| 36 | 39 | not match a pre-release. |
| 37 | 40 | |
| 38 | −### Compatibility between Ubuntu and Erlang/OTP | |
| 41 | +### Compatibility between Operating System and Erlang/OTP | |
| 39 | 42 | |
| 40 | −This list presents the known working version combos between Ubuntu | |
| 43 | +This list presents the known working version combos between the target operating system | |
| 41 | 44 | and Erlang/OTP. |
| 42 | 45 | |
| 43 | −| Ubuntu | Erlang/OTP | Status | |
| 44 | −|- |- |- | |
| 45 | −| ubuntu-16.04 | 17 - 24 | ✅ | |
| 46 | −| ubuntu-18.04 | 17 - 24 | ✅ | |
| 47 | −| ubuntu-20.04 | 20 - 24 | ✅ | |
| 48 | −| windows-2016 | 23 - 24 | ✅ | |
| 49 | −| windows-2019 | 23 - 24 | ✅ | |
| 46 | +| Operating system | Erlang/OTP | Status | |
| 47 | +|- |- |- | |
| 48 | +| ubuntu-16.04 | 17 - 24 | ✅ | |
| 49 | +| ubuntu-18.04 | 17 - 24 | ✅ | |
| 50 | +| ubuntu-20.04 | 20 - 24 | ✅ | |
| 51 | +| windows-2016 | 21* - 24 | ✅ | |
| 52 | +| windows-2019 | 21* - 24 | ✅ | |
| 50 | 53 | |
| 51 | −### Basic example (Elixir) | |
| 54 | +**Note** *: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3, 22.0, etc. | |
| 55 | + | |
| 56 | +### Basic example (Erlang/OTP + Elixir, on Ubuntu) | |
| 52 | 57 | |
| 53 | 58 | ```yaml |
| 54 | 59 | # create this in .github/workflows/ci.yml |
| 67 | 72 | - run: mix test |
| 68 | 73 | ``` |
| 69 | 74 | |
| 70 | −### Basic example (`rebar3`) | |
| 75 | +### Basic example (Erlang/OTP + `rebar3`, on Ubuntu) | |
| 71 | 76 | |
| 72 | 77 | ```yaml |
| 73 | 78 | # create this in .github/workflows/ci.yml |
| 85 | 90 | - run: rebar3 ct |
| 86 | 91 | ``` |
| 87 | 92 | |
| 88 | −### Matrix example (Elixir) | |
| 93 | +### Matrix example (Erlang/OTP + Elixir, on Ubuntu) | |
| 89 | 94 | |
| 90 | 95 | ```yaml |
| 91 | 96 | # create this in .github/workflows/ci.yml |
| 109 | 114 | - run: mix test |
| 110 | 115 | ``` |
| 111 | 116 | |
| 112 | −### Matrix example (`rebar3`) | |
| 117 | +### Matrix example (Erlang/OTP + `rebar3`, on Ubuntu) | |
| 113 | 118 | |
| 114 | 119 | ```yaml |
| 115 | 120 | # create this in .github/workflows/ci.yml |
| 132 | 137 | - run: rebar3 ct |
| 133 | 138 | ``` |
| 134 | 139 | |
| 135 | −### Basic example (`rebar3` on Windows 2016) | |
| 140 | +### Basic example (Erlang/OTP + `rebar3`, on Windows) | |
| 136 | 141 | |
| 137 | 142 | ```yaml |
| 138 | 143 | # create this in .github/workflows/ci.yml |
| 145 | 150 | - uses: actions/checkout@v2 |
| 146 | 151 | - uses: erlef/setup-beam@v1 |
| 147 | 152 | with: |
| 148 | − otp-version: '24.0.2' | |
| 153 | + otp-version: '24' | |
| 149 | 154 | rebar3-version: '3.16.1' |
| 150 | 155 | - run: rebar3 ct |
| 151 | 156 | ``` |
modified
__tests__/setup-beam.test.js
+158
−11
| 16 | 16 | await testOTPVersions() |
| 17 | 17 | await testElixirVersions() |
| 18 | 18 | await testRebar3Versions() |
| 19 | + | |
| 20 | + await testGetVersionFromSpec() | |
| 19 | 21 | } |
| 20 | 22 | |
| 21 | 23 | async function testFailInstallOTP() { |
| 84 | 86 | if (process.platform === 'linux') { |
| 85 | 87 | spec = '19.3.x' |
| 86 | 88 | osVersion = 'ubuntu-16.04' |
| 87 | − expected = 'OTP-19.3.6' | |
| 89 | + expected = 'OTP-19.3.6.13' | |
| 88 | 90 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 89 | 91 | assert.deepStrictEqual(got, expected) |
| 90 | 92 | |
| 91 | 93 | spec = '^19.3.6' |
| 92 | 94 | osVersion = 'ubuntu-16.04' |
| 93 | − expected = 'OTP-19.3.6' | |
| 95 | + expected = 'OTP-19.3.6.13' | |
| 94 | 96 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 95 | 97 | assert.deepStrictEqual(got, expected) |
| 96 | 98 | |
| 97 | 99 | spec = '^19.3' |
| 98 | 100 | osVersion = 'ubuntu-18.04' |
| 99 | − expected = 'OTP-19.3.6' | |
| 101 | + expected = 'OTP-19.3.6.13' | |
| 100 | 102 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 101 | 103 | assert.deepStrictEqual(got, expected) |
| 102 | 104 | |
| 103 | 105 | spec = '20' |
| 104 | 106 | osVersion = 'ubuntu-20.04' |
| 105 | − expected = 'OTP-20.3.8' | |
| 107 | + expected = 'OTP-20.3.8.26' | |
| 106 | 108 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 107 | 109 | assert.deepStrictEqual(got, expected) |
| 108 | 110 | |
| 109 | 111 | spec = '20.x' |
| 110 | 112 | osVersion = 'ubuntu-20.04' |
| 111 | − expected = 'OTP-20.3.8' | |
| 113 | + expected = 'OTP-20.3.8.26' | |
| 112 | 114 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 113 | 115 | assert.deepStrictEqual(got, expected) |
| 114 | 116 | |
| 115 | 117 | spec = '20.0' |
| 116 | 118 | osVersion = 'ubuntu-20.04' |
| 117 | − expected = 'OTP-20.0' | |
| 119 | + expected = 'OTP-20.0.5' | |
| 118 | 120 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 119 | 121 | assert.deepStrictEqual(got, expected) |
| 120 | 122 |
| 134 | 136 | |
| 135 | 137 | spec = '23.2.x' |
| 136 | 138 | osVersion = 'windows-2016' |
| 137 | − expected = '23.2.7' | |
| 139 | + expected = '23.2.7.4' | |
| 138 | 140 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 139 | 141 | assert.deepStrictEqual(got, expected) |
| 140 | 142 | |
| 141 | 143 | spec = '23.0' |
| 142 | 144 | osVersion = 'windows-2019' |
| 143 | − expected = '23.0' | |
| 145 | + expected = '23.0.4' | |
| 144 | 146 | got = await setupBeam.getOTPVersion(spec, osVersion) |
| 145 | 147 | assert.deepStrictEqual(got, expected) |
| 146 | 148 | } |
| 164 | 166 | got = await setupBeam.getElixirVersion(spec, otpVersion) |
| 165 | 167 | assert.deepStrictEqual(got, expected) |
| 166 | 168 | |
| 167 | − spec = '1.11.0-rc.0' | |
| 169 | + simulateInput('version-type', 'strict') | |
| 170 | + spec = 'v1.11.0-rc.0' | |
| 168 | 171 | otpVersion = 'OTP-23' |
| 169 | 172 | expected = 'v1.11.0-rc.0-otp-23' |
| 170 | 173 | got = await setupBeam.getElixirVersion(spec, otpVersion) |
| 171 | 174 | assert.deepStrictEqual(got, expected) |
| 175 | + simulateInput('version-type', 'loose') | |
| 172 | 176 | } |
| 173 | 177 | |
| 174 | 178 | async function testRebar3Versions() { |
| 181 | 185 | got = await setupBeam.getRebar3Version(spec) |
| 182 | 186 | assert.deepStrictEqual(got, expected) |
| 183 | 187 | |
| 184 | − spec = '3.10.0' | |
| 185 | − expected = '3.10.0' | |
| 188 | + spec = '3.11' | |
| 189 | + expected = '3.11.1' | |
| 186 | 190 | got = await setupBeam.getRebar3Version(spec) |
| 187 | 191 | assert.deepStrictEqual(got, expected) |
| 188 | 192 |
| 192 | 196 | assert.deepStrictEqual(got, expected) |
| 193 | 197 | } |
| 194 | 198 | |
| 199 | +async function testGetVersionFromSpec() { | |
| 200 | + let got | |
| 201 | + let expected | |
| 202 | + let spec | |
| 203 | + const versions = [ | |
| 204 | + '3.2.30.5', | |
| 205 | + '3.2.3.5', | |
| 206 | + '1', | |
| 207 | + '2', | |
| 208 | + '3.2.3.4.1', | |
| 209 | + '1.0.9', | |
| 210 | + '3.2.3.40.1', | |
| 211 | + '1.0.2', | |
| 212 | + '2.0', | |
| 213 | + '2.10', | |
| 214 | + '2.9', | |
| 215 | + '1.0', | |
| 216 | + '3.2.3.4.2', | |
| 217 | + '1.1.0', | |
| 218 | + '3.4.5.4', | |
| 219 | + '3.4.5.3', | |
| 220 | + '3.4.5.4.1', | |
| 221 | + '24.0-rc3', | |
| 222 | + '24.0-rc2', | |
| 223 | + '24.0', | |
| 224 | + '23.3.4', | |
| 225 | + '23.3.3', | |
| 226 | + '22.3.4.9.1', | |
| 227 | + '22.3.4.12.1', | |
| 228 | + '22.3.4.10.1', | |
| 229 | + 'master', | |
| 230 | + 'v11.11.0-rc.0-otp-23', | |
| 231 | + ] | |
| 232 | + | |
| 233 | + spec = '1' | |
| 234 | + expected = '1.1.0' | |
| 235 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 236 | + assert.deepStrictEqual(got, expected) | |
| 237 | + | |
| 238 | + spec = '1.0' | |
| 239 | + expected = '1.0.9' | |
| 240 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 241 | + assert.deepStrictEqual(got, expected) | |
| 242 | + | |
| 243 | + simulateInput('version-type', 'strict') | |
| 244 | + spec = '1' | |
| 245 | + expected = '1' | |
| 246 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 247 | + assert.deepStrictEqual(got, expected) | |
| 248 | + simulateInput('version-type', 'loose') | |
| 249 | + | |
| 250 | + simulateInput('version-type', 'strict') | |
| 251 | + spec = '1.0' | |
| 252 | + expected = '1.0' | |
| 253 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 254 | + assert.deepStrictEqual(got, expected) | |
| 255 | + simulateInput('version-type', 'loose') | |
| 256 | + | |
| 257 | + spec = '2' | |
| 258 | + expected = '2.10' | |
| 259 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 260 | + assert.deepStrictEqual(got, expected) | |
| 261 | + | |
| 262 | + spec = '3' | |
| 263 | + expected = '3.4.5.4.1' | |
| 264 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 265 | + assert.deepStrictEqual(got, expected) | |
| 266 | + | |
| 267 | + spec = '3.2' | |
| 268 | + expected = '3.2.30.5' | |
| 269 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 270 | + assert.deepStrictEqual(got, expected) | |
| 271 | + | |
| 272 | + spec = '>20' | |
| 273 | + expected = '24.0' | |
| 274 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 275 | + assert.deepStrictEqual(got, expected) | |
| 276 | + | |
| 277 | + spec = '24.0' | |
| 278 | + expected = '24.0' | |
| 279 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 280 | + assert.deepStrictEqual(got, expected) | |
| 281 | + | |
| 282 | + simulateInput('version-type', 'strict') | |
| 283 | + spec = '24.0-rc3' | |
| 284 | + expected = '24.0-rc3' | |
| 285 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 286 | + assert.deepStrictEqual(got, expected) | |
| 287 | + simulateInput('version-type', 'loose') | |
| 288 | + | |
| 289 | + spec = '22.3' | |
| 290 | + expected = '22.3.4.12.1' | |
| 291 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 292 | + assert.deepStrictEqual(got, expected) | |
| 293 | + | |
| 294 | + spec = '23.3.3' | |
| 295 | + expected = '23.3.3' | |
| 296 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 297 | + assert.deepStrictEqual(got, expected) | |
| 298 | + | |
| 299 | + spec = '24' | |
| 300 | + expected = '24.0' | |
| 301 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 302 | + assert.deepStrictEqual(got, expected) | |
| 303 | + | |
| 304 | + spec = '23.3' | |
| 305 | + expected = '23.3.4' | |
| 306 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 307 | + assert.deepStrictEqual(got, expected) | |
| 308 | + | |
| 309 | + simulateInput('version-type', 'strict') | |
| 310 | + spec = 'master' | |
| 311 | + expected = 'master' | |
| 312 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 313 | + assert.deepStrictEqual(got, expected) | |
| 314 | + simulateInput('version-type', 'loose') | |
| 315 | + | |
| 316 | + spec = 'master' | |
| 317 | + expected = 'master' | |
| 318 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 319 | + assert.deepStrictEqual(got, expected) | |
| 320 | + | |
| 321 | + spec = '11.11' | |
| 322 | + expected = 'v11.11.0-rc.0-otp-23' | |
| 323 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 324 | + assert.deepStrictEqual(got, expected) | |
| 325 | + | |
| 326 | + spec = '11.11.0' | |
| 327 | + expected = 'v11.11.0-rc.0-otp-23' | |
| 328 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 329 | + assert.deepStrictEqual(got, expected) | |
| 330 | + | |
| 331 | + spec = 'v11.11' | |
| 332 | + expected = 'v11.11.0-rc.0-otp-23' | |
| 333 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 334 | + assert.deepStrictEqual(got, expected) | |
| 335 | + | |
| 336 | + spec = 'v11.11.0' | |
| 337 | + expected = 'v11.11.0-rc.0-otp-23' | |
| 338 | + got = setupBeam.getVersionFromSpec(spec, versions) | |
| 339 | + assert.deepStrictEqual(got, expected) | |
| 340 | +} | |
| 341 | + | |
| 195 | 342 | function simulateInput(key, value) { |
| 196 | 343 | process.env[`INPUT_${key.replace(/ /g, '_').toUpperCase()}`] = value |
| 197 | 344 | } |
modified
action.yml
+7
−3
Click to load diff…
modified
dist/index.js
+81
−62
Click to load diff…
modified
dist/install-elixir.ps1
+16
−2
Click to load diff…
modified
dist/install-elixir.sh
+0
−4
Click to load diff…
modified
dist/install-otp.ps1
+4
−3
Click to load diff…
modified
dist/install-otp.sh
+0
−4
Click to load diff…
modified
dist/install-rebar3.ps1
+0
−3
Click to load diff…
modified
dist/install-rebar3.sh
+0
−3
Click to load diff…
modified
src/install-elixir.ps1
+16
−2
Click to load diff…
modified
src/install-elixir.sh
+0
−4
Click to load diff…
modified
src/install-otp.ps1
+4
−3
Click to load diff…
modified
src/install-otp.sh
+0
−4
Click to load diff…
modified
src/install-rebar3.ps1
+0
−3
Click to load diff…
modified
src/install-rebar3.sh
+0
−3
Click to load diff…
modified
src/installer.js
+3
−3
Click to load diff…
modified
src/setup-beam.js
+78
−59
Click to load diff…
Parents: 82b4475