Ease consumption by means of .tool-versions (#159)

* Ease consumption by means of .tool-versions

* Update as per self-review

* Update as per self-review

* Act on CI results

* Act on CI results

* Act on CI results

This value is check by code, in any case

* Act on CI results

* Act on CI results

* Act on CI results

It appears we can't install Elixir twice on Windows, but can
on Ubuntu; this is outside the scope of this branch's context
so I won't fix it now

* Tweak visual consumption elements

* Ease potential future maintenance and/or update
This commit is contained in:
Paulo F. Oliveira
2022-11-22 22:34:21 +00:00
committed by GitHub
parent 529221db21
commit c373088147
7 changed files with 226 additions and 31 deletions
+35 -1
View File
@@ -5,6 +5,7 @@ simulateInput('install-rebar', 'true')
simulateInput('install-hex', 'true')
const assert = require('assert')
const fs = require('fs')
const setupBeam = require('../src/setup-beam')
const installer = require('../src/installer')
@@ -20,6 +21,8 @@ async function all() {
await testRebar3Versions()
await testGetVersionFromSpec()
await testParseVersionFile()
}
async function testFailInstallOTP() {
@@ -405,8 +408,39 @@ async function testGetVersionFromSpec() {
simulateInput('version-type', 'loose')
}
async function testParseVersionFile() {
const otpVersion = unsimulateInput('otp-version')
const elixirVersion = unsimulateInput('elixir-version')
const erlang = '25.1.1'
const elixir = '1.14.1'
const toolVersions = `# a comment
erlang ${erlang}# comment, no space
elixir ${elixir} # comment, with space
gleam 0.23 # not picked up`
const filename = '__tests__/.tool-versions'
fs.writeFileSync(filename, toolVersions)
process.env.GITHUB_WORKSPACE = ''
const appVersions = setupBeam.parseVersionFile(filename)
assert.strictEqual(appVersions.get('erlang'), erlang)
assert.strictEqual(appVersions.get('elixir'), elixir)
simulateInput('otp-version', otpVersion)
simulateInput('elixir-version', elixirVersion)
}
function unsimulateInput(key) {
const before = process.env[input(key)]
simulateInput(key, '')
return before
}
function simulateInput(key, value) {
process.env[`INPUT_${key.replace(/ /g, '_').toUpperCase()}`] = value
process.env[input(key)] = value
}
function input(key) {
return `INPUT_${key.replace(/ /g, '_').toUpperCase()}`
}
all()