neiam /action-setup-beam
action-setup-beam
public · Issues · Pulls · Labels · Forks · Compare · Actions queued
⭐
Log in to mark this repository.
Handle `.tool-versions`' line break on Windows (#357)
1fe9179 · Paulo F. Oliveira · 2025-07-03 16:35
Message
{commit_body(@commit)}
Files changed
modified
.github/workflows/action.yml
+8
−0
@@ -90,6 +90,14 @@ jobs:
| 90 | 90 | node-version: '20' |
| 91 | 91 | - run: npm install --production |
| 92 | 92 | - run: npm test |
| 93 | + - name: .tool-versions test | |
| 94 | + id: setup-beam | |
| 95 | + uses: ./ | |
| 96 | + with: | |
| 97 | + install-rebar: false | |
| 98 | + install-hex: false | |
| 99 | + version-file: test/.tool-versions | |
| 100 | + version-type: strict | |
| 93 | 101 | |
| 94 | 102 | unit_tests_macos: |
| 95 | 103 | name: Unit tests (macOS) |
modified
dist/index.js
+1
−1
@@ -26680,7 +26680,7 @@ function parseVersionFile(versionFilePath0) {
| 26680 | 26680 | // For the time being we parse .tool-versions |
| 26681 | 26681 | // If we ever start parsing something else, this should |
| 26682 | 26682 | // become default in a new option named e.g. version-file-type |
| 26683 | − versions.split('\n').forEach((line) => { | |
| 26683 | + versions.split(/\r?\n/).forEach((line) => { | |
| 26684 | 26684 | const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/) |
| 26685 | 26685 | if (appVersion) { |
| 26686 | 26686 | const app = appVersion[1] |
modified
src/setup-beam.js
+1
−1
@@ -805,7 +805,7 @@ function parseVersionFile(versionFilePath0) {
| 805 | 805 | // For the time being we parse .tool-versions |
| 806 | 806 | // If we ever start parsing something else, this should |
| 807 | 807 | // become default in a new option named e.g. version-file-type |
| 808 | − versions.split('\n').forEach((line) => { | |
| 808 | + versions.split(/\r?\n/).forEach((line) => { | |
| 809 | 809 | const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/) |
| 810 | 810 | if (appVersion) { |
| 811 | 811 | const app = appVersion[1] |
modified
test/setup-beam.test.js
+9
−5
@@ -938,15 +938,19 @@ describe('version file', () => {
| 938 | 938 | const gleamVersion = unsimulateInput('gleam-version') |
| 939 | 939 | |
| 940 | 940 | it('is parsed correctly', async () => { |
| 941 | − const erlang = '27' | |
| 942 | − const elixir = '1.17.0' | |
| 943 | − const gleam = '0.23.0' | |
| 944 | − const toolVersions = `# a comment | |
| 945 | −erlang ref:v${erlang}# comment, no space, and ref:v | |
| 941 | + const erlang = '27.3.4.1' | |
| 942 | + const elixir = '1.18.4' | |
| 943 | + const gleam = '1.9.1' | |
| 944 | + let toolVersions = `# a comment | |
| 945 | +erlang ref:v${erlang} | |
| 946 | 946 | elixir ref:${elixir} # comment, with space and ref: |
| 947 | 947 | not-gleam 0.23 # not picked up |
| 948 | 948 | gleam ${gleam} \n` |
| 949 | 949 | const filename = 'test/.tool-versions' |
| 950 | + if (process.platform === 'win32') { | |
| 951 | + // Force \r\n to test in Windows | |
| 952 | + toolVersions = toolVersions.replace(/\n/g, '\r\n') | |
| 953 | + } | |
| 950 | 954 | fs.writeFileSync(filename, toolVersions) |
| 951 | 955 | process.env.GITHUB_WORKSPACE = '' |
| 952 | 956 | const appVersions = setupBeam.parseVersionFile(filename) |
Parents: 6389fe5