mirror of
1
0
Fork 0
ultimate-vim/sources_non_forked/coc.nvim/src/__tests__/client/integration.test.ts

124 lines
3.8 KiB
TypeScript

/* eslint-disable */
import helper from '../helper'
import * as assert from 'assert'
import * as lsclient from '../../language-client'
import path from 'path'
beforeAll(async () => {
await helper.setup()
})
afterAll(async () => {
await helper.shutdown()
})
async function testLanguageServer(serverOptions: lsclient.ServerOptions): Promise<lsclient.LanguageClient> {
let clientOptions: lsclient.LanguageClientOptions = {
documentSelector: ['css'],
synchronize: {},
initializationOptions: {}
}
let client = new lsclient.LanguageClient('css', 'Test Language Server', serverOptions, clientOptions)
client.start()
await client.onReady()
expect(client.initializeResult).toBeDefined()
return client
}
describe('Client integration', () => {
it('should initialize use IPC channel', (done) => {
let serverModule = path.join(__dirname, './server/testInitializeResult.js')
let serverOptions: lsclient.ServerOptions = {
run: { module: serverModule, transport: lsclient.TransportKind.ipc },
debug: { module: serverModule, transport: lsclient.TransportKind.ipc, options: { execArgv: ['--nolazy', '--inspect=6014'] } }
}
let clientOptions: lsclient.LanguageClientOptions = {
documentSelector: ['css'],
synchronize: {}, initializationOptions: {},
middleware: {
handleDiagnostics: (uri, diagnostics, next) => {
assert.equal(uri, "uri:/test.ts")
assert.ok(Array.isArray(diagnostics))
assert.equal(diagnostics.length, 0)
next(uri, diagnostics)
}
}
}
let client = new lsclient.LanguageClient('css', 'Test Language Server', serverOptions, clientOptions)
client.start()
assert.equal(client.initializeResult, undefined)
client.onReady().then(_ => {
try {
let expected = {
capabilities: {
textDocumentSync: 1,
completionProvider: { resolveProvider: true, triggerCharacters: ['"', ':'] },
hoverProvider: true,
renameProvider: {
prepareProvider: true
}
},
customResults: {
"hello": "world"
}
}
assert.deepEqual(client.initializeResult, expected)
setTimeout(async () => {
await client.stop()
done()
}, 50)
} catch (e) {
done(e)
}
}, e => {
done(e)
})
})
it('should initialize use stdio', async () => {
let serverModule = path.join(__dirname, './server/testInitializeResult.js')
let serverOptions: lsclient.ServerOptions = {
module: serverModule,
transport: lsclient.TransportKind.stdio
}
let client = await testLanguageServer(serverOptions)
await client.stop()
})
it('should initialize use pipe', async () => {
let serverModule = path.join(__dirname, './server/testInitializeResult.js')
let serverOptions: lsclient.ServerOptions = {
module: serverModule,
transport: lsclient.TransportKind.pipe
}
let client = await testLanguageServer(serverOptions)
await client.stop()
})
it('should initialize use socket', async () => {
let serverModule = path.join(__dirname, './server/testInitializeResult.js')
let serverOptions: lsclient.ServerOptions = {
module: serverModule,
transport: {
kind: lsclient.TransportKind.socket,
port: 8088
}
}
let client = await testLanguageServer(serverOptions)
await client.stop()
})
it('should initialize as command', async () => {
let serverModule = path.join(__dirname, './server/testInitializeResult.js')
let serverOptions: lsclient.ServerOptions = {
command: 'node',
args: [serverModule, '--stdio']
}
let client = await testLanguageServer(serverOptions)
await client.stop()
})
})