+Before:
+ runtime ale_linters/ruby/steep.vim
+
+After:
+ call ale#linter#Reset()
+
+Execute(The steep handler should parse lines correctly):
+ AssertEqual
+ \ [
+ \ {
+ \ 'lnum': 400,
+ \ 'col': 18,
+ \ 'end_col': 45,
+ \ 'text': 'Method parameters are incompatible with declaration `(untyped, untyped, *untyped, **untyped) { () -> untyped } -> untyped`',
+ \ 'code': 'Ruby::MethodArityMismatch',
+ \ 'type': 'E',
+ \ },
+ \ {
+ \ 'lnum': 20,
+ \ 'col': 9,
+ \ 'end_col': 17,
+ \ 'text': 'Cannot find implementation of method `::Frobz::FooBarBaz#method_name`',
+ \ 'code': 'Ruby::MethodDefinitionMissing',
+ \ 'type': 'W',
+ \ },
+ \ {
+ \ 'lnum': 30,
+ \ 'col': 9,
+ \ 'end_col': 17,
+ \ 'text': 'Cannot find implementation of method `::Frobz::FooBarBaz#method_name`',
+ \ 'code': 'Ruby::MethodDefinitionMissing',
+ \ 'type': 'I',
+ \ },
+ \ {
+ \ 'lnum': 40,
+ \ 'col': 9,
+ \ 'end_col': 17,
+ \ 'text': 'Cannot find implementation of method `::Frobz::FooBarBaz#method_name`',
+ \ 'code': 'Ruby::MethodDefinitionMissing',
+ \ 'type': 'I',
+ \ },
+ \ ],
+ \ ale_linters#ruby#steep#HandleOutput(347, [
+ \ '# Type checking files:',
+ \ '',
+ \ '...............................................................................................................................F..........F.F...F.',
+ \ '',
+ \ 'lib/frobz/foobar_baz.rb:400:17: [error] Method parameters are incompatible with declaration `(untyped, untyped, *untyped, **untyped) { () -> untyped } -> untyped`',
+ \ '│ Diagnostic ID: Ruby::MethodArityMismatch',
+ \ '│',
+ \ '└ def frobz(obj, suffix, *args, &block)',
+ \ ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~',
+ \ '',
+ \ 'lib/frobz/foobar_baz.rb:20:8: [warning] Cannot find implementation of method `::Frobz::FooBarBaz#method_name`',
+ \ '│ Diagnostic ID: Ruby::MethodDefinitionMissing',
+ \ '│',
+ \ '└ class FooBarBaz',
+ \ ' ~~~~~~~~~',
+ \ '',
+ \ 'lib/frobz/foobar_baz.rb:30:8: [information] Cannot find implementation of method `::Frobz::FooBarBaz#method_name`',
+ \ '│ Diagnostic ID: Ruby::MethodDefinitionMissing',
+ \ '│',
+ \ '└ class FooBarBaz',
+ \ ' ~~~~~~~~~',
+ \ '',
+ \ 'lib/frobz/foobar_baz.rb:40:8: [hint] Cannot find implementation of method `::Frobz::FooBarBaz#method_name`',
+ \ '│ Diagnostic ID: Ruby::MethodDefinitionMissing',
+ \ '│',
+ \ '└ class FooBarBaz',
+ \ ' ~~~~~~~~~',
+ \ '',
+ \ 'Detected 4 problems from 1 file',
+ \ ])
+
+Execute(The steep handler should handle when files are checked and no offenses are found):
+ AssertEqual
+ \ [],
+ \ ale_linters#ruby#steep#HandleOutput(347, [
+ \ '# Type checking files:',
+ \ '',
+ \ '.............................................................................................................................................',
+ \ '',
+ \ 'No type error detected. 🧉',
+ \ ])
+
+Execute(The steep handler should handle when no files are checked):
+ AssertEqual
+ \ [],
+ \ ale_linters#ruby#steep#HandleOutput(347, [
+ \ '# Type checking files:',
+ \ '',
+ \ '',
+ \ '',
+ \ 'No type error detected. 🧉',
+ \ ])
+
+Execute(The steep handler should handle empty output):
+ AssertEqual [], ale_linters#ruby#steep#HandleOutput(347, [''])
+ AssertEqual [], ale_linters#ruby#steep#HandleOutput(347, [])
+