mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-01 17:13:30 +08:00
apple-swift-format: linter and fixer with config swiftpm support (#3671)
This commit is contained in:
47
test/fixers/test_appleswiftformat_fixer_callback.vader
Normal file
47
test/fixers/test_appleswiftformat_fixer_callback.vader
Normal file
@@ -0,0 +1,47 @@
|
||||
Before:
|
||||
call ale#assert#SetUpFixerTest('swift', 'apple-swift-format')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownFixerTest()
|
||||
|
||||
Execute(The swiftformat callback should return the correct default values):
|
||||
call ale#test#SetFilename('../test-files/swift/dummy.swift')
|
||||
let g:ale_swift_appleswiftformat_executable = 'xxxinvalid'
|
||||
let g:ale_swift_appleswiftformat_use_swiftpm = 0
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'read_temporary_file': 1,
|
||||
\ 'command': ale#Escape(g:ale_swift_appleswiftformat_executable)
|
||||
\ . ' format --in-place %t',
|
||||
\ },
|
||||
\ ale#fixers#appleswiftformat#Fix(bufnr(''))
|
||||
|
||||
Execute(The swiftformat callback should return the correct default values and located configuration):
|
||||
call ale#test#SetDirectory('/testplugin/test/test-files/swift/swift-package-project-with-config')
|
||||
call ale#test#SetFilename('src/folder/dummy.swift')
|
||||
|
||||
let g:ale_swift_appleswiftformat_executable = 'xxxinvalid'
|
||||
let g:ale_swift_appleswiftformat_use_swiftpm = 0
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'read_temporary_file': 1,
|
||||
\ 'command': ale#Escape(g:ale_swift_appleswiftformat_executable)
|
||||
\ . ' format --in-place %t --configuration ' . glob(g:dir . '/.swift-format'),
|
||||
\ },
|
||||
\ ale#fixers#appleswiftformat#Fix(bufnr(''))
|
||||
|
||||
call ale#test#RestoreDirectory()
|
||||
|
||||
Execute(The swiftformat callback should use swiftpm is use_swiftpm is set to 1):
|
||||
call ale#test#SetFilename('../test-files/swift/swift-package-project/src/folder/dummy.swift')
|
||||
let g:ale_swift_appleswiftformat_use_swiftpm = 1
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'read_temporary_file': 1,
|
||||
\ 'command': ale#Escape('swift')
|
||||
\ . ' run swift-format format --in-place %t',
|
||||
\ },
|
||||
\ ale#fixers#appleswiftformat#Fix(bufnr(''))
|
||||
@@ -1,10 +1,10 @@
|
||||
Before:
|
||||
runtime ale_linters/swift/swiftformat.vim
|
||||
runtime ale_linters/swift/appleswiftformat.vim
|
||||
|
||||
After:
|
||||
call ale#linter#Reset()
|
||||
|
||||
Execute(The swiftformat handler should parse lines correctly):
|
||||
Execute(The appleswiftformat handler should parse lines correctly):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {
|
||||
@@ -22,7 +22,7 @@ Execute(The swiftformat handler should parse lines correctly):
|
||||
\ 'text': 'remove 1 space'
|
||||
\ },
|
||||
\ ],
|
||||
\ ale_linters#swift#swiftformat#Handle(bufnr(''), [
|
||||
\ 'Sources/main.swift:4:21: warning: [DoNotUseSemicolons]: remove '';'' and move the next statement to the new line',
|
||||
\ 'Sources/main.swift:3:12: warning: [Spacing]: remove 1 space',
|
||||
\ ale_linters#swift#appleswiftformat#Handle(bufnr(''), [
|
||||
\ 'Sources/main.swift:4:21: warning: [DoNotUseSemicolons] remove '';'' and move the next statement to the new line',
|
||||
\ 'Sources/main.swift:3:12: warning: [Spacing] remove 1 space',
|
||||
\ ])
|
||||
42
test/linter/test_swift_appleswiftformat.vader
Normal file
42
test/linter/test_swift_appleswiftformat.vader
Normal file
@@ -0,0 +1,42 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('swift', 'appleswiftformat')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(Should use default command when use_swiftpm is not set):
|
||||
call ale#test#SetFilename('../test-files/swift/non-swift-package-project/src/folder/dummy.swift')
|
||||
|
||||
let g:ale_swift_appleswiftformat_executable = 'swift-format'
|
||||
let g:ale_swift_appleswiftformat_use_swiftpm = 0
|
||||
|
||||
AssertLinter 'swift-format', ale#Escape('swift-format') . ' lint %t'
|
||||
|
||||
Execute(Should use default command and available configuration when use_swiftpm is not set):
|
||||
call ale#test#SetDirectory('/testplugin/test/test-files/swift/swift-package-project-with-config')
|
||||
call ale#test#SetFilename('src/folder/dummy.swift')
|
||||
|
||||
let g:ale_swift_appleswiftformat_executable = 'swift-format'
|
||||
let g:ale_swift_appleswiftformat_use_swiftpm = 0
|
||||
|
||||
AssertLinter 'swift-format',
|
||||
\ ale#Escape('swift-format') . ' lint %t ' . '--configuration '
|
||||
\ . glob(g:dir . '/.swift-format')
|
||||
|
||||
call ale#test#RestoreDirectory()
|
||||
|
||||
Execute(Should use swift run when use_swiftpm is set to 1):
|
||||
call ale#test#SetFilename('../test-files/swift/swift-package-project/src/folder/dummy.swift')
|
||||
|
||||
let g:ale_swift_appleswiftformat_use_swiftpm = 1
|
||||
|
||||
AssertLinter 'swift', ale#Escape('swift') . ' run swift-format lint %t'
|
||||
|
||||
Execute(Should use the provided global executable):
|
||||
call ale#test#SetFilename('../test-files/swift/swift-package-project/src/folder/dummy.swift')
|
||||
|
||||
let g:ale_swift_appleswiftformat_executable = '/path/to/custom/swift-format'
|
||||
let g:ale_swift_appleswiftformat_use_swiftpm = 0
|
||||
|
||||
AssertLinter '/path/to/custom/swift-format',
|
||||
\ ale#Escape('/path/to/custom/swift-format') . ' lint %t'
|
||||
@@ -1,25 +0,0 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('swift', 'swiftformat')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(Should use default command when not in a swift package):
|
||||
call ale#test#SetFilename('../test-files/swift/non-swift-package-project/src/folder/dummy.swift')
|
||||
|
||||
AssertLinter 'swift-format',
|
||||
\ ale#Escape('swift-format') . ' --mode lint %t'
|
||||
|
||||
Execute(Should use swift run when in a swift package):
|
||||
call ale#test#SetFilename('../test-files/swift/swift-package-project/src/folder/dummy.swift')
|
||||
|
||||
AssertLinter 'swift',
|
||||
\ ale#Escape('swift') . ' run swift-format --mode lint %t'
|
||||
|
||||
Execute(Should let users configure a global executable and override local paths):
|
||||
call ale#test#SetFilename('../test-files/swift/swift-package-project/src/folder/dummy.swift')
|
||||
|
||||
let g:ale_swift_swiftformat_executable = '/path/to/custom/swift-format'
|
||||
|
||||
AssertLinter '/path/to/custom/swift-format',
|
||||
\ ale#Escape('/path/to/custom/swift-format') . ' --mode lint %t'
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"version": 1,
|
||||
"lineLength": 100,
|
||||
"indentation": {
|
||||
"spaces": 4
|
||||
},
|
||||
"respectsExistingLineBreaks": true,
|
||||
"lineBreakBeforeControlFlowKeywords": true,
|
||||
"lineBreakBeforeEachArgument": true
|
||||
}
|
||||
Reference in New Issue
Block a user