mirror of
https://github.com/erlef/setup-beam.git
synced 2026-07-22 22:56:07 +00:00
Handle .tool-versions' line break on Windows (#357)
* Test .tool-version on top of Windows * Parse .tool-version with Windows-style line endings
This commit is contained in:
committed by
GitHub
parent
6389fe58dc
commit
1fe9179886
@@ -90,6 +90,14 @@ jobs:
|
|||||||
node-version: '20'
|
node-version: '20'
|
||||||
- run: npm install --production
|
- run: npm install --production
|
||||||
- run: npm test
|
- run: npm test
|
||||||
|
- name: .tool-versions test
|
||||||
|
id: setup-beam
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
install-rebar: false
|
||||||
|
install-hex: false
|
||||||
|
version-file: test/.tool-versions
|
||||||
|
version-type: strict
|
||||||
|
|
||||||
unit_tests_macos:
|
unit_tests_macos:
|
||||||
name: Unit tests (macOS)
|
name: Unit tests (macOS)
|
||||||
|
|||||||
Vendored
+1
-1
@@ -26680,7 +26680,7 @@ function parseVersionFile(versionFilePath0) {
|
|||||||
// For the time being we parse .tool-versions
|
// For the time being we parse .tool-versions
|
||||||
// If we ever start parsing something else, this should
|
// If we ever start parsing something else, this should
|
||||||
// become default in a new option named e.g. version-file-type
|
// become default in a new option named e.g. version-file-type
|
||||||
versions.split('\n').forEach((line) => {
|
versions.split(/\r?\n/).forEach((line) => {
|
||||||
const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/)
|
const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/)
|
||||||
if (appVersion) {
|
if (appVersion) {
|
||||||
const app = appVersion[1]
|
const app = appVersion[1]
|
||||||
|
|||||||
+1
-1
@@ -805,7 +805,7 @@ function parseVersionFile(versionFilePath0) {
|
|||||||
// For the time being we parse .tool-versions
|
// For the time being we parse .tool-versions
|
||||||
// If we ever start parsing something else, this should
|
// If we ever start parsing something else, this should
|
||||||
// become default in a new option named e.g. version-file-type
|
// become default in a new option named e.g. version-file-type
|
||||||
versions.split('\n').forEach((line) => {
|
versions.split(/\r?\n/).forEach((line) => {
|
||||||
const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/)
|
const appVersion = line.match(/^([^ ]+)[ ]+(ref:v?)?([^ #]+)/)
|
||||||
if (appVersion) {
|
if (appVersion) {
|
||||||
const app = appVersion[1]
|
const app = appVersion[1]
|
||||||
|
|||||||
@@ -938,15 +938,19 @@ describe('version file', () => {
|
|||||||
const gleamVersion = unsimulateInput('gleam-version')
|
const gleamVersion = unsimulateInput('gleam-version')
|
||||||
|
|
||||||
it('is parsed correctly', async () => {
|
it('is parsed correctly', async () => {
|
||||||
const erlang = '27'
|
const erlang = '27.3.4.1'
|
||||||
const elixir = '1.17.0'
|
const elixir = '1.18.4'
|
||||||
const gleam = '0.23.0'
|
const gleam = '1.9.1'
|
||||||
const toolVersions = `# a comment
|
let toolVersions = `# a comment
|
||||||
erlang ref:v${erlang}# comment, no space, and ref:v
|
erlang ref:v${erlang}
|
||||||
elixir ref:${elixir} # comment, with space and ref:
|
elixir ref:${elixir} # comment, with space and ref:
|
||||||
not-gleam 0.23 # not picked up
|
not-gleam 0.23 # not picked up
|
||||||
gleam ${gleam} \n`
|
gleam ${gleam} \n`
|
||||||
const filename = 'test/.tool-versions'
|
const filename = 'test/.tool-versions'
|
||||||
|
if (process.platform === 'win32') {
|
||||||
|
// Force \r\n to test in Windows
|
||||||
|
toolVersions = toolVersions.replace(/\n/g, '\r\n')
|
||||||
|
}
|
||||||
fs.writeFileSync(filename, toolVersions)
|
fs.writeFileSync(filename, toolVersions)
|
||||||
process.env.GITHUB_WORKSPACE = ''
|
process.env.GITHUB_WORKSPACE = ''
|
||||||
const appVersions = setupBeam.parseVersionFile(filename)
|
const appVersions = setupBeam.parseVersionFile(filename)
|
||||||
|
|||||||
Reference in New Issue
Block a user