Files
setup-beam/test/problem-matchers.test.js
T
Paulo F. Oliveira b9783cdeea Ease debugging, fix some CI issues, tweak folder structure (#200)
* Enable debug for OTP versions' listings

* Make it easier to detect

* Prevent error annotation on expected error

The fact that one mirror fails in the above test and others follow
working is test enough for me

A single failing mirror should fail, but it's confusing to have
an error annotation for a success (via continue-on-error) while
not being able to suppress it via GitHub Actions

* Trying to figure out why we have a rebar_core exception

Might simply be that the bug is already fixed and we need to bump rebar3

* Try to debug into non-JSON input

* Prevent error in rebar_core

We're getting Access Denied for
Fetching registry from "https://repo.hex.pm:443/registry.ets.gz?"

* Try to figure out what's breaking tests

* Make jsonParse(...).map failure more understandable

* Ease test maintenance

* Tweak folder structure while moving console._ to core._
2023-05-08 09:31:17 +01:00

83 lines
2.5 KiB
JavaScript

const assert = require('assert')
const core = require('@actions/core')
const { problemMatcher } = require('../matchers/elixir-matchers.json')
async function all() {
await testElixirMixCompileError()
await testElixirMixCompileWarning()
await testElixirMixTestFailure()
await testElixirCredoOutputDefault()
}
async function testElixirMixCompileError() {
const [matcher] = problemMatcher.find(
({ owner }) => owner === 'elixir-mixCompileError',
).pattern
const output = '** (CompileError) lib/test.ex:16: undefined function err/0'
const [message, , file, line] = output.match(matcher.regexp)
assert.equal(file, 'lib/test.ex')
assert.equal(line, '16')
assert.equal(message, output)
}
async function testElixirMixCompileWarning() {
const [messagePattern, filePattern] = problemMatcher.find(
({ owner }) => owner === 'elixir-mixCompileWarning',
).pattern
const firstOutput =
'warning: variable "err" does not exist and is being expanded to "err()"'
const secondOutput = ' lib/test.ex:16: Test.hello/0'
const [, message] = firstOutput.match(messagePattern.regexp)
assert.equal(
message,
'variable "err" does not exist and is being expanded to "err()"',
)
const [, file, line] = secondOutput.match(filePattern.regexp)
assert.equal(file, 'lib/test.ex')
assert.equal(line, '16')
}
async function testElixirMixTestFailure() {
const [messagePattern, filePattern] = problemMatcher.find(
({ owner }) => owner === 'elixir-mixTestFailure',
).pattern
const firstOutput = '1) test throws (TestTest)'
const secondOutput = ' test/test_test.exs:9'
const [, message] = firstOutput.match(messagePattern.regexp)
assert.equal(message, 'test throws (TestTest)')
const [, file, line] = secondOutput.match(filePattern.regexp)
assert.equal(file, 'test/test_test.exs')
assert.equal(line, '9')
}
async function testElixirCredoOutputDefault() {
const [messagePattern, filePattern] = problemMatcher.find(
({ owner }) => owner === 'elixir-credoOutputDefault',
).pattern
const firstOutput = '┃ [F] → Function is too complex (CC is 29, max is 9).'
const secondOutput = '┃ lib/test.ex:15:7 #(Test.hello)'
const [, message] = firstOutput.match(messagePattern.regexp)
assert.equal(message, 'Function is too complex (CC is 29, max is 9).')
const [, file, line, column] = secondOutput.match(filePattern.regexp)
assert.equal(file, 'lib/test.ex')
assert.equal(line, '15')
assert.equal(column, '7')
}
all()
.then(() => process.exit(0))
.catch((err) => {
core.error(err)
process.exit(1)
})