mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-24 06:20:05 +08:00
163 lines
5.7 KiB
Plaintext
163 lines
5.7 KiB
Plaintext
Include: include/setup.vader
|
|
|
|
Execute (rust: cargo: handles code correctly):
|
|
let null = g:neomake#compat#json_null
|
|
let true = g:neomake#compat#json_true
|
|
|
|
let json = join([
|
|
\ '{"reason":"compiler-message"',
|
|
\ '"package_id":"inko 0.3.0 (path+file:///home/yorickpeterse/Projects/inko/inko/vm)"',
|
|
\ '"target":{"kind":["lib"]',
|
|
\ '"crate_types":["lib"]',
|
|
\ '"name":"libinko"',
|
|
\ '"src_path":"/home/yorickpeterse/Projects/inko/inko/vm/src/lib.rs"',
|
|
\ '"edition":"2015"}',
|
|
\ '"message":{"message":"field is never used: `stealer`"',
|
|
\ '"code":{"code":"dead_code","explanation":null}',
|
|
\ '"level":"warning"',
|
|
\ '"spans":[{"file_name":"src/scheduling/scheduler.rs","byte_start":83,"byte_end":102,"line_start":4,"line_end":4,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":" stealer: Stealer<T>,","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}]',
|
|
\ '"children":[{"message":"#[warn(dead_code)] on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}]',
|
|
\ '"rendered":"warning: field is never used: `stealer`\\n --> src/scheduling/scheduler.rs:4:5\\n |\\n4 | stealer: Stealer<T>,\\n | ^^^^^^^^^^^^^^^^^^^\\n |\\n = note: #[warn(dead_code)] on by default\\n\\n"}}',
|
|
\ ], ',')
|
|
|
|
let context = {'output': [json]}
|
|
let errors = neomake#makers#ft#rust#CargoProcessOutput(context)
|
|
AssertEqual errors, [
|
|
\ {'lnum': 4, 'col': 5, 'filename': 'src/scheduling/scheduler.rs',
|
|
\ 'type': 'W',
|
|
\ 'maker_name': 'cargo', 'length': 19,
|
|
\ 'text': 'field is never used: `stealer`. #[warn(dead_code)] on by default'}]
|
|
|
|
Execute (cargo skip non json line):
|
|
new
|
|
file build/lib.rs
|
|
let cargo = neomake#makers#ft#rust#cargo()
|
|
let cargo.exe = 'printf'
|
|
let cargo.args = ['error: Could not compile `derive_more`.']
|
|
|
|
CallNeomake 1, [cargo]
|
|
AssertEqual [], getloclist(0)
|
|
bwipe
|
|
|
|
Execute (cargo info message):
|
|
new
|
|
file build/lib.rs
|
|
let cargo = NeomakeTestsGetMakerWithOutput(neomake#makers#ft#rust#cargo(),
|
|
\ '../tests/fixtures/rust/cargo_info.json')
|
|
|
|
CallNeomake 1, [cargo]
|
|
AssertEqual [], getloclist(0)
|
|
bwipe
|
|
|
|
Execute (cargo error without span):
|
|
new
|
|
file build/lib.rs
|
|
let cargo = NeomakeTestsGetMakerWithOutput(neomake#makers#ft#rust#cargo(),
|
|
\ '../tests/fixtures/rust/cargo_error_without_span.json')
|
|
|
|
CallNeomake 1, [cargo]
|
|
AssertEqual [], getloclist(0)
|
|
bwipe
|
|
|
|
Execute (cargo: uses primary span):
|
|
new
|
|
file build/main.rs
|
|
let cargo = NeomakeTestsGetMakerWithOutput(neomake#makers#ft#rust#cargo(),
|
|
\ 'tests/fixtures/rust/cargo_error_primary_span.json')
|
|
let cargo.cwd = getcwd()
|
|
|
|
CallNeomake 1, [cargo]
|
|
|
|
AssertEqualQf getloclist(0), [{
|
|
\ 'lnum': 6, 'bufnr': bufnr('%'), 'col': 5, 'valid': 1, 'vcol': 0, 'nr': 61,
|
|
\ 'type': 'E', 'pattern': '',
|
|
\ 'text': 'this function takes 1 parameter but 2 parameters were supplied: expected 1 parameter',
|
|
\ }]
|
|
bwipe
|
|
|
|
Execute (rust: cargo: uses directory with Cargo.toml as cwd):
|
|
new
|
|
let maker = neomake#makers#ft#rust#cargo()
|
|
Assert !has_key(maker, 'cwd')
|
|
let maker = maker.InitForJob(NeomakeTestsFakeJobinfo())
|
|
AssertEqual maker.cwd, '%:p:h'
|
|
AssertNeomakeMessage "Failed to get cargo metadata for workspace using 'cargo metadata --no-deps --format-version 1'.", 3
|
|
|
|
let tempdir = tempname()
|
|
let slash = neomake#utils#Slash()
|
|
let subdir = tempdir . slash . 'subdir'
|
|
call mkdir(subdir, 'p')
|
|
let cargo_toml = tempdir . slash . 'Cargo.toml'
|
|
call writefile([], cargo_toml)
|
|
|
|
exe 'lcd' subdir
|
|
let maker = neomake#makers#ft#rust#cargo()
|
|
let maker = maker.InitForJob(NeomakeTestsFakeJobinfo())
|
|
AssertEqual maker.cwd, tempdir
|
|
bwipe
|
|
|
|
Execute (rust: cargo: uses cargo workspace_root as cwd):
|
|
new
|
|
call g:NeomakeTestsCreateExe('cargo', [
|
|
\ 'echo ''{"workspace_root": "/cargo_workspace_root"}'''])
|
|
let maker = neomake#makers#ft#rust#cargo()
|
|
let maker = maker.InitForJob(NeomakeTestsFakeJobinfo())
|
|
AssertEqual maker.cwd, '/cargo_workspace_root'
|
|
bwipe
|
|
|
|
Execute (rust: cargo: handles cd'ing before querying workspace_root metadata):
|
|
new
|
|
let tempdir = tempname()
|
|
call mkdir(tempdir)
|
|
exe printf('file %s/fake.rs', fnameescape(tempdir))
|
|
|
|
call g:NeomakeTestsCreateExe('cargo', [
|
|
\ printf('[ "$PWD" = "%s" ] && echo ''{"workspace_root": "%s"}''',
|
|
\ tempdir, tempdir)])
|
|
let maker = neomake#makers#ft#rust#cargo()
|
|
let maker = maker.InitForJob(NeomakeTestsFakeJobinfo())
|
|
AssertEqual maker.cwd, tempdir
|
|
bwipe
|
|
|
|
Execute (rust: cargo: logs error when cd'ing fails):
|
|
new
|
|
file /doesnotexist/fake.rs
|
|
|
|
let maker = neomake#makers#ft#rust#cargo()
|
|
let maker = maker.InitForJob(NeomakeTestsFakeJobinfo())
|
|
AssertNeomakeMessage '\Vs:get_cargo_workspace_root: failed to cd to buffer directory: Vim(cd):E344: ', 3
|
|
AssertEqual maker.cwd, '%:p:h'
|
|
bwipe
|
|
|
|
Execute (rust: cargotest detect failures):
|
|
new
|
|
file src/lib.rs
|
|
let cargotest = NeomakeTestsGetMakerWithOutput(neomake#makers#ft#rust#cargotest(),
|
|
\ 'tests/fixtures/rust/cargotest_with_failures')
|
|
let cargotest.cwd = getcwd()
|
|
|
|
CallNeomake 1, [cargotest]
|
|
|
|
AssertEqual map(getloclist(0), '[v:val.type, v:val.valid, v:val.text]'), [
|
|
\ ['E', 1, 'failed to resolve. Maybe a missing `extern crate non;`?'],
|
|
\ ['W', 1, 'unused import: `non::existent::module`'],
|
|
\ ]
|
|
bwipe
|
|
|
|
Execute (rust: cargotest: uses directory with Cargo.toml as cwd):
|
|
let maker = neomake#makers#ft#rust#cargotest()
|
|
|
|
let tempdir = tempname()
|
|
let slash = neomake#utils#Slash()
|
|
let subdir = tempdir . slash . 'subdir'
|
|
call mkdir(subdir, 'p')
|
|
let cargo_toml = tempdir . slash . 'Cargo.toml'
|
|
call writefile([], cargo_toml)
|
|
|
|
new
|
|
exe 'lcd' subdir
|
|
let maker = neomake#makers#ft#rust#cargotest()
|
|
let maker = maker.InitForJob(NeomakeTestsFakeJobinfo())
|
|
AssertEqual maker.cwd, tempdir
|
|
bwipe
|