Skip to content
This repository was archived by the owner on Aug 7, 2023. It is now read-only.

Added a proper support for cargo --message-format json #84

Merged
merged 5 commits into from
Oct 24, 2016
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixed tests
  • Loading branch information
White-Oak committed Oct 18, 2016
commit 1c2350625b59b0ebf204d0e6cd9579ff2ccf4a75
29 changes: 15 additions & 14 deletions spec/parse-spec.coffee
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
errorModes = require '../lib/mode'
LinterRust = require '../lib/linter-rust'

linter = new LinterRust()

describe "LinterRust::parse", ->
describe "errorModes::OLD_RUSTC::parse", ->
it "should return 0 messages for an empty string", ->
expect(linter.parse('')).toEqual([])
expect(errorModes.OLD_RUSTC.parse('', [])).toEqual([])

it "should properly parse one line error message", ->
expect(linter.parse('my/awesome file.rs:1:2: 3:4 error: my awesome text\n'))
expect(errorModes.OLD_RUSTC.parse('my/awesome file.rs:1:2: 3:4 error: my awesome text\n', []))
.toEqual([{
type: 'Error'
text: 'my awesome text'
Expand All @@ -16,7 +17,7 @@ describe "LinterRust::parse", ->
}])

it "should properly parse one line warning message", ->
expect(linter.parse('foo:33:44: 22:33 warning: äüö<>\n'))
expect(errorModes.OLD_RUSTC.parse('foo:33:44: 22:33 warning: äüö<>\n', []))
.toEqual([{
type: 'Warning',
text: 'äüö<>'
Expand All @@ -25,14 +26,14 @@ describe "LinterRust::parse", ->
}])

it "should return messages with a range of at least one character", ->
expect(linter.parse('foo:1:1: 1:1 error: text\n'))
expect(errorModes.OLD_RUSTC.parse('foo:1:1: 1:1 error: text\n', []))
.toEqual([{
type: 'Error'
text: 'text'
filePath: 'foo'
range: [[0, 0], [0, 1]]
}])
expect(linter.parse('foo:1:1: 2:1 error: text\n'))
expect(errorModes.OLD_RUSTC.parse('foo:1:1: 2:1 error: text\n', []))
.toEqual([{
type: 'Error'
text: 'text'
Expand All @@ -41,31 +42,31 @@ describe "LinterRust::parse", ->
}])

it "should properly parse multiline messages", ->
expect(linter.parse('bar:1:2: 3:4 error: line one\n\
two\n'))
expect(errorModes.OLD_RUSTC.parse('bar:1:2: 3:4 error: line one\n\
two\n', []))
.toEqual([
{ type: 'Error', text: 'line one\ntwo', filePath: 'bar', range: [[0, 1], [2, 3]] }
])
expect(linter.parse('bar:1:2: 3:4 error: line one\n\
expect(errorModes.OLD_RUSTC.parse('bar:1:2: 3:4 error: line one\n\
two\n\
foo:1:1: 1:2 warning: simple line\n'))
foo:1:1: 1:2 warning: simple line\n', []))
.toEqual([
{ type: 'Error', text: 'line one\ntwo', filePath: 'bar', range: [[0, 1], [2, 3]] },
{ type: 'Warning', text: 'simple line', filePath: 'foo', range: [[0, 0], [0, 1]] }
])
expect(linter.parse('bar:1:2: 3:4 error: line one\n\
expect(errorModes.OLD_RUSTC.parse('bar:1:2: 3:4 error: line one\n\
two\n\
three\n\
foo:1 shouldnt match'))
foo:1 shouldnt match', []))
.toEqual([
{ type: 'Error', text: 'line one\ntwo\nthree', filePath: 'bar', range: [[0, 1], [2, 3]] }
])

it "should also cope with windows line breaks", ->
expect(linter.parse('a:1:2: 3:4 error: a\r\nb\n')[0].text)
expect(errorModes.OLD_RUSTC.parse('a:1:2: 3:4 error: a\r\nb\n', [])[0].text)
.toEqual('a\r\nb')

multi = linter.parse('a:1:2: 3:4 error: a\n\rb\n\rx:1:2: 3:4 error: asd\r\n')
multi = errorModes.OLD_RUSTC.parse('a:1:2: 3:4 error: a\n\rb\n\rx:1:2: 3:4 error: asd\r\n', [])
expect(multi[0].text).toEqual('a\n\rb')
expect(multi[1].text).toEqual('asd')

Expand Down